Pascal VOC (Pascal Visual Object Classes)
Pascal VOC 网址:http://host.robots.ox.ac.uk/pascal/VOC/
训练/验证数据集下载(2G): host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
VOC数据集是目标检测经常用的一个数据集。
Task: Classification、Detection、Segmentation、Person Layout
**VOC2007:**中包含9963张标注过的图片, 由train/val/test三部分组成, 共标注出24,640个物体。 VOC2007的test数据label已经公布, 之后的没有公布(只有图片,没有label)。
**VOC2012:**对于检测任务,VOC2012的trainval/test包含08-11年的所有对应图片。 trainval有11540张图片共27450个物体。 对于分割任务, VOC2012的trainval包含07-11年的所有对应图片, test只包含08-11。trainval有 2913张图片共6929个物体。
一共有20个类,在voc.yaml文件中如下
# PASCAL VOC dataset http://host.robots.ox.ac.uk/pascal/VOC/
# Train command: python train.py --data voc.yaml
# Default dataset location is next to /yolov5:
# /parent_folder
# /VOC
# /yolov5
# download command/URL (optional)
download: bash data/scripts/get_voc.sh
# train and val data as
# 1) directory: path/images/,
# 2) file: path/images.txt, or 3)
# list: [path1/images/, path2/images/]
train: ../VOC/images/train/ # 16551 images
val: ../VOC/images/val/ # 4952 images
nc: 20 # number of classes
# class names
names: [ 'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair',
'cow', 'diningtable', 'dog','horse', 'motorbike', 'person', 'pottedplant',
'sheep', 'sofa', 'train', 'tvmonitor' ]
数据集 VOC2007
VOC2007中包含9963张标注过的图片,由train/val/test三部分组成,共标注出24640个物体。VOC2007的test数据的label已经公布,之后的没有公布(只有图片,没有label)。
数据集VOC2012
VOC2012主要分为检测任务和分割任务,
检测任务:VOC2012的train/test包含了08-11年的所有对应图片。train有11540张图片共有27450个物体。
分割任务:VOC2012包含07-11年的所有对应图片,test只包含08-11。train有2913张图片,共有6929个物体。
VOC文件夹下面的结构
└── VOCdevkit # 根目录
└── VOC2012 # 不同年份的数据集,这里只下载了2012的,还有2007等其它年份的
├── Annotations # 存放xml文件,与JPEGImages中的图片一一对应,解释图片的内容等等
├── ImageSets # 该目录下存放的都是txt文件,txt文件中每一行包含一个图片的名称,末尾会加上±1表示正负样本
│ ├── Action # Action:存放的是人的动作。共10个动作标签,见下面
│ ├── Layout # 存放的是具有人体部位的数据(人的head、hand、feet等)
│ ├── Main # 存放的是图像物体识别的数据,总共分为20类
│ └── Segmentation # 存放的是可用于分割的图片的编号。
├── JPEGImages # 存放全是图片
├── SegmentationClass # 存放的是图片,分割后的效果
└── SegmentationObject # 存放的是图片,分割后的效果
Annotation
Annotation文件夹存放的是xml文件,该文件是对图片的解释,每张图片都对应于一个同名的xml文件。
xml主要介绍了对应图片的基本信息,如来自哪个文件夹、文件名、来源、图片尺寸以及图像中包含哪些目标,及目标的相关信息,等,这种格式可以使用labelimg标注软件来标注获取。
**“2012_004331.xml”**对应xml文件
<annotation>
<filename>2012_004331.jpg</filename> <!-- 文件名称 -->
<folder>VOC2012</folder> <!-- folder 文件夹名 -->
<object> <!-- object 目标类别 -->
<name>person</name> <!-- 目标的名称 -->
<actions>
<jumping>1</jumping> <!-- Action--jumping -->
<other>0</other> <!-- others -->
<phoning>0</phoning> <!-- Action--phoning -->
<playinginstrument>0</playinginstrument> <!-- Action--phoning -->
<reading>0</reading> <!-- Action--reading -->
<ridingbike>0</ridingbike> <!-- Action--ridingbike -->
<ridinghorse>0</ridinghorse> <!-- Action--ridinghorse -->
<running>0</running> <!-- Action--running -->
<takingphoto>0</takingphoto> <!-- Action--takingphoto -->
<usingcomputer>0</usingcomputer> <!-- Action--usingcomputer -->
<walking>0</walking> <!-- Action--walking -->
</actions>
<bndbox>
<xmax>208</xmax> <!-- x bounding box右边点 横坐标 -->
<xmin>102</xmin> <!-- x bounding box左边点 横坐标 -->
<ymax>230</ymax> <!-- x bounding box下边点 纵坐标 -->
<ymin>25</ymin> <!-- x bounding box上边点 纵坐标 -->
</bndbox>
<difficult>0</difficult>
<pose>Unspecified</pose>
<point> <!-- 目标中心点 -->
<x>155</x> <!-- x bounding box中心点 横坐标 -->
<y>119</y> <!-- y boudding box中心点 纵坐标 -->
</point>
</object>
<segmented>0</segmented> <!-- #可否用于语义分割任务,1表示可以,也就是这张图片在Segmentat-->
<size>
<depth>3</depth> <!-- 图像深度 -->
<height>375</height> <!-- 图像高度 -->
<width>500</width> <!-- 图像宽度 -->
</size>
<source>
<annotation>PASCAL VOC2012</annotation> <!-- 数据集来源 -->
<database>The VOC2012 Database</database> <!-- 数据库名称 -->
<image>flickr</image> <!-- 图像来源 -->
</source>
</annotation>
**“2012_004331.xml”**对应图片
labelimg工具标注的图片
labelimg工具生成的xml文件
<annotation>
<folder>train</folder>
<filename>0004.jpg</filename>
<path>path\train\0004.jpg</path>
<source>
<database>Unknown</database> <!--数据来源-->
</source>
<size>
<width>2000</width> <!-- 图片宽度 -->
<height>1334</height> <!-- 图片高低 -->
<depth>3</depth> <!-- 图片深度 -->
</size>
<segmented>0</segmented> <!--是否可分割-->
<object>
<name>UAV</name> <!--目标的名称-->
<pose>Unspecified</pose>
<truncated>0</truncated> <!--truncated 标注对象是否为截断的
(如标注对象的bbox标注区域由于遮挡或其他问题只为目标整体的一部分,
则该标注为1,反之为0)-->
<difficult>0</difficult> <!--difficult 是否为识别困难目标-->
<bndbox>
<xmin>352</xmin> <!--标注框x_min-->
<ymin>362</ymin> <!--标注框y_min-->
<xmax>1832</xmax> <!--标注框x_max-->
<ymax>995</ymax> <!--标注框y_max-->
</bndbox>
</object>
</annotation>
ImageSets
各个文件夹中存放的是各种用途的TXT文件。
Action
Action:存放的是人的动作。共10个动作标签,分别是:
jumping、phoning、playinginstrument、reading、ridingbike、ridinghorse、running、takingphoto、usingcomputer、walking。
标签内容格式:2011_003279 1 1
(第一个1表示图中包含的人数,第二个表示图中人的动作状态是否满足:jumping,-1代表不跳)
2011_003285 4 -1 # 表示2011_003285图片中有4个人,并没有跳
2011_003724 2 1 # 表示2011_003724图片中有2个人,表示在跳
在JPEGImages文件夹下对应图片如下所示,
2011_003285 | 2011_003724 |
---|---|
![]() | ![]() |
Layout
Layout:存放的是具有人体部位的数据(人的head、hand、feet等)
2007_007763 7
2007_007763.xml文件中的部分内容:
<object>
<name>person</name>
<pose>Unspecified</pose>
<truncated>1</truncated>
<difficult>0</difficult>
<part> <!-- 部位 -->
<name>head</name> <!-- 头部 -->
<bndbox>
<!--bounding box value xmin xmax ymin ymax-->
</bndbox>
</part>
<part>
<name>hand</name> <!-- 手部 -->
<bndbox>
<!--bounding box value xmin xmax ymin ymax-->
</bndbox>
</part>
<part>
<name>hand</name>
<bndbox>
<!--bounding box value xmin xmax ymin ymax-->
</bndbox>
</part>
<bndbox>
<!--bounding box value xmin xmax ymin ymax-->
</bndbox>
</object>
Main
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
如文件夹下有名为aeroplane_train.txt的文件,顾名思义是用于飞机类别(aeroplane)的训练数据。该txt的具体内容如下,其中+1表示的是正t样本,-1表示负样本。
2008_000008 -1 # 负样本
2008_000033 1 # 正样本
在JPEGImages文件夹下对应图片如下所示,
2008_000008 | 2008_000033 |
---|---|
![]() | ![]() |
要保证train和val两者没有交集,也就是训练数据和验证数据不能有重复,在选取训练数据的时候 ,也应该是随机产生的。
Segmentation
Segmentation:存放的是可用于分割的图片的编号。
如在train.txt文件中,2007_000032、2007_000039
JPEGImages文件夹
包含了PASCAL VOC所有的图片,包含训练图片和测试图片,共有17125张。图片均以“年份_编号.jpg”格式命名。图片的尺寸大小不一,所以在后面训练的时候需要对图片进行resize操作。
|
SegmentationClass文件夹
同一类会被标注成同一种颜色。
共2913张图片,每一张图片都对应JPEGImages里的相应编号的图片。图片的像素颜色共有20种,对应20类物体。
|
SegmentationObject文件夹
同一类也会被标注成不同的颜色
同样包含了2913张图片,图片编号都与SegmentationClass文件夹里面的图片编号相同。这里和Class里面图片的区别在于,这是针对Object的。在Class里面,一张图片里如果有多架飞机,那么会全部标注为红色;而在Object里面,同一张图片里面的飞机也会被不同颜色标注出来。
|
2007_000129在SegmentationClass和SegmentationObject中的不同之处