主要参考两篇博客:
2.用darknet框架中的YOLOv3对自己的数据集进行训练和预测_yolov3每隔多少次存档-CSDN博客
1.首先需要利用msys2搭建一个可以在window系统下编译的linux开发环境。
2.然后在window系统下编译Darknet,可以在github上下载最新版本的Darknet源码。
打开命令提示符,输入cd+darknet解压路径,这里需要注意,建议将解压路径放到桌面,不然不能出现
出现了darknet源码目录后,需要输入make-j。然后就在根目录下生成 darknet.exe、libdarknet.so、libdarknet.a 三个文件。这三个文件中会用到darknet。exe文件。完成这些后,在darknet源码目录下,输入下面的代码。就可以看到预测结果。
.\darknet detect cfg/yolov3.cfg yolov3.weights data/person.jpg
可以看到预测结果可以对应。如果想看预测图在哪,你可以 examples同路径下,找到一个名为predictions的图片文件就是下面这张预测结果图。
想要训练自己的数据集,可以按照我推荐的第二篇进行操作。主要是 这三个文件,cfg目录下的voc.data文件,里面主要是数据集的路径还有类别的名称。
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg scripts/darknet53.conv.74 -gpus 0,1
具体见我推荐的第二篇博客。里面有详细的解释。在这里需要提醒那些用window系统训练darknet的朋友们,训练这个最好是用Ubuntu或者linux系统。我在用window系统训练时,我的路径是这样的,我会用window系统显示一下,最后会一直报错很痛苦。
然后是cfg路径下的yolov3的网络结构,在这个里面需要修改六个参数,这六个参数
[convolutional]
size=1
stride=1
pad=1
filters=18#需要修改,3*(classes值+5),我这里classes=1,所以我这里是18,如果是2,这里为21以此类推
activation=linear
[yolo]
mask = 0,1,2
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=1#这里需要修改
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=1
#在模型框架里搜索classes和yolo,你会发现均有是三个,而且和上面类似,就修改这三处的filters和classes就可以了,按照上面的放下修改
最后是预训练模型darknet53.conv.74 ,下载链接。
wget https://pjreddie.com/media/files/darknet53.conv.74
最后是训练输入下面的代码
darknet.exe detector train cfg/voc.data cfg/yolov3-voc.cfg scripts/darknet53.conv.74 -gpus 1
细心的朋友会发现和前面不一样,是的,输入下面的命令会报错,
./darknet.exe detector train cfg/voc.data cfg/yolov3-voc.cfg scripts/darknet53.conv.74 -gpus 1
我认为这个输入应该不适用window系统,但是适用于Ubuntu和linux系统
使用前面的命令行进行训练时,一直出现一个错误图片找不到。在网上搜索了好久,各种方法都试了,不无效。无奈我想用Ubuntu系统试试,结果训练成功。
最后小结,建议大家不要用window系统去训练darknet网络,会因为图片路径出现各种问题。祝大家炼丹成功。