简介
Pascal Voc 格式是目标检测常用的格式。Pascal Voc 数据集官网
目录结构
PASCAL VOC数据集由5个部分构成:JPEGImages,Annotations,ImageSets,SegmentationClass以及SegmentationObject。
- JPEGImages:存放的是训练与测试的所有图片。
- Annotations:里面存放的是每张图片打完标签所对应的XML文件
- ImageSets:ImageSets文件夹下本次讨论的只有Main文件夹,此文件夹中存放的主要又有四个文本文件test.txt,train.txt,trainval.txt,val.txt,其中分别存放的是测试集图片的文件名、训练集图片的文件名、训练验证集图片的文件名、验证集图片的文件名。
- SegmentationClass与SegmentationObject:存放的都是图片,且都是图像分割结果图,对目标检测任务来说没有用。class segmentation 标注出每一个像素的类别 。object segmentation 标注出每一个像素属于哪一个物体
Annotation的Xml格式
1 | <annotation> |
LabelImg
用于对图片打标签的软件,可以生成Pascal Voc格式的Xml文件。LabelImg百度云下载链接。
制作Pascal VOC格式的数据集
- 爬取数据集图片放置于JPEGImages文件夹下,注意文件命名(按顺序递增)。
- 使用LabelImg进行标注,获取对应图片的XML标注文件,放置于Annotations文件夹下。
- 运行如下代码生成ImageSets文件夹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46# -*- coding: utf-8 -*-
# @Time : 2018/11/12 13:03
# @Author : lazerliu
# @File : xml2voc.py
import os
import random
# ==================可能需要修改的地方=====================================#
g_root_path = "D:/VOCdevkit/VOC2007/" #根路径
xmlfilepath = "Annotations" # 标注文件存放路径
saveBasePath = "ImageSets/Main/" # ImageSets信息生成路径
trainval_percent = 0.98
train_percent = 0.98
# ==================可能需要修改的地方=====================================#
os.chdir(g_root_path)
total_xml = os.listdir(xmlfilepath)
num = len(total_xml)
xml_list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(xml_list, tv)
train = random.sample(trainval, tr)
print("train and val size", tv)
print("train size", tr)
ftrainval = open(saveBasePath + "trainval.txt", "w")
ftest = open(saveBasePath + "test.txt", "w")
ftrain = open(saveBasePath + "train.txt", "w")
fval = open(saveBasePath + "val.txt", "w")
for i in xml_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()