说明:
(1)本文用到的darknet代码下载时间为2016-11-09
(2)由于之前博文做的数据集是参考VOC2007格式,并且YOLO可以将VOC2007和VOC2012数据集转换成YOLO所需要的格式,所以这里我们也是一样,将参考VOC2007做的数据集转换成YOLO所需的训练格式。做VOC2007数据集过程参考:http://blog.csdn.net/sinat_30071459/article/details/50723212
(3)本文主要参考YOLO官网:http://pjreddie.com/darknet/yolo/
主要参考darknet的官网,上面写得很详细,网址:Installing Darknet
在配置Darknet过程中,主要是在nvcc处出错,所以修改Makefile的NVCC为绝对路径,一般为:
NVCC=/usr/local/cuda-7.5/bin/nvcc
(按自己的系统路径修改,本人是Ubuntu14.04,CUDA为7.5).
其他需要注意的地方参考官网就行。
如果make没有出错,那么可以下载作者训练的模型测试一下:
(1)下载yolo.weights:
wget http://pjreddie.com/media/files/yolo.weights
./darknet yolo test cfg/yolo.cfg yolo.weights data/dog.jpg
sets=[('2007', 'train'), ('2007', 'val'), ('2007', 'test')]
classes = ["head","top","bag","down","shoes"]
python voc_label.py
cat 2007_* > train.txt
现在,我们已经将数据集中的训练集和验证集全都放在一个txt文件中,这些图片用来作为YOLO的训练图片。
char *voc_names[] = {"head","top","bag","down","shoes"}
char *train_images = "/home/luj/darknet/scripts/train.txt";
char *backup_directory = "/home//luj/darknet/backup/";
train_images应该指向我们刚得到的train.txt;backup_directory指向的路径是训练过程中生成的weights文件保存的路径(可以在darknet下新建文件夹backup然后指向它)。这两个路径按自己系统修改即可。
draw_detections(det, l.side*l.side*l.n, demo_thresh, boxes, probs, voc_names, voc_labels, 5);
最后的参数改为你的数据集类别数(同上)。
output= 735 // 该值为side*side*(num*5+类别数)
activation=linear
[detection]
classes= 5 //数据集类别
coords=4
rescore=1
side=7 /
num=2
softmax=0
sqrt=1
jitter=.2
主要修改两个地方。也可以修改side和num,side表示网格数,可修改成9*9等;num也可修改;output=side*side*(num*5+classes)
./darknet yolo train cfg/tiny-yolo.cfg darknet.conv.weights
./darknet yolo test cfg/tiny-yolo.cfg backup/tiny-yolo_final.weights
然后输入一张测试图片。