上节介绍了《从零开始在Windows10中编译安装YOLOv3》,本节介绍在Pascal VOC 数据集上训练YOLOv3。
第一步,下载并安装YOLOv3训练依赖项。
a.下载Pascal VOC 数据集
http://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
http://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar
http://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar
到darknet\build\darknet\x64\data\voc文件夹,然后分别右键点击三个压缩文件,在右键菜单中选择“解压到当前文件夹(X)”,这样可以获得一个VOCdevkit文件夹,里面包含VOC数据集。
b.下载安装Anaconda,下载链接:https://www.anaconda.com/distribution/,注意安装的时候,勾选: “Add
Anaconda to my PATH environment variable”选项
c.运行voc_label.py。voc_label.py应该在darknet\build\darknet\x64\data\voc文件夹下,若没有,请到http://pjreddie.com/media/files/voc_label.py处下载,并放到voc文件夹下。
在darknet\build\darknet\x64\data\voc文件夹的地址栏中键入“cmd”,启动Windows命令行终端,运行命令:
python voc_label.py
这样可以获得2007_test.txt,2007_train.txt,2007_val.txt,2012_train.txt,2012_val.txt五个文件,运行命令:
type 2007_train.txt 2007_val.txt 2012_*.txt > train.txt
获得train.txt文件
第二步,修改yolov3-voc.cfg文件。在darknet\build\darknet\x64\cfg文件夹下,用文本编辑器打开yolov3-voc.cfg文件,修改第3~4行如下图所示。
batch=64,意思是每batch个样本更新一次参数。
subdivisions=16,意思是如果内存不够大,将batch分割为subdivisions个子batch,每个子batch的大小为batch/subdivisions。如果出现“Out of memory” 错误,则把 subdivisions依次增大:16, 32 or 64,直到不发生错误为止。
第三步,修改voc.data文件。在darknet\build\darknet\x64\data文件夹中,用文本编辑器打开voc.data文件,修改第2~6行如下图所示
最后一步,在darknet\build\darknet\x64文件夹的地址栏中键入“cmd”,启动Windows命令行终端,运行命令:
d:\darknet\darknet.exe detector train cfg\voc.data cfg\yolov3-voc.cfg darknet53.conv.74
启动训练,如下图所示
训练完毕后,在darknet\build\darknet\x64\backup文件夹可以看到每隔1000次迭代得到的权重文件:
在D:\darknet\build\darknet\x64> 下用命令:
d:\darknet\darknet.exe detector test cfg\voc.data cfg\yolov3-voc.cfg backup\yolov3-voc_final.weights data\voc\VOCdevkit\VOC2007\JPEGImages\000004.jpg
参考文献:
[1] https://github.com/AlexeyAB/darknet
[2] https://pjreddie.com/darknet/yolo/
[3]《在Windows下Darknet.exe的命令参数》
下节介绍
参考阅读《深度学习图像识别技术》