Pascal VOC网址:http://host.robots.ox.ac.uk/pascal/VOC/
一. VOCdevkit文件夹
数据集下载后解压得到一个名为VOCdevkit的文件夹,该文件夹结构如下:
.
└── VOCdevkit #根目录
└── VOC2012 #不同年份的数据集,这里只下载了2012的,还有2007等其它年份的
├── Annotations #存放xml文件,与JPEGImages中的图片一一对应,解释图片的内容等等
├── ImageSets #该目录下存放的都是txt文件,txt文件中每一行包含一个图片的名称,末尾会加上±1表示正负样本
│ ├── Action
│ ├── Layout
│ ├── Main
│ └── Segmentation
├── JPEGImages #存放源图片
├── SegmentationClass #存放的是图片,分割后的效果,见下文的例子
└── SegmentationObject #存放的是图片,分割后的效果,见下文的例子
文件目录一览:
1. Annotation文件夹
其中xml主要介绍了对应图片的基本信息,如来自那个文件夹、文件名、来源、图像尺寸以及图像中包含哪些目标以及目标的信息等等,内容如下:
<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> #可否用于语义分割任务,1表示可以,也就是这张图片在SegmentationClass/Object里面有
<object> #检测的目标,如果有多个会有多个<object>标签
<name>person</name> #目标类别
<pose>Unspecified</pose> #拍摄角度
<truncated>0</truncated> #是否被截断, 0表示完整
<difficult>0</difficult> #目标是否难以识别, 0表示容易识别
<bndbox> #bounding-box, 包含左下角和右上角xy坐标
<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. ImageSets文件夹
各个文件夹中存放的是各种用途的TXT文件。例如在Main文件夹下有名为aeroplane_train.txt的文件,顾名思义是用于飞机类别的训练数据。该txt的具体内容如下,其中±1表示的是正负样本:
①Action:存放的是人的动作。共10个动作标签,分别是:jumping、phoning、playinginstrument、reading、ridingbike、ridinghorse、running、takingphoto、usingcomputer、walking。
标签内容格式:2011_003279 1 1 (第一个1表示图中包含的人数。第二个表示图中人的动作状态是否满足:jumping,-1代表不跳)
②Layout:存放的是具有人体部位的数据(人的head、hand、feet等)
③Main:存放的是图像物体识别的数据,总共分为20类(算背景就是21类),包含了20个分类的***_train.txt(存放训练集的图片编号,每一个class的train数据都有5717个)、 ***_val.txt(存放验证集的图片编号,每一个class的val数据都有5832个) 和 ***_trainval.txt(存放以上两者的完全合并集,每一个class有5717+5832=11540个) 。
- Person: person
- Animal: bird, cat, cow, dog, horse, sheep
- Vehicle: aeroplane, bicycle, boat, bus, car, motorbike, train
- Indoor: bottle, chair, dining table, potted plant, sofa, tv/monitor
(要保证train和val两者没有交集,也就是训练数据和验证数据不能有重复,在选取训练数据的时候 ,也应该是随机产生的)
④Segmentation:存放的是可用于分割的图片的编号。
3. JPEGImages文件夹
包含了PASCAL VOC所有的图片,包含训练图片和测试图片,共有17125张。图片均以“年份_编号.jpg”格式命名。图片的尺寸大小不一,所以在后面训练的时候需要对图片进行resize操作。
图片的像素尺寸大小不一,但是横向图的尺寸大约在500*375左右,纵向图的尺寸大约在375*500左右,基本不会偏差超过100。(在之后的训练中,第一步就是将这些图片都resize到300*300或是500*500,所有原始图片不能离这个标准过远,具体resize方式可以看最下面github链接里data.py。)
4. SegmentationClass文件夹
共2913张图片,每一张图片都对应JPEGImages里的相应编号的图片。图片的像素颜色共有20种,对应20类物体。
5. SegmentationObject文件夹
同样包含了2913张图片,图片编号都与SegmentationClass文件夹里面的图片编号相同。这里和Class里面图片的区别在于,这是针对Object的。
在Class里面,一张图片里如果有多架飞机,那么会全部标注为红色;而在Object里面,同一张图片里面的飞机也会被不同颜色标注出来。
注:参考了诸多资料后的统一整理,感谢大家的共同贡献,让学习更简单。