文章目录
使用labelimg制作VOC数据集
VOC数据集介绍
VOC数据集包括三个文件夹
- Annotations:以xml文件格式记录图片的名字,类别,目标边框的位置,图片的大小
- ImageSets:以txt文件分别记录训练集,验证集,测试集的图片名字例如:000204
- JPEGImages:用于存放图片
labelimg介绍
labelimg用于给目标检测的图片做标记的工具,那么下载链接如下:
点击下载labelimg: 提取码: cezf
备注:本人win7系统,不知道其他的怎么样,解压后无法使用,于是不解压,从压缩包能正常运行。。。。。。
labelimg保姆级使用流程
准备工作
使用到Annotations,JPEGImages文件夹
以官网的样式,先创建文件夹:
设置labelimg
给图片做标记
备注:使用A,D可以切换图片
最终结果
对图片的标记自动生成的结果如下图
到此图片的标注工作到此结束,下面介绍下如何划分数据集
数据集的划分
准备工作
该流程用到Annotations,ImageSets文件夹
划分数据集程序
import os
import random
trainval_percent = 0.1
train_percent = 0.9
xmlfilepath = 'Annotations'
txtsavepath = 'ImageSets\Main'
total_xml = os.listdir(xmlfilepath)
print (total_xml)
num = len(total_xml)
list = range(num)
#总体取出10%的个数(测试集与验证集个数)
tv = int(num * trainval_percent)
#从10%中再取去90%用作验证集的个数
tr = int(tv * train_percent)
#trainval:包括测试集与验证集
trainval = random.sample(list, tv)#从list中随机获取tv个元素,作为一个片断返回
train = random.sample(trainval, tr)
print(train)
ftrainval = open('ImageSets/Main/trainval.txt', 'w')
print (ftrainval)
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('ImageSets/Main/val.txt', 'w')
for i in list:
name = total_xml[i][:-4] + '\n'#也就是去除‘.xml’这四个字符
if i in trainval:
ftrainval.write(name)
if i in train:
ftest.write(name)
else:
fval.write(name)
else:
ftrain.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest.close()
总结:
读取Annotations中的xml文件名,把90%分配到训练集,其余10%再按照90%分配到验证集,其余为测试集