一.数据集制作
1.数据集说明
将制作完成的数据集放入darknet/scripts下:
VOCdevkit
voc2007
Annotations + ImageSets + JPEGImages + labels
①JPEGImages
JPEGImages文件夹中包含了PASCAL VOC所提供的所有的图片信息,包括了训练图片和测试图片。
②Annotations
Annotations文件夹中存放的是xml格式的标签文件,每一个xml文件都对应于JPEGImages文件夹中的一张图片。
③ImageSets
ImageSets存放的是每一种类型的challenge对应的图像数据。
在ImageSets下有四个文件夹:
其中Action下存放的是人的动作(例如running、jumping等等,这也是VOC challenge的一部分)
Layout下存放的是具有人体部位的数据(人的head、hand、feet等等,这也是VOC challenge的一部分)
Main下存放的是图像物体识别的数据,总共分为20类。
Segmentation下存放的是可用于分割的数据。
此处针对自己的数据集可以只是用Main文件夹即可
2.数据集预处理
标注完成后的数据为xml格式,我们只能填充Annotations和JPEGImages两个文件夹,此时ImageSets下的Main文件夹为空,需要将数据划分为一下几个txt文件:
该部分划分可用aa.py实现
此时,才可以运用voc_label.py生成labels下的.txt训练文件,用于训练
3.voc_label.py的下载与修改
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
二.yolov3配置文件修改
1.修改cfg/voc.data文件
打开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。
2.修改data/voc.names
直接改成自己的类别名称即可
3.下载预训练权重
下载Imagenet上预先训练的权重
wget https://pjreddie.com/media/files/darknet53.conv.74
4.修改cfg/yolov3-voc.cfg
修改classes=自己的类别数(共有三处)
修改每一个yolo前面的卷积层的filter:3×(classes+4+1)
测试或训练时出现:
darknet: ./src/cuda.c:36: check_error: Assertion `0’ failed.
已放弃 (核心已转储)
可能配置文件出错