YOLOv3在pascal_voc數據集上的訓練(一)

簡介:

這篇博客是對使用darknet訓練yolo的方法的總結,基本上是按照官網的方法進行訓練,主要是補充了一些細節。


一、下載數據集


wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
wget https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar
wget https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar
tar xf VOCtrainval_11-May-2012.tar
tar xf VOCtrainval_06-Nov-2007.tar
tar xf VOCtest_06-Nov-2007.tar

上述命令是從作者的數據倉庫中下載數據,可能網速會比較慢。也可以考慮從Pascal_voc的官網下載數據http://host.robots.ox.ac.uk/pascal/VOC/,這樣下載速度會比較快。


將三個解壓後的文件,放在一個文件夾中VOCdevkit,因爲VOCtest_06-Nov-2007.tar VOCtrainval_06-Nov-2007.tar解壓後的文件都是VOC2007,因此將後者解壓後的文件改爲VOC2007_test。


二、生成darknet需要的label文件


darknet/scripts目錄下的voc_label.py文件,拷貝至darknet目錄下。打開voc_label.py文件,修改第7行,將列表的最後一個元組修改爲('2007_test','test');修改第58行,將2007_test,改爲2007_test_test。運行voc_label.py文件,darknet目錄下會生成7個文件,分別爲

2007_train.txt2007_val.txt2007_test_test.txt2012_train.txt2012_val.txttrain.txttrain.all.txt。

每一個txt文件中都存放着訓練所需的文件的路徑。除此之外,voc_label.py文件爲每一副圖片生成了一個存放labeltxt文件。例如,在VOC2007/labels目錄下,便存放着VOC2007數據集的label文件。如下圖所示


每一行的5個參數的含義如下:



後四個參數分別做了歸一化,xwidth除以圖片的寬度,yheight除以圖片的高度。


三、訓練


YOLOv2的訓練

下載卷積層的預訓練權重。

wget https://pjreddie.com/media/files/darknet53.conv.74

修改cfg/voc.data文件,按下圖進行修改。

       改爲         



其中batch的值根據顯存大小進行調整,如果顯存比較大,可以適當加大。如果batch太小或者爲1的話,最終訓練得到的模型可能無法收斂。

最後執行下述命令進行訓練。

./darknet detector train cfg/voc.data cfg/yolov2-voc.cfg darknet53.conv.74

YOLOv3的訓練

如果訓練yolo3模型的話,按同樣的方式,修改cfg/yolov3-voc.cfg文件,並運行下述命令。

    改爲    

./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74





最後執行下述命令進行訓練

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章