简介:
这篇博客是对使用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/
<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.txt,2007_val.txt,2007_test_test.txt,2012_train.txt,2012_val.txt,
train.txt,train.all.txt。
每一个txt文件中都存放着训练所需的文件的路径。除此之外,voc_label.py文件为每一副图片生成了一个存放label的txt文件。例如,在
VOC2007/labels目录下,便存放着VOC2007数据集的label文件。如下图所示
每一行的5个参数的含义如下:
后四个参数分别做了归一化,x和width除以图片的宽度,y和height除以图片的高度。
三、训练
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
最后执行下述命令进行训练
热门工具 换一换