赞
踩
此次案例是制作VOC2007数据集的制作教程,用于目标检测,此次数据集处理可用于Faster-RCNN、YOLOv3等网络进行目标检测模型的标准输入。
#VOC2007数据集结构如下:
VOC2007
|-Annotations#里面存放的是每一张图片对应的标注结果,为XML文件,
#标注完成后JPEGImages每张图片在此都有一一对应的xml文件
|-ImageSets#存放的是每一种类型对应的图像数据,为txt文件
|-Layout#存放的是具有人体部位的数据(如人的head、hand、feet等等)
|-Main#存放的是图像物体识别的数据
|-Segmentation#存放的是可用于分割的数据
|-JPEGImages#存放的是原图片
|-SegmentationClass#按类别进行图像分割,同一类别的物体会被标注为相同颜色
|-SegmentationObject#按对象进行图像分割,即使是同一类别的物体会被标注为不同的颜色。
此数据集可用于目标检测和图像分割,此次实验案例是讲解Faster-RCNN、YOLOv3等模型的进行目标检测的标准数据集输入,没讲分割,所有用不到上述所有数据集,只讲其中目标检测部分数据集的制作。
#VOC2007数据集结构如下:
VOC2007
|-Annotations#里面存放的是每一张图片对应的标注结果,为XML文件,
#标注完成后JPEGImages每张图片在此都有一一对应的xml文件
|-ImageSets#存放的是每一种类型对应的图像数据,为txt文件
|-Main#存放的是图像物体识别的数据
|-JPEGImages#存放的是原图片
此次数据标注使用labelImg工具,我是在pycharm终端中进行pip安装的,安装方式很多,就不一一列举了,还需要安装lxml库和pytq可以,安装步骤如下:
python pip3 install labelImg
pip install lxml
pip install pytq
LabelImg
在VOC2007文件夹下创建这三个文件夹:
在ImageSets下创建Main文件夹,在该文件夹下创建如下4个txt文件:
"""文件重命名为000000、000001、000002...nnnnn""" import os path = r"C:\Users\xxx\Desktop\VOC2007\JPEGImages"#JPEGImages文件夹所在路径 filelist = os.listdir(path) #该文件夹下所有的文件(包括文件夹) count=0 for file in filelist: print(file) for file in filelist: #遍历所有文件 Olddir=os.path.join(path,file) #原来的文件路径 if os.path.isdir(Olddir): #如果是文件夹则跳过 continue filename=os.path.splitext(file)[0] #文件名 filetype='.jpg' #文件扩展名 Newdir=os.path.join(path,str(count).zfill(6)+filetype) #用字符串函数zfill 以0补全所需位数 os.rename(Olddir,Newdir)#重命名 count+=1
安装好的工具,输入LabelImge打开标注工具,然后添加需要标注的数据文件夹,数据原图是放在JPEGImages‘文件夹中的,操作如下图:
如果标注的只有一个标签值,可以设置默认标签值,在标注工具的右上角,如下图:
第一次标注设置好后,接下来就是快速标注,快捷键:
w键选择标注,Ctrl+s键保存,d键切换下一张图片直到标注完成。
import os import random trainval_percent = 0.9#验证集和训练集占的百分比 train_percent = 0.7#训练集占的百分比 xmlfilepath = r'C:\Users\xxx\Desktop\VOC2007\Annotations'#Annotation文件夹所在位置 txtsavepath = r'C:\Users\xxx\Desktop\VOC2007\ImageSets\Main'#ImageSets文件下的Main文件夹所在位置 total_xml = os.listdir(xmlfilepath) 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) #Main文件夹下所对应的四个txt文件夹路径 ftrainval = open(r'C:\Users\xxx\Desktop\VOC2007\ImageSets\Main\trainval.txt', 'w') ftest = open(r'C:\Users\xxx\Desktop\VOC2007\ImageSets\Main\test.txt', 'w') ftrain = open(r'C:\Users\xxx\Desktop\VOC2007\ImageSets\Main\train.txt', 'w') fval = open(r'C:\Users\xxx\Desktop\VOC2007\ImageSets\Main\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()
打开四个文件,里面内容如下:
至此,VOC2007格式数据集制作完成。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。