源代码: https://github.com/pjreddie/darknet.git
git clone https://github.com/pjreddie/darknet
cd darknet
如果使用CPU,直接
make
使用GPU训练,需要修改Makefile,设置
GPU=1
CUDNN=1
...
NVCC=/usr/local/cuda-8.0/bin/nvcc
如果调用摄像头,还需要设置
OPENCV=1
wget https://pjreddie.com/media/files/yolov3.weights
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
国内下载权重文件可能较慢,下载好的百度云链接为https://pan.baidu.com/s/1fjUMQwejr3qLaUGx2cO1tA 密码: xx64
测试得到的结果会以图片的形式保存在darknet文件夹下,如图
准备好自己的数据集,并制作成VOC数据格式,并命名VOC2007,文件路径类似 /home/xxx/darknet/VOCdevkit/VOC2007/ImageSets/Main.
然后需要生成YOLO要用的VOC标签格式。首先下载格式转化文件:
wget https://pjreddie.com/media/files/voc_label.py
gedit打开voc_label.py,进行修改
# 因为没有用到VOC2012的数据,要修改年份
sets=[('2007', 'train'), ('2007', 'val'), ('2007', 'test')]
# 修改检测的物体种类
classes = ["logo"]
运行voc_label.py,即可完成文件转化。
用train和val的数据一起用来训练,所以需要合并文件:
cat 2007_train.txt 2007_val.txt > train.txt
打开cfg/voc.data文件,进行如下修改:
classes= 1 # 自己数据集的类别数
train = /home/xxx/darknet/train.txt # train文件的路径
valid = /home/xxx/darknet/2007_test.txt # test文件的路径
names = data/voc.names
backup = backup
注意需要在darknet文件夹下,新建名为backup的文件夹,否则训练过程报错:Couldn't open file: backup/yolov3-voc.backup。
打开data/voc.names文件,对应自己的数据集修改类别。
wget https://pjreddie.com/media/files/darknet53.conv.74
百度网盘链接: https://pan.baidu.com/s/10TK_nNz-8rje00cwGwTNvQ 密码: 1png
找到文件中类似的部分进行修改,共有3处:
需要改变filters为 num/3*(classes+1+4),即3*(classes+1+4),参考https://github.com/pjreddie/darknet/issues/582,同时需要修改下面的classes的种类。
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74
开始训练
https://blog.csdn.net/lilai619/article/details/79695109
https://blog.csdn.net/qq_30401249/article/details/51564871