1. 程式人生 > >YOLOv2目標檢測_單目標_訓練自己資料全過程(自用)

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