1.2 PASCAL VOC竞赛和数据集
PASCAL的全称为Pattern Analysis,Statistical Modelling and Computational Learning,即模式分析、统计建模和计算学习。VOC的全称为Visual Object Classes,即视觉对象类。PASCAL VOC竞赛是一项世界级的计算机视觉挑战赛,该挑战赛由Everingham、Van Gool、Williams、Winn和Zisserman发起,并在2005—2012年期间举办。2012年,Everingham去世,PASCAL VOC竞赛也随之终止。PASCAL VOC数据集大小适中,适合在计算机视觉算法验证阶段使用。
⋘ 1.2.1 PASCAL VOC竞赛任务和数据集简介
PASCAL VOC竞赛任务包括图像分类与检测竞赛、图像分割竞赛、动作分类竞赛、人体各部位轮廓检测竞赛。相应地,PASCAL VOC也提供与竞赛内容对应的监督数据集。PASCAL VOC监督数据集提供3种标注方式:矩形框(Bounding Box)、种类分割(Segment Class)、实例分割(Segment Instance)。其中,矩形框标注使用矩形框标注出人、羊、狗等多种物体;种类分割标注使用蒙版(Mask)按照像素标注出人、羊、狗等多种物体的像素范围,蒙版是一幅与原图尺寸完全一致的图像,相同种类的物体在蒙版上的颜色是一样的;实例分割标注虽然也是使用蒙版按照像素标注出多种物体的像素范围,但即便是相同种类的不同物体,由于是不同的实例,因此也用不同颜色进行了标注。目标检测中最为常见的是矩形框标注方式,常见的标注方式如表1-1所示。
表1-1 常见的标注方式
有了这些图像和标注,就可以完成多种目标检测任务了。目标检测任务主要使用的是PASCAL VOC数据集的图片和种类框选信息。
PASCAL VOC竞赛从2005年的第一届到2012年的最后一届,一共举办了8届。这8届竞赛的数据集并非每年全部更换,也并非一成不变,而是呈现出一个演化的过程。
2005年的竞赛只提供了4个类别(bicycle,cars,motorbikes,people)的1578张图片,包含了2209个标注目标,但训练集、验证集、测试集这3个数据集都有公开;2007年的竞赛提供了全新的数据集,有20个类别的9963张图片,包含了24640个标注目标,训练集、验证集、测试集这3个数据集都有公开。
2008—2012年的5届竞赛,除2008年的竞赛提供了一套全新的数据集以外,以后每年只是在前一年的数据集基础上增加新数据,将其作为当年的数据集。以此类推,前一年的数据是后一年数据的子集。2011年、2012年的竞赛中,用于分类、检测和人体各部位轮廓检测任务的数据集的数据量没有改变,主要针对分割和动作识别任务,完善了相应的数据子集及标注信息。将PASCAL VOC竞赛提供的数据集按照时间线展开,其演化脉络如图1-5所示。
图1-5 PASCAL VOC各年份数据集的演化脉络
根据PASCAL VOC数据集的演化脉络,PASCAL VOC2007和PASCAL VOC2012数据集的合集就是PASCAL VOC的数据全集,因此重点介绍这两个年份的数据集。
PASCAL VOC2007数据集拥有9963张图片,这些图片被分为两部分:训练和验证(trainval)集、测试(test)集。其中,trainval部分有5011张图片,test部分有4952张图片,二者大约各占数据总量的50%。其中,trainval其实是train和validation的简称,训练集有2501张图片,验证集有2510张图片,二者大约各占trainval部分的50%。PASCAL VOC2007数据集的9963张图片含有24640个已标注的对象,平均每张图片大约包含2.5个对象。PASCAL VOC2007数据集的测试集在竞赛阶段是保密的,但随着时间的推移,测试集最终得以公开。
PASCAL VOC2012数据集拥有23080张图片,其中,trainval部分有11540张图片,test部分有11540张图片,二者各占数据总量的50%。训练集有5717张图片,验证集有5823张图片,二者大约各占trainval部分的50%。PASCAL VOC2012数据集的23080张图片含有54900个已标注的对象,由于测试集未公布,因此重点关注训练和验证集。训练和验证集有11540张图片,含有27450个已标注的对象,平均每张图片大约包含2.4个对象。PASCAL VOC2012数据集一直没有给出测试集。
PASCAL VOC2007数据集和PASCAL VOC2012数据集的对象总共分为20类,占比最高的为person。PASCAL VOC2007数据集的9963张图片和24640个已标注的对象,以及PASCAL VOC2012数据集的11540张图片和27450个已标注的对象,在训练集、验证集中的分布情况如图1-6所示。
图1-6 PASCAL VOC2007和PASCAL VOC2012数据集的对象统计情况
现在的目标检测和图像分割的研究基本上都是在PASCAL VOC2007和PASCAL VOC2012数据集基础上进行的。
⋘ 1.2.2 PASCAL VOC2007数据集探索
下面以PASCAL VOC2007数据集为例,介绍数据集的结构和内容。数据集一般有3个压缩包:训练和验证集压缩包,其文件名为VOCtrainval_06-Nov-2007.tar;测试集压缩包,其文件名为VOCtest_06-Nov-2007.tar;开发工具DevKit压缩包,其文件名为VOCdevkit_08-Jun-2007.tar。
以PASCAL VOC2007数据集的训练和验证集压缩包VOCtrainval_06-Nov-2007.tar为例,解压后有5个文件夹,如图1-7所示。
其中的Annotations文件夹中存放目标检测任务所需要的标注文件,标注文件是文本文件,文件名与图片名一一对应,文本内容以XML格式进行组织。ImageSets文件夹中包含3个子文件夹,分别为Layout、Main、Segmentation,其中,Main文件夹中存放的是分类和检测数据集分割文件。JPEGImages文件夹中存放JPG格式的图片文件。SegmentationClass文件夹中存放按照种类分割的标注图片。SegmentationObject文件夹中存放按照实例分割的标注图片。
图1-7 PASCAL VOC2007数据集结构
目标检测任务主要关注的是JPEGImages文件夹和Annotations文件夹。打开这两个文件夹,可以发现JPEGImages文件夹用于存放全部的图片,该文件夹中有5011张图片;Annotations文件夹用于存放全部的标注,该文件夹中有5011个存储了标注信息的XML文件;二者的文件名一一对应。图片文件夹和目标检测标注文件夹如图1-8所示。
图1-8 图片文件夹和目标检测标注文件夹
打开序号为42的图片,可以看到这是一张有两个火车头的图片,打开存储着目标检测标注信息的XML文件,也可以看到两个矩形框的绝对坐标值,它们用<object>和</object>关键字作为起止符号。根据这两个矩形框的绝对坐标值可以画出两个矩形框,如图1-9所示。
种类分割任务主要关注SegmentationClass文件夹。该文件夹中存放着用于种类分割任务的标注信息。打开该文件夹可以看到422张特殊图片。每张图片都可在JPEGImages文件夹中找到与其同名的图片。查看SegmentationClass文件夹中的这些图片,其每个像素点都代表种类的标注信息。显然,种类分割采用的是像素级别的标注,比目标检测对象标注的标注成本高得多。图片文件夹和种类分割标注文件夹如图1-10所示。
图1-9 图片文件和目标检测标注文件的对应关系
图1-10 图片文件夹和种类分割标注文件夹
根据PASCAL VOC系列数据集标准,不同种类的分割采用不同颜色进行区分。查看其中序号为42的图片,可以发现图片中火车部分的像素全部都被RGB像素值为[128,192,0]的颜色像素标记,而背景部分的像素全部都被标记为[0,0,0],如图1-11所示。
图1-11 图片文件和种类分割标注文件的对应关系
实际上,由于PASCAL VOC系列数据集一共有20个种类,加上背景分类合计21个种类,所以PASCAL VOC系列数据集采用21种RGB颜色组合。PASCAL VOC系列数据集的不同种类与颜色的对应关系表如表1-2所示。
表1-2 PASCAL VOC系列数据集的不同种类与颜色的对应关系表
实例分割任务主要关注SegmentationObject文件夹。该文件夹中存放着用于实例分割任务的标注信息。打开该文件夹可以看到422张特殊图片。每张图片都可在JPEGImages文件夹中找到与其同名的图片。查看SegmentationObject文件夹中的这些图片,其每个像素点都代表一个实例的标注信息,如图1-12所示。
图1-12 图片文件夹和实例分割标注文件夹
实例分割任务与种类分割任务的共同点是,它们的标注都是像素级别的;不同点是,对于实例分割任务而言,对每个种类的每个实例都要分别标注出来,但对于种类分割任务而言,只需要将同一种类的不同实例标注为一个种类即可。以序号为42的图片文件为例,虽然两列火车的火车头属于同一种物体,但分属于不同实例,因此也需要用不同颜色进行标注,如图1-13所示。
图1-13 图片文件和实例分割标注文件的对应关系
最后一个和三大任务无关的文件夹是ImageSets文件夹,该文件夹中不包含任何任务样本信息,只包含样本数据集的不同分割方式。ImageSets文件夹下有3个子文件夹:Layout、Main、Segmentation。其中的Main文件夹中有63个txt文件。
Main文件夹中的train.txt、val.txt和trainval.txt这3个文本文件中存储了整个数据集的3个子集的文件名索引。由于PASCAL VOC2007数据集拥有全部5011张图片,trainval.txt中存放了数据集全集的图片文件名,因此有5011个文件名。train.txt中存放了用于训练集的图片名(它是全集的一个子集),有2501行,指出用于训练的2501张图片的文件名。val.txt中存放了用于验证集的图片名(它也是全集的一个子集),有2510行,指出用于验证的2510张图片的文件名。PASCAL VOC数据集的拆分索引文件如图1-14所示。
图1-14 PASCAL VOC数据集的拆分索引文件
Main文件夹中其余的60个文本文件分别对应20个物体分类,每个分类有3个文件。3个文件名分别以类别名为前缀,命名规则为xxx_train.txt、xxx_val.txt和xxx_trainval.txt。例如,对于飞机这一分类,有aeroplane_train.txt、aeroplane_val.txt和aeroplane_trainval.txt这3个文件,分别指示飞机这个分类在训练集、验证集和全数据集内的哪些图片中出现。指示方式为:-1表示没有出现,1表示有出现,0表示只露出了一个部分。打开训练集关于飞机这一分类的数据集分割文档aeroplane_train.txt,从截取的文本片段看,在训练集的全部图片文件中,飞机只出现在序号为32、33的图片文件中。PASCAL VOC飞机分类的数据集拆分索引文件如图1-15所示。
SegmentationClass文件夹下有3个txt文件。SegmentationClass文件夹中的trainval.txt有422行,指示着全部的422张支持分割任务的图片(支持种类分割和实例分割的图片刚好都是422张)。其中的train.txt有209行,val.txt有213行,表示422张支持分割任务的图片中的209张图片用于训练,213张图片用于验证。支持分割任务的图片数据集拆分如图1-16所示。
Layout文件夹中的train.txt、val.txt和trainval.txt这3个文本文件中存储着Layout任务的相关文件名索引,目前使用较少。
图1-15 PASCAL VOC飞机分类的数据集拆分索引文件
图1-16 支持分割任务的图片数据集拆分