labelimg是一个训练深度学习网络时常用的标注数据,生成标签的软件。它其中生成的标签类型分为三种,分别为pascal voc、yolo以及create ml。切换方式可以点击change save format这个按钮。
1、voc数据集
- Annotation文件夹存放的是xml文件,该文件是对图片的解释,每张图片都对于一个同名的xml文件。
- ImageSets文件夹存放的是txt文件,这些txt将数据集的图片分成了各种集合。如Main下的train.txt中记录的是用于训练的图片集合
- JPEGImages文件夹存放的是数据集的原图片
在这里,如果你使用yolo进行模型的训练,但数据集使用的是voc格式的数据集,需要将voc格式的数据转换成yolo形式,python代码如下
import os
import random
random.seed(0)
xmlfilepath=r'D:\\PycharmProjects\\pythonProject\\helmat_detection_yolo3\\VOCdevkit\\VOC2007\\Annotations'
saveBasePath=r"D:\\PycharmProjects\\pythonProject\\helmat_detection_yolo3\\VOCdevkit\\VOC2007\\ImageSets\\Main"
trainval_percent=1
train_percent=1
temp_xml = os.listdir(xmlfilepath)
total_xml = []
for xml in temp_xml:
if xml.endswith(".xml"):
total_xml.append(xml)
num=len(total_xml)
list=range(num)
tv=int(num*trainval_percent)
tr=int(tv*train_percent)
trainval= random.sample(list,tv)
train=random.sample(trainval,tr)
print("train and val size",tv)
print("traub suze",tr)
ftrainval = open(os.path.join(saveBasePath,'trainval.txt'), 'w')
ftest = open(os.path.join(saveBasePath,'test.txt'), 'w')
ftrain = open(os.path.join(saveBasePath,'train.txt'), 'w')
fval = open(os.path.join(saveBasePath,'val.txt'), 'w')
for i in list:
name=total_xml[i][:-4]+'\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftrain.write(name)
else:
fval.write(name)
else:
ftest.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest .close()
2、yolo格式数据集
yolo格式的数据在标签部分生成的是txt文件
- classes.txt:里面包含了生成的类别名称
- 其他是每一张照片对应的标签文件
3、create ml格式数据集
create ml数据集博主没有太多了解,它需要一台Mac,标签文件是json格式