最近工作涉及到车位检测,检测算法采用yolov4-tiny,官方提供的检测类默认有80种,由于项目只需要检测车辆,所以需要自制数据集,这里我使用的是voc数据集。网上也度了很多方法,这里记录下自己的使用流程。
自制voc数据集我使用了两种方法:1、voc2012官方数据集;2、使用labelImage自制数据集
一、VOC2012数据集
voc2012数据集里面官方都已经分类好了数据集,我们可以直接拿来用,不需要再手动标注。虽然说都有分类好的数据集,但是Annotations内的文件并没有分类,一张图上什么样的物体都有,如果我们只需要训练个别物体,直接用这里的数据集肯定不行,还需要对xml文件里的感兴趣物体进行提取。
1、提取训练集
VOC2012数据集提取自己需要的类的图片和对应的xml标签
import os
import os.path
import shutil
#修改路径
fileDir_ann = r'D:/工作/深度学习/yolo/darknet-master/scripts/VOCdevkit/VOC2012/Annotations_all/'
fileDir_img = r'D:/工作/深度学习/yolo/darknet-master/scripts/VOCdevkit/VOC2012/JPEGImages_all/'
#存放包含需要的类的图片
#修改路径
saveDir_img = r'D:/工作/深度学习/yolo/darknet-master/scripts/VOCdevkit/VOC2012/JPEGImages/'
if not os.path.exists(saveDir_img):
os.mkdir(saveDir_img)
names = locals()
for files in os.walk(fileDir_ann):
#遍历Annotations中的所有文件
for file in files[2]:
print (file + "-->start!")
#存放包含需要的类的图片对应的xml文件
#修改路径
saveDir_ann = r'D:/工作/深度学习/yolo/darknet-master/scripts/VOCdevkit/VOC2012/Annotations/'
if not os.path.exists(saveDir_ann):
os.mkdir(saveDir_ann)
fp = open(fileDir_ann + file)
saveDir_ann = saveDir_ann + file
fp_w = open(saveDir_ann, 'w')
classes =