PASCAL VOC 数据集的标注格式
PASCAL VOC 挑战赛 ( **The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛。 PASCAL的全称是Pattern Analysis, Statistical Modelling and Computational Learning,很多优秀的计算机视觉模型比如分类,定位,检测,分割,动作识别等模型都是基于PASCAL VOC挑战赛及其数据集上推出的。
VOC 的全称是Visual Object Classes
第一届PASCAL VOC举办于2005年,然后每年一届,于2012年终止。
做深度学习目标检测、语义分割方面的工作都会接触到PASCAL VOC这个数据集,也许很少用到整个数据集,但是公开代码基本都是基于VOC或COCO数据格式书写代码,一般都会按照它的格式准备自己的数据集。所以针对PASCAL VOC的格式,包括目录构成以及各个文件夹的内容格式,进行详细讲解。方便以后利用VOC的标准格式制作自己的数据集,加快项目推进进度。
1、文件总体概述
总文件夹名称VOCdevkit (使用2012,2007太旧)
.
└── VOCdevkit #根目录
└── VOC2012 #不同年份的数据集,这里只下载了2012的,还有2007等其它年份的
├── Annotations #存放xml文件,与JPEGImages中的图片一一对应,解释图片的内容等等
├── ImageSets #该目录下存放的都是txt文件,txt文件中每一行包含一个图片的名称,末尾会加上±1表示正负样本
│ ├── Action #Action 动作识别,不牵扯
│ ├── Layout #Layout文件夹用于 person layout任务,不牵扯
│ ├── Main
└── train.txt #训练集
├── trainval.txt #训练集与验证集
├── val.txt #验证集
├── test.txt #测试集
│ └── Segmentation #语义分割
├── JPEGImages #存放源图片
├── SegmentationClass #存放的是图片,语义分割相关
└── SegmentationObject #存放的是图片,实例分割相关
2、文件的具体内容
※ Annotation文件夹存放的是xml文件,该文件是对图片的解释,每张图片都对于一个同名的xml文件。
※ ImageSets文件夹存放的是txt文件,这些txt将数据集的图片分成了各种集合。如Main下的train.txt中记录的是用于训练的图片集合。
※ JPEGImages文件夹存放的是数据集的原图片。
※ SegmentationClass以及SegmentationObject文件夹存放的都是图片,且都是图像分割结果图。
2.1、Annotation文件夹
Annotation文件夹的内容如下:
其中xml主要介绍了对应图片的基本信息,如来自那个文件夹、文件名、来源、图像尺寸以及图像中包含哪些目标以及目标的信息等等,内容如下:
-
filename :文件名
-
source,owner:图片来源,及拥有者
-
size:图片大小
-
segmented:是否分割
-
object:表明这是一个目标,里面的内容是目标的相关信息
- name:object名称,20个类别
- pose:拍摄角度:front, rear, left, right, unspecified
- truncated:目标是否被截断(比如在图片之外),或者被遮挡(超过15%)
- difficult:检测难易程度,这个主要是根据目标的大小,光照变化,图片质量来判断
-
bndbox:bounding box 的左上角点和右下角点的4个坐标值。
<annotation>
<folder>VOC2012</folder> #表明图片来源
<filename>2007_000027.jpg</filename> #图片名称
<source> #图片来源相关信息
<database>The VOC2007 Database</database>
<annotation>PASCAL VOC2007</annotation>
<image>flickr</image>
</source>
<size> #图像尺寸
<width>486</width>
<height>500</height>
<depth>3</depth>
</size>
<segmented>0</segmented> #是否用于分割
<object> #包含的物体
<name>person</name> #物体类别
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox> #物体的bbox
<xmin>174</xmin>
<ymin>101</ymin>
<xmax>349</xmax>
<ymax>351</ymax>
</bndbox>
<part> #物体的头
<name>head</name>
<bndbox>
<xmin>169</xmin>
<ymin>104</ymin>
<xmax>209</xmax>
<ymax>146</ymax>
</bndbox>
</part>
<part> #物体的手
<name>hand</name>
<bndbox>
<xmin>278</xmin>
<ymin>210</ymin>
<xmax>297</xmax>
<ymax>233</ymax>
</bndbox>
</part>
<part>
<name>foot</name>
<bndbox>
<xmin>273</xmin>
<ymin>333</ymin>
<xmax>297</xmax>
<ymax>354</ymax>
</bndbox>
</part>
<part>
<name>foot</name>
<bndbox>
<xmin>319</xmin>
<ymin>307</ymin>
<xmax>340</xmax>
<ymax>326</ymax>
</bndbox>
</part>
</object>
</annotation>
2.2、ImageSets文件夹
ImageSets包含如下四个子文件夹:
各个文件夹中存放的是各种用途的TXT文件。例如在Main文件夹下有名为aeroplane_train.txt的文件,顾名思义是用于飞机类别的训练数据。该txt的具体内容如下。
2008_000008
2008_000015
2008_000019
2008_000023
2008_000028
其中包含的train.txt以及trainval.txt等文件内容与上面类似,
train.txt和trainval.txt内容中光有图片的名字,不包含图片属性与路径信息。
2.3、JEPGImages文件夹
该文件夹存放的是数据集的所有源图片,内容如下:
2.4** 、 SegmentationClass 文件夹**
语义分割相关:
该文件夹存放的是数据集的所有源图片对应的标签图,注意的是标签是0,1,2,3……。
2.5、SegmentationObject文件夹
实例分割相关,注意的是标签是0,1,2,3…… :