1.1Pascal VOC
VOC数据集是目标检测经常用的一个数据集,从05年到12年都会举办比赛(比赛有task: Classification 、Detection(将图片中所有的目标用bounding box框出来) 、 Segmentation(将图片中所有的目标分割出来)、Person Layout)。
1.1.1VOC数据集种类
一共包含了20类
person
bird, cat, cow, dog, horse, sheep
aeroplane, bicycle, boat, bus, car, motorbike, train
bottle, chair, dining table, potted plant, sofa, tv/monitor
很遗憾可用的类型只有一类。
1.1.2关于数据集
所有的标注图片都有Detection需要的label, 但只有部分数据Segmentation Label(这个不需要)。
VOC2007中包含9963张标注过的图片,由train/val/test三部分组成,共标注出24,640个物体。
VOC2007的test数据label已经公布,之后的没有公布(只有图片,没有label)。
对于检测任务,VOC2012的trainval/test包含08-11年的所有对应图片。 trainva有11540张图片共27450个物体。
数据集下载完后会有5个文件夹。Annotations、ImageSets、JPEGImages、SegmentationClass、SegmentationObject。
1.1.3数据集内容分析
(1).JPEGImages
包含了所有图片的信息,包含训练集和验证集。以年份和编号命名
图像的尺寸大小不一,横向的尺寸大约在500375左右,纵向的尺寸大约在375500左右,基本不会偏差超过100。在之后的训练过程中在对数据预处理时,第一步就是对图像进行resize操作,如resieze到418*418,所有的原始图片不能偏离这个标准太远。
(2)Annotations
Annotations文件夹中存放的是xml格式的标签文件,每一个xml文件都对应于JPEGImages文件夹中的一张图片.
其内部的数据格式如下。
<folder>VOC2012</folder>
<filename>2007_000392.jpg</filename> //文件名
<source> //图像来源(不重要)
<database>The VOC2007 Database</database>
<annotation>PASCAL VOC2007</annotation>
<image>flickr</image>
</source>
<size> //图像尺寸(长宽以及通道数)
<width>500</width>
<height>332</height>
<depth>3</depth>
</size>
<segmented>1</segmented> //是否用于分割(在图像物体识别中01无所谓)
<object> //检测到的物体
<name>horse</name> //物体类别
<pose>Right</pose> //拍摄角度
<truncated>0</truncated> //是否被截断(0表示完整)
<difficult>0</difficult> //目标是否难以识别(0表示容易识别)
<bndbox> //bounding-box(包含左上角和右下角xy坐标)
<xmin>100</xmin>
<ymin>96</ymin>
<xmax>355</xmax>
<ymax>324</ymax>
</bndbox>
</object>
<object> //检测到多个物体
<name>person</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>198</xmin>
<ymin>58</ymin>
<xmax>286</xmax>
<ymax>197</ymax>
</bndbox>
</object>
</annotation>
其对应的图片如下所示:
(3)ImageSets
ImageSets存放的是每一种类型的challenge对应的图像数据。在ImageSets下有四个文件夹。
其中Action下存放的是人的动作(例如running、jumping等等,这也是VOC challenge的一部分)。
Layout下存放的是具有人体部位的数据(人的head、hand、feet等等,这也是VOC challenge的一部分)
Main下存放的是图像物体识别的数据,总共分为20类。
Segmentation下存放的是可用于分割的数据。
这里主要讲Main文件,里面放了20个类的train、val、trainval的txt
train中存放的是训练使用的数据,val中存放的是验证结果使用的数据,trainval将上面两个进行了合并。内部内容如下
前面的表示图像的name,后面的1代表正样本,-1代表负样本。
需要保证的是train和val两者没有交集,也就是训练数据和验证数据不能有重复,在选取训练数据的时候 ,也应该是随机产生的。
(4) SegmentationClass和SegmentationObject
这两个文件下保存了分割后的图片,在目标检测中未用到,不再详细展开。
1.1.4数据集下载
下载
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
解压
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar