YOLOv3 ubuntu 配置及训练自己的VOC格式数据集

官网: http://pjreddie.com/yolo/ 
相关文章: http://arxiv.org/abs/1506.02640 

源代码: https://github.com/pjreddie/darknet.git

1. 下载源码

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

2. 运行demo

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文件夹下,如图


3. 生成训练用的标注文件

准备好自己的数据集,并制作成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

4. 修改pascal数据的cfg文件

打开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文件,对应自己的数据集修改类别。

5. 下载Imagenet上预先训练的权重

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

百度网盘链接: https://pan.baidu.com/s/10TK_nNz-8rje00cwGwTNvQ 密码: 1png

6. 修改cfg/yolov3-voc.cfg

找到文件中类似的部分进行修改,共有3处:


需要改变filters为 num/3*(classes+1+4),即3*(classes+1+4),参考https://github.com/pjreddie/darknet/issues/582,同时需要修改下面的classes的种类。

7. 训练

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

开始训练

8. 参考

https://blog.csdn.net/lilai619/article/details/79695109

https://blog.csdn.net/qq_30401249/article/details/51564871

展开阅读全文

没有更多推荐了,返回首页