赞
踩
- #VOC2007数据集结构如下:
- VOC2007
- |-Annotations#里面存放的是每一张图片对应的标注结果,为XML文件,
- #标注完成后JPEGImages每张图片在此都有一一对应的xml文件
- |-ImageSets#存放的是每一种类型对应的图像数据,为txt文件
- |-Layout#存放的是具有人体部位的数据(如人的head、hand、feet等等)
- |-Main#存放的是图像物体识别的数据
- |-Segmentation#存放的是可用于分割的数据
- |-JPEGImages#存放的是原图片
- |-SegmentationClass#按类别进行图像分割,同一类别的物体会被标注为相同颜色
- |-SegmentationObject#按对象进行图像分割,即使是同一类别的物体会被标注为不同的颜色。
本次的是目标检测,对应的如下结构
- #VOC2007数据集结构如下:
- VOC2007
- |-Annotations#里面存放的是每一张图片对应的标注结果,为XML文件,
- #标注完成后JPEGImages每张图片在此都有一一对应的xml文件
- |-ImageSets#存放的是每一种类型对应的图像数据,为txt文件
- |-Main#存放的是图像物体识别的数据
- |-JPEGImages#存放的是原图片
此次数据标注使用labelImg工具,我是在pycharm终端中进行pip安装的,安装方式很多,就不一一列举了,还需要安装lxml库和pytq可以,安装步骤如下:
- pip3 install labelImg
-
- pip install lxml
-
- pip install pytq
进入标注工具,只需要在pycharm终端处输入LabelImg,LabelImg工具自动弹出打开,如下:
在VOC2007文件夹下创建这三个文件夹:
在ImageSets下创建Main文件夹,在该文件夹下创建如下4个txt文件:
- import os
-
- path = r"D:\pythonProject\ssd-pytorch\VOCdevkit\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‘文件夹中的,操作如下图:
- import os
- import random
-
- trainval_percent = 0.9 # 验证集和训练集占的百分比
- train_percent = 0.7 # 训练集占的百分比
- xmlfilepath = r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\Annotations' # Annotation文件夹所在位置
- txtsavepath = r'D:\pythonProject\ssd-pytorch\VOCdevkit\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'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\ImageSets\Main\trainval.txt', 'w')
- ftest = open(r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\ImageSets\Main\test.txt', 'w')
- ftrain = open(r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\ImageSets\Main\train.txt', 'w')
- fval = open(r'D:\pythonProject\ssd-pytorch\VOCdevkit\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 版权所有,并保留所有权利。