目标检测数据集PASCAL VOC简介
简介
PASCAL VOC挑战赛 (The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛, PASCAL全称:Pattern Analysis, Statical Modeling and Computational Learning,是一个由欧盟资助的网络组织。
很多优秀的计算机视觉模型比如分类,定位,检测,分割,动作识别等模型都是基于PASCAL VOC挑战赛及其数据集上推出的,尤其是一些目标检测模型(比如大名鼎鼎的R CNN系列,以及后面的YOLO,SSD等)。
PASCAL VOC从2005年开始举办挑战赛,每年的内容都有所不同,从最开始的分类,到后面逐渐增加检测,分割,人体布局,动作识别(Object Classification 、Object Detection、Object Segmentation、Human Layout、Action Classification)等内容,数据集的容量以及种类也在不断的增加和改善。该项挑战赛催生出了一大批优秀的计算机视觉模型(尤其是以深度学习技术为主的)。
我们知道在 ImageNet挑战赛上涌现了一大批优秀的分类模型,而PASCAL挑战赛上则是涌现了一大批优秀的目标检测和分割模型,这项挑战赛已于2012年停止举办了,但是研究者仍然可以在其服务器上提交预测结果以评估模型的性能。
虽然近期的目标检测或分割模型更倾向于使用MS COCO数据集,但是这丝毫不影响 PASCAL VOC数据集的重要性,毕竟PASCAL对于目标检测或分割类型来说属于先驱者的地位。对于现在的研究者来说比较重要的两个年份的数据集是 PASCAL VOC 2007 与 PASCAL VOC 2012,这两个数据集频频在现在的一些检测或分割类的论文当中出现。
PASCAL主页 与 排行榜 (榜上已几乎看不到传统的视觉模型了,全是基于深度学习的)
PASCAL VOC 2007 挑战赛主页 与 PASCAL VOC 2012 挑战赛主页 与 PASCAL VOC Evaluation Server.
以及在两个重要时间点对 PASCAL VOC挑战赛 成绩进行总结的两篇论文
The PASCAL Visual Object Classes Challenge: A Retrospective
Everingham, M., Eslami, S. M. A., Van Gool, L., Williams, C. K. I., Winn, J. and Zisserman, A.
International Journal of Computer Vision, 111(1), 98-136, 2015
Bibtex source | Abstract | PDF主要总结PASCAL VOC 2012的数据集情况,以及2011年-2013年之间出现的模型及其性能对比
The PASCAL Visual Object Classes (VOC) Challenge
Everingham, M., Van Gool, L., Williams, C. K. I., Winn, J. and Zisserman, A.
International Journal of Computer Vision, 88(2), 303-338, 2010
Bibtex source | Abstract | PDF主要总结PASCAL VOC 2007的数据集情况,以及2008年之前出现的模型及其性能对比
不过在以上论文中出现的深度学习模型只有一个 R-CNN吧,大部分都是传统方式的模型,毕竟深度学习模型主要在14年以后才大量涌现。
本文也是以PASCAL VOC 2007 和 2012 为例简要介绍VOC数据集的结构。
1 数据集整体概况
1.1 层级结构
PASCAL VOC 数据集的20个类别及其层级结构:
从2007年开始,PASCAL VOC每年的数据集都是这个层级结构
总共四个大类:vehicle,household,animal,person
总共20个小类,预测的时候是只输出图中黑色粗体的类别
数据集主要关注分类和检测,也就是分类和检测用到的数据集相对规模较大。关于其他任务比如分割,动作识别等,其数据集一般是分类和检测数据集的子集。
1.2 发展历程与使用方法
简要提一下在几个关键时间点数据集的一些关键变化,详细的请查看PASCAL VOC主页 。
2005年:还只有4个类别: bicycles, cars, motorbikes, people. Train/validation/test共有图片1578 张,包含2209 个已标注的目标objects.
2007年 :在这一年PASCAL VOC初步建立成一个完善的数据集。类别扩充到20类,Train/validation/test共有9963张图片,包含24640 个已标注的目标objects.
07年之前的数据集中test部分都是公布的,但是之后的都没有公布。
2009年:从这一年开始,通过在前一年的数据集基础上增加新数据的方式来扩充数据集。比如09年的数据集是包含了08年的数据集的,也就是说08年的数据集是09年的一个子集,以后每年都是这样的扩充方式,直到2012年;09年之前虽然每年的数据集都在变大(08年比07年略少),但是每年的数据集都是不一样的,也就是说每年的数据集都是互斥的,没有重叠的图片。
2012年:从09年到11年,数据量仍然通过上述方式不断增长,11年到12年,用于分类、检测和person layout 任务的数据量没有改变。主要是针对分割和动作识别,完善相应的数据子集以及标注信息。
对于分类和检测来说,也就是下图所示的发展历程,相同颜色的代表相同的数据集:
分割任务的数据集变化略有不同:
- VOC 2012用于分类和检测的数据包含 2008-2011年间的所有数据,并与VOC2007互斥。
- VOC 2012用于分割的数据中train+val包含 2007-2011年间的所有数据,test包含2008-2011年间的数据,没有包含07年的是因为07年的test数据已经公开了。
2012年是最后一次挑战赛,最终用于分类和检测的数据集规模为:train/val :11540 张图片,包含 27450 个已被标注的 ROI annotated objects ;用于分割的数据集规模为:trainval:2913张图片,6929个分割,用于其他任务的不再细说,参考这里 。
即便挑战赛结束了,但是研究者们仍然可以上传预测结果进行评估。上传入口: PASCAL VOC Evaluation Server.
目前广大研究者们普遍使用的是 VOC2007和VOC2012数据集,因为二者是互斥的,不相容的。
论文中针对 VOC2007和VOC2012 的具体用法有以下几种:
- 只用VOC2007的trainval 训练,使用VOC2007的test测试
- 只用VOC2012的trainval 训练,使用VOC2012的test测试,这种用法很少使用,因为大家都会结合VOC2007使用
- 使用 VOC2007 的 train+val 和 VOC2012的 train+val 训练,然后使用 VOC2007的test测试,这个用法是论文中经常看到的 07+12 ,研究者可以自己测试在VOC2007上的结果,因为VOC2007的test是公开的。
- 使用 VOC2007 的 train+val+test 和 VOC2012的 train+val训练,然后使用 VOC2012的test测试,这个用法是论文中经常看到的 07++12 ,这种方法需提交到VOC官方服务器上评估结果,因为VOC2012 test没有公布。
- 先在 MS COCO 的 trainval 上预训练,再使用 VOC2007 的 train+val、 VOC2012的 train+val 微调训练,然后使用 VOC2007的test测试,这个用法是论文中经常看到的 07+12+COCO 。
- 先在 MS COCO 的 trainval 上预训练,再使用 VOC2007 的 train+val+test 、 VOC2012的 train+val 微调训练,然后使用 VOC2012的test测试 ,这个用法是论文中经常看到的 07++12+COCO,这种方法需提交到VOC官方服务器上评估结果,因为VOC2012 test没有公布。
在各自数据集上分别进行建模和评测的用法比较少,基本上在早期论文里出现就是起个对照作用;现在的大部分论文都会为了增加数据量而将二者合起来使用。
2 数据量统计
由于现在的研究基本上都是在VOC2007和VOC2012上面进行,因此只介绍这两个年份的。
2.1 VOC 2007
一些示例图片展示:Classification/detection example images
数据集总体统计:
- 以上是数据集总体的统计情况,这个里面是包含了测试集的,可见person 类是最多的。
训练集,验证集,测试集划分情况
- PASCAL VOC 2007 数据集分为两部分:训练和验证集trainval,测试集test ,两部分各占数据总量的约 50%。其中trainval 又分为训练集和测试集,二者分别各占trainval的50%。
- 每张图片中有可能包含不只一个目标object。
这里我就只贴出用于分类和检测的划分情况,关于分割或者其他任务的划分方式 点击这里查看 。
2.2 VOC 2012
一些示例图片展示:Classification/detection example images
数据集总体统计
- 这个统计是没有包含 test部分的,仍然是person类最多
trainval部分的数据统计:
test部分没有公布,同样的 除了分类和检测之外的数据统计,参考这里
2.3 VOC 2007 与 2012 的对比
VOC 2007 与 2012 数据集及二者的并集 数据量对比
- 黑色字体所示数字是官方给定的,由于VOC2012数据集中 test 部分没有公布,因此红色字体所示数字为估计数据,按照PASCAL 通常的划分方法,即 trainval 与test 各占总数据量的一半。
3 标注信息
数据集的标注还是很谨慎的,有专门的标注团队,并遵从统一的标注标准,参考 guidelines 。
标注信息是用 xml 文件组织的如下:
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 |
<annotation> <folder>VOC2007</folder> <filename>000001.jpg</filename> <source> <database>The VOC2007 Database</database> <annotation>PASCAL VOC2007</annotation> <image>flickr</image> <flickrid>341012865</flickrid> </source> <owner> <flickrid>Fried Camels</flickrid> <name>Jinky the Fruit Bat</name> </owner> <size> <width>353</width> <height>500</height> <depth>3</depth> </size> <segmented>0</segmented> <object> <name>dog</name> <pose>Left</pose> <truncated>1</truncated> <difficult>0</difficult> <bndbox> <xmin>48</xmin> <ymin>240</ymin> <xmax>195</xmax> <ymax>371</ymax> </bndbox> </object> <object> <name>person</name> <pose>Left</pose> <truncated>1</truncated> <difficult>0</difficult> <bndbox> <xmin>8</xmin> <ymin>12</ymin> <xmax>352</xmax> <ymax>498</ymax> </bndbox> </object> </annotation> |
filename :文件名
source,owner:图片来源,及拥有者
size:图片大小
segmented:是否分割
object:表明这是一个目标,里面的内容是目标的相关信息
name:object名称,20个类别
pose:拍摄角度:front, rear, left, right, unspecified
truncated:目标是否被截断(比如在图片之外),或者被遮挡(超过15%)
difficult:检测难易程度,这个主要是根据目标的大小,光照变化,图片质量来判断
difficult 标签示例:图中白色虚线,被标记为 difficult
bndbox:bounding box 的左上角点和右下角点的4个坐标值。
4 提交格式
4.1 Classification Task
每一类都有一个txt文件,里面每一行都是测试集中的一张图片,前面一列是图片名称,后面一列是预测的分数。
comp1_cls_test_car.txt:
1 2 3 4 5 |
000004 0.702732 000006 0.870849 000008 0.532489 000018 0.477167 000019 0.112426 |
4.2 Detection Task
comp3_det_test_car.txt:
1 2 3 4 5 |
000004 0.702732 89 112 516 466 000006 0.870849 373 168 488 229 000006 0.852346 407 157 500 213 000006 0.914587 2 161 55 221 000008 0.532489 175 184 232 201 |
每一类都有一个txt文件,里面每一行都是测试集中的一张图片,每行的格式按照如下方式组织
1 |
<image identifier> <confidence> <left> <top> <right> <bottom> |
confidence 用来计算 mAP.
5 评估标准
PASCAL的评估标准是 mAP(mean average precision)
关于mAP不再详细解释,参考以下资料:
- 性能指标(模型评估)之mAP
- average precision
- 周志华老师 《机器学习》 模型评估标准一节
这里简单的提一下:
下面是一个二分类的P-R曲线(precision-recall curve),对于PASCAL来说,每一类都有一个这样的 P-R曲线,P-R曲线下面与x轴围成的面积称为 average precision,每个类别都有一个 AP, 20个类别的AP 取平均值就是 mAP。
PASCAL官方给了评估脚本mAP的脚本和示例代码 development kit code and documentation ,是用MATLAB写的。
6 数据集组织结构
数据集的下载:
1 2 3 4 5 6 7 8 9 |
# Download the data. cd $HOME/data wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar 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 # Extract the data. tar -xvf VOCtrainval_11-May-2012.tar tar -xvf VOCtrainval_06-Nov-2007.tar tar -xvf VOCtest_06-Nov-2007.tar |
或者支直接点击下面链接下载:
- Download the training/validation data (450MB tar file)
- Download the annotated test data (430MB tar file)
上面的解压命令会将VOC2007的trainval和test解压到一块,数据会混在一起,如果不想,可以自己指定解压路径。以VOC 2007 为例,解压后的文件:
1 2 3 4 5 6 |
. ├── Annotations 进行detection 任务时的 标签文件,xml文件形式 ├── ImageSets 存放数据集的分割文件,比如train,val,test ├── JPEGImages 存放 .jpg格式的图片文件 ├── SegmentationClass 存放 按照class 分割的图片 └── SegmentationObject 存放 按照 object 分割的图片 |
Annotations 文件夹:
1 2 3 4 5 6 7 8 9 10 |
. ├── 000001.xml ├── 000002.xml ├── 000003.xml ├── 000004.xml …… …… …… ├── 009962.xml └── 009963.xml |
以xml 文件的形式,存放标签文件,文件内容如前述,文件名与图片名是一样的,6位整数
ImageSets文件夹:
存放数据集的分割文件
包含三个子文件夹 Layout,Main,Segmentation,其中Main文件夹存放的是用于分类和检测的数据集分割文件,Layout文件夹用于 person layout任务,Segmentation用于分割任务
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
. ├── Layout │ ├── test.txt │ ├── train.txt │ ├── trainval.txt │ └── val.txt ├── Main │ ├── aeroplane_test.txt │ ├── aeroplane_train.txt │ ├── aeroplane_trainval.txt │ ├── aeroplane_val.txt │ ├── bicycle_test.txt │ ├── bicycle_train.txt │ ├── bicycle_trainval.txt │ ├── bicycle_val.txt │ ├── bird_test.txt │ ├── bird_train.txt │ ├── bird_trainval.txt │ ├── bird_val.txt │ ├── boat_test.txt │ ├── boat_train.txt │ ├── boat_trainval.txt │ ├── boat_val.txt │ ├── bottle_test.txt │ ├── bottle_train.txt │ ├── bottle_trainval.txt │ ├── bottle_val.txt │ ├── bus_test.txt │ ├── bus_train.txt │ ├── bus_trainval.txt │ ├── bus_val.txt │ ├── car_test.txt │ ├── car_train.txt │ ├── car_trainval.txt │ ├── car_val.txt │ ├── cat_test.txt │ ├── cat_train.txt │ ├── cat_trainval.txt │ ├── cat_val.txt │ ├── chair_test.txt │ ├── chair_train.txt │ ├── chair_trainval.txt │ ├── chair_val.txt │ ├── cow_test.txt │ ├── cow_train.txt │ ├── cow_trainval.txt │ ├── cow_val.txt │ ├── diningtable_test.txt │ ├── diningtable_train.txt │ ├── diningtable_trainval.txt │ ├── diningtable_val.txt │ ├── dog_test.txt │ ├── dog_train.txt │ ├── dog_trainval.txt │ ├── dog_val.txt │ ├── horse_test.txt │ ├── horse_train.txt │ ├── horse_trainval.txt │ ├── horse_val.txt │ ├── motorbike_test.txt │ ├── motorbike_train.txt │ ├── motorbike_trainval.txt │ ├── motorbike_val.txt │ ├── person_test.txt │ ├── person_train.txt │ ├── person_trainval.txt │ ├── person_val.txt │ ├── pottedplant_test.txt │ ├── pottedplant_train.txt │ ├── pottedplant_trainval.txt │ ├── pottedplant_val.txt │ ├── sheep_test.txt │ ├── sheep_train.txt │ ├── sheep_trainval.txt │ ├── sheep_val.txt │ ├── sofa_test.txt │ ├── sofa_train.txt │ ├── sofa_trainval.txt │ ├── sofa_val.txt │ ├── test.txt │ ├── train_test.txt │ ├── train_train.txt │ ├── train_trainval.txt │ ├── train.txt │ ├── train_val.txt │ ├── trainval.txt │ ├── tvmonitor_test.txt │ ├── tvmonitor_train.txt │ ├── tvmonitor_trainval.txt │ ├── tvmonitor_val.txt │ └── val.txt └── Segmentation ├── test.txt ├── train.txt ├── trainval.txt └── val.txt 3 directories, 92 files |
主要介绍一下Main文件夹中的组织结构,先来看以下这几个文件:
1 2 3 4 5 |
├── Main │ ├── train.txt 写着用于训练的图片名称 共2501个 │ ├── val.txt 写着用于验证的图片名称 共2510个 │ ├── trainval.txt train与val的合集 共5011个 │ ├── test.txt 写着用于测试的图片名称 共4952个 |
里面的文件内容是下面这样的:以train.txt文件为例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
000012 000017 000023 000026 000032 000033 000034 000035 000036 000042 …… …… 009949 009959 009961 |
就是对数据库的分割,这一部分图片用于train,其他的用作val,test等。
Main中剩下的文件很显然就是每一类别在train或val或test中的ground truth,这个ground truth是为了方便classification 任务而提供的;如果是detection的话,使用的是上面的xml标签文件。
1 2 3 4 5 6 7 |
├── Main │ ├── aeroplane_test.txt 写着用于训练的图片名称 共2501个,指定正负样本 │ ├── aeroplane_train.txt 写着用于验证的图片名称 共2510个,指定正负样本 │ ├── aeroplane_trainval.txt train与val的合集 共5011个,指定正负样本 │ ├── aeroplane_val.txt 写着用于测试的图片名称 共4952个,指定正负样本 …… …… |
里面文件是这样的(以aeroplane_train.txt为例):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
000012 -1 000017 -1 000023 -1 000026 -1 000032 1 000033 1 000034 -1 000035 -1 000036 -1 000042 -1 …… …… 009949 -1 009959 -1 009961 -1 |
前面一列是训练集中的图片名称,这一列跟train.txt文件中的内容是一样的,后面一列是标签,即训练集中这张图片是不是aeroplane,是的话为1,否则为-1.
其他所有的 (class)_(imgset).txt 文件都是类似的。
- (class)_train 存放的是训练使用的数据,每一个class都有2501个train数据。
- (class)_val 存放的是验证使用的数据,每一个class都有2510个val数据。
- (class)_trainval 将上面两个进行了合并,每一个class有5011个数据。
- (class)_test 存放的是测试使用的数据,每一个class有4952个test数据。
所有文件都 指定了正负样本,每个class的实际数量为正样本的数量,train和val两者没有交集。
VOC2012 的数据集组织结构是类似的,不一样的地方在于VOC2012 中没有 test类的图片和以及相关标签和分割文件,因为这部分数据 VOC2012没有公布。
参考资料
- The PASCAL Visual Object Classes Homepage
- 性能指标(模型评估)之mAP
- 多标签图像分类任务的评价方法-mAP
- average precision
本文标题:目标检测数据集PASCAL VOC简介
本文作者:arleyzhang
发布时间:2018年06月03日 - 23:06
最后更新:2018年11月16日 - 22:11
本文链接:目标检测数据集PASCAL VOC简介 | arleyzhang
版权声明: 本文由 arleyzhang 原创,采用 保留署名-非商业性使用-禁止演绎 4.0-国际许可协议,转载请保留原文链接及作者!
目标检测数据集PASCAL VOC简介相关推荐
- 目标检测数据集-Pascal VOC 数据集介绍
个人微信公众号:AI研习图书馆 ID:(Art-Intelligence) 欢迎关注,交流学习,共同进步~ 1.引言 PASCAL VOC数据集,为图像识别和分类提供了一整套标准化的优秀数据集,从20 ...
- 目标检测:PASCAL VOC 数据集简介
一.简介 PASCAL VOC 挑战赛主要有 Object Classification .Object Detection.Object Segmentation.Human Layout.Acti ...
- 100种目标检测数据集【voc格式yolo格式json格式coco格式】+YOLO系列算法源码及训练好的模型
提示:本文介绍并分享了应用于各行业.各领域非常有用的目标检测数据集(感谢您的关注+三连,数据集持续更新中-),其中绝大部分数据集作者已应用于各种实际落地项目,数据集整体质量好,标注精确,数据的多样性充 ...
- 玩转肺癌目标检测数据集Lung-PET-CT-Dx ——④转换成PASCAL VOC格式数据集
文章目录 关于PASCAL VOC数据集 目录结构 ①创建VOC数据集的几个相关目录 XML文件的形式 ②读取dcm文件与xml文件的配对关系 ③创建VOC格式数据集 ④创建训练.验证集 本文所用代码 ...
- PASCAL VOC目标检测数据集格式转化为COCO目标检测数据集格式
VOC2012目标检测数据集格式转化为COCO目标检测数据集格式 你只需要传入一个VOC数据集根路径可以直接运行,简直不要太方便好吧 需要材料: VOC2012原始数据集 一个pycharm项目文件夹 ...
- 目标检测数据集MSCOCO简介
简介 介绍一下目标检测领域另外一个比较有名的数据集 MS COCO (Microsoft COCO: Common Objects in Context) . MSCOCO 数据集是微软构建的一个数据 ...
- 如何利用python将NWPU VHR-10目标检测遥感数据集的格式转换成VOC目标检测数据集的格式
VOC目标检测数据集的格式 其中图片存放在JPEGImages文件夹中,标注是xml文件,存储在Annotations文件中 关于train集和val集的txt划分存放在ImageSets文件夹下面的 ...
- Udacity Self-Driving 目标检测数据集简介与使用
前言 之前,博主为了得到更好的车载视频目标检测效果(偏工程实际,非刷榜),使用SSD框架训练过KITTI数据集,几次训练下来,结果不太理想.自己分析,原因较多,其中很重要的一条就是KITTI数据集不够 ...
- 制作目标检测数据集入门到精通(一)常用数据集(及下载数据网站)汇总
目录 前言 1.目标识别知名数据集 1.1 PASCAL VOC 1.2 MS COCO 1.3 ImageNet 2 人脸识别相关 2.1 FERET人脸数据库 2.2 CMU Multi-PIE人 ...
最新文章
- 验证url 地址是否是图片
- shell编程面试必会30题
- mysql accessdenies_mysql Access denied for user root@localhost错误解决方法总结(转)
- Spring Session Redis——自定义JSON序列化解决方案
- pat1035. Password (20)
- py2exe将脚本生成exe可执行文件,不用安装复杂的环境了
- 【转】NodeJs使用Mysql模块实现事务处理
- uygurqa输入法android,uygurqa输入法app
- 引领数字医学高地,中山医院探索打造未来医院“新范式”
- ERP进销存管理系统,建立企业信息化管理平台
- CVPR 2021 Exploring Simple Siamese Representation Learning
- Excel表格常用函数-VLOOKUP|IFERROR|IF
- 【VBA研究】调用API实现汉字简繁互换
- 电脑蓝屏怎么办?一分钟教你修好
- Android 之注册Facebook开发者账号
- 区块链+数字经济,我们看到了什么
- 【定时任务】xxl-job框架学习笔记
- ilove中文_iLovePDF中文版|iLovePDF(PDF万能工具箱) V0.9.662 官方版 下载_当下软件园_软件下载...
- 键盘的各个部分和指法(图片版)
- tomcat支持中文
热门文章
- boost::mp11::mp_map_find相关用法的测试程序
- boost::fibers::future用法的测试程序
- OpenCV cv::CascadeClassifier人脸检测的实例(附完整代码)
- Qt CMake命令参考
- OpenGL exploder对象雷管的实例
- OpenGL 分层渲染Layered Rendering的实例
- OpenGL使用Perlin噪声的腐蚀效果
- C++Saddleback search鞍背搜索的实现算法(附完整源码)
- C++中四种 cast 转换
- QT的QHoverEvent类的使用