YOLOv2目標檢測_單目標_訓練自己資料全過程(自用)
1. 製作符合要求的VOC資料集
目標:製作如下格式的資料夾
格式:
--VOC2017(大寫字母+數字)
--Annotations(存放儲存標註資訊的xml)
--ImageSets
--Main(存放儲存圖片名的train.txttest.txt)
--Layout
--JPEGImages(存放圖片)
1.1 整理影象
使用TotalCommander的批量重新命名,將圖片按數字序號重新命名,並存儲一資料夾下(路徑中不能有數字)。
1.2 標註影象
使用InputRectangle.exe對圖片進行標註,最終得到包括標註位置資訊的list.txt。
不用labelImg的原因:labelImg標註速度較慢,操作量大時效率不高。
1.3 生成xml
將List.txt放在txtandxmlcpp工程目錄下,修改main.cpp中相應路徑和資訊,執行,可自動生成xml到Annotations資料夾下,自動選出有標註資訊的圖片複製到JPEGImages資料夾下。
1.4 生成train\test.txt
根據JPEGImages資料夾下的圖片數,按比例輸出訓練集和測試集的圖片名(不帶字尾名),存在一個txt中。執行trainandtest工程即可。並將train.txt、test.txt放在main資料夾下。
至此VOC格式資料集已製作完成。
2. 使用YOLO訓練VOC資料集
目標: 得到訓練好的權重檔案
2.1 預處理
將製作好的VOC資料集轉換成YOLO需要的包含label資訊的txt。使用WinSCP將VOC資料集傳送到darknet/scripts/VOCdevkit下。修改scripts下的voc_label.py,並執行,即可生成對應的label資訊,並生成完整路徑的圖片資訊。
2.2 訓練調引數
訓練前需要修改
data/voc.names
cfg/voc.data
cfg/tiny-yolo-voc.cfg(使用其他模型同理)
2.3 訓練、等待
執行:./darknetdetector train cfg/voc.data cfg/tiny-yolo-voc.cfg
等待
3. 檢測訓練結果
3.1 單張檢測
./darknet detector test cfg/voc.datacfg/tiny-yolo-voc.cfg results/tiny-yolo-voc_final.weights data/xxxxx.jpg -thresh0.25
3.2 批量檢測
修改example/detector.c下recall函式中的list路徑(包括檢測圖片的路徑),一級對應的閾值thresh。
因為修改了detector.c所以需要在darknet目錄下重新make一下。然後執行下面的指令:
./darknet detector recall cfg/voc.datacfg/tiny-yolo-voc.cfg results/tiny-yolo-voc_final.weights data/xxxxx.jpg -thresh0.25