前面依次介紹了:
1理卑,《從零開始在Windows10中編譯安裝YOLOv3》
2,《在Pascal VOC 數(shù)據(jù)集上訓(xùn)練YOLOv3模型》
3普气,《在COCO 數(shù)據(jù)集上訓(xùn)練YOLOv3模型》
本節(jié)介紹在自己的數(shù)據(jù)集上訓(xùn)練YOLOv3卖漫。具體步驟如下。本文推薦的YOLOv3項(xiàng)目文件夾結(jié)構(gòu)
yolov3:表示這是YOLOv3模型下的工程項(xiàng)目
ebike: 工程項(xiàng)目名
backup:模型備份路徑
cfg:存放模型配置文件“yolov3-項(xiàng)目名.cfg”
data:存放類別名文件“項(xiàng)目名.names”和數(shù)據(jù)集配置文件“項(xiàng)目名.data”
images:存放圖片至会、標(biāo)注文件、訓(xùn)練數(shù)據(jù)集文件“train.txt”和測試數(shù)據(jù)集文件“test.txt”
第一步谱俭,準(zhǔn)備圖片奉件。以電動車和自行車檢測為例,先從百度查找并下載電動車和自行車的圖片昆著,每個種類100~150張即可县貌。把圖片下載到D:\yolov3\ebike\cfg文件夾中
第二步,用LabelImg標(biāo)注圖片凑懂。LabelImg下載地址:https://github.com/tzutalin/labelImg煤痕。
YOLO標(biāo)注格式:<object-class> <x_center> <y_center> <width> <height>
<object-class>?- 類別ID, 整型數(shù)值,從0到(classes-1)。
<x> <y>?- 物體邊界框中心點(diǎn)坐標(biāo)(x,y), 相對于圖片寬(width)和 高(height)的比值摆碉,浮點(diǎn)數(shù)類型祟敛,取值范圍[0.0 - 1.0] 。??
<x> = <absolute_x> / <image_width>?
<y> = <absolute_y> / <image_height>.
<width> <height>?- 物體邊界框?qū)挾群透叨认鄬τ?relative?to)圖片寬度和高度的比值.
標(biāo)注文件為.txt格式兆解,與圖片同名。例如跑揉,對于圖片“1.jpg” 锅睛,標(biāo)注文件為“1.txt”。
第三步历谍,制作訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)集文件现拒。用下面的Python腳本文件制作訓(xùn)練數(shù)據(jù)集文件“train.txt”和測試數(shù)據(jù)集文件“test.txt”。把Python文件generate_train_test_datafile.py保存在D:\yolov3\ebike\images文件夾
然后運(yùn)行:
python?generate_train_test_datafile.py
結(jié)果如下:
第四步望侈,創(chuàng)建類別名文件印蔬。在D:\yolov3\ebike\data文件夾下,創(chuàng)建一個“obj.names”文件脱衙。文件的每一行是一個對象的名稱侥猬。
本文檢測對象是電動車和自行車,所以創(chuàng)建一個名字為“ebike.names"文件捐韩。第一行是ebike退唠,第二行是bike。
第五步荤胁,數(shù)據(jù)集配置文件?瞧预。在D:\yolov3\ebike\data文件夾下,創(chuàng)建一個“obj.data”文件仅政。文件格式為:
classes= 2? #標(biāo)簽(類別)數(shù)量
train? = data/train.txt? #訓(xùn)練數(shù)據(jù)集文件
valid? = data/test.txt? ?#測試數(shù)據(jù)集文件
names = data/obj.names #類別名文件
backup = backup/? #模型備份路徑
本文檢測對象是電動車和自行車垢油,所以創(chuàng)建一個名字為“ebike.data"文件。根據(jù)上述步驟圆丹,配置結(jié)果如下
第六步滩愁,模型配置文件?。從D:\darknet\build\darknet\x64\cfg文件夾下辫封,將yolov3.cfg拷貝到D:\yolov3\ebike\cfg文件夾惊楼,然后重命名為:“yolov3-ebike.cfg”
修改batch=64,subdivisions=16秸讹,max_batches=6000檀咙,steps=4800,5400
修改[yolo]的classes=實(shí)際類別數(shù)量,本文classes=2璃诀。對應(yīng)yolov3.cfg的行數(shù):L610弧可,L696,L783
修改[yolo]對應(yīng)上一層[convolutional]的filters=(classes + 5)x3劣欢,本文filters=(2+5)x3=21棕诵。對應(yīng)yolov3.cfg的行數(shù):L603裁良,L689,L776
第七步校套,下載https://pjreddie.com/media/files/darknet53.conv.74?到D:\darknet文件夾
第八步价脾,啟動YOLOv3模型訓(xùn)練。在D:\darknet文件夾的地址欄中鍵入“cmd”笛匙,啟動Windows命令行終端侨把,運(yùn)行命令:
YOLOv3模型訓(xùn)練命令格式:darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74?
訓(xùn)練結(jié)果:
第九步,測試訓(xùn)練模型妹孙。
在D:\yolov3\ebike\cfg文件夾中把“yolov3-ebike.cfg”另存為“yolov3-ebike-test.cfg”,修改第1~7行如下:
從網(wǎng)上下載一張電動車圖片到D:\yolov3\ebike\test_images文件夾
在D:\darknet文件夾的地址欄中鍵入“cmd”秋柄,啟動Windows命令行終端,運(yùn)行命令:
darknet.exe detector test d:\yolov3\ebike\data\ebike.data d:\yolov3\ebike\cfg\yolov3-ebike-test.cfg d:\yolov3\ebike\backup\yolov3-ebike_1000.weights d:\yolov3\ebike\test_images\ebike1.jpg
參考文獻(xiàn):
《How to train (to detect your custom objects》
注意事項(xiàng):
YOLOv3是一行一行解析的蠢正,注釋語句要獨(dú)立成行骇笔!~ 不能和普通語句放在同一行
參考閱讀《深度學(xué)習(xí)圖像識別技術(shù)》