一、Introduction
Classification/Detection Competitions
Segmentation Competition
Action Classification Competition
ImageNet Large Scale Visual Recognition Competition
Person Layout Taster Competition
二、Data
三、VOC2012 VS. VOC2011
四、Development Kit
五、Test Data
六、分割数据集
1、VOC2012
2、SBD
3、如何得到训练集10582?
4、语义分割训练数据制作
七、参考资源
该数据集的主要目的是建立针对实际场景中的视觉目标进行识别的挑战任务。基于标注的图像数据,它是基本的有监督学习问题。数据集中总共有20类目标需要识别:
基于上述数据集,有三项视觉目标识别任务:分类(classification),检测(detection),分割(segmentation)。 ImageNet提供了另外一个大规模目标识别数据集,主要用于分类任务。此外,还有一个 Person Layout Taster 数据集,主要识别人体的头、手、脚的位置。
Classification: 给定一张测试图片,判别其中每一个目标所属类别,类别必须属于20类之一;
参赛者可以选择上述的任意一种挑战任务,处理任意类或者全部类目标,该挑战可以允许两类方法:
Segmentation: 给出图片中每一个像素所属的类别,否则就是背景类。
Action Classification: 判定静态图片中人的活动类别,总共10类。
参考ImageNet官网:http://www.image-net.org/challenges/LSVRC/2012/index
Person Layout: 预测人体部位的矩形框位置,主要是头,手,脚。
To download the training/validation data, see the Development Kit section.
VOC2012数据集主要是为了增加分割(segmentation)和动作分类(action classification)数据集的数量,classification/detection tasks没有增加标注数据集。下面列举了VOC2012 和 VOC2011的差别:
The development kit consists of the training/validation data, MATLAB code for reading the annotation data, support files, and example implementations for each competition.
The development kit is now available:
The test data will be made available according to the challenge timetable. Note that the only annotation in the data is for the action task and layout taster. As in 2008-2011, there are no current plans to release full annotation - evaluation of results will be provided by the organizers.
The test data can be downloaded from the evaluation server. You can also use the evaluation server to evaluate your method on the test data.
在学习语义分割系列算法时,经常会看到下面的一段话:
The original dataset contains 1 , 464 ( train), 1 , 449 ( val), and 1 , 456 ( test) pixel-level labeled images for training, validation, and testing, respectively. The dataset is augmented by the extra annotations provided by [29], resulting in 10, 582 ( trainaug) training images.
如上所示,通常语义分割涉及两个数据集官方PASCAL VOC 2012 和 SBD,相应的下载链接如下:
VOC2012:VOCtrainval_11-May-2012.tar(~2GB)
SBD:benchmark.tgz(~1.3G)
下载的官方 VOCtrainval_11-May-2012.tar 解压后,目录结构如上图所示,该部分只介绍用于分割的数据集。
ImageSets:该目录下Segmentation文件夹总共有三个文件,train.txt:训练集名字列表,1464个文件,val.txt:验证集名字列表,1449个文件,trainval.txt:训练集和验证集的集合,2913个文件。
JPEGImages:所有的原始图片,17125个文件,部分示例图片如下右图所示。
SegmentationClass:所有的标签图,2913个文件,部分示例图片如下左图所示。
通常语义分割论文使用的 trainaug dataset 是SBD和官方VOC2012合并而来,其中SBD数据集分布:8498 (train), 2857 (val)。
img:该目录包含了所有的原始图片,11355个JPG文件。
cls:该目录包含111355个mat标签文件,与img的JPG一一对应。每一个mat文件指定了类别和目标的边界,mat文件结构如下:
- GTcls.Segmentation is a single 2D image containing the segmentation. Pixels that belong to
category k have value k, pixels that do not belong to any category have value 0.
- GTcls.Boundaries is a cell array. GTcls.Boundaries{k} contains the boundaries of the k-th category.
These have been stored as sparse arrays to conserve space, so make sure you convert them to full arrays
when you want to use them/visualize them, eg : full(GTcls.Boundaries{15})
- GTcls.CategoriesPresent is a list of the categories that are present.
inst:该目录的每一个mat文件包含了像素级分割和边界标签,mat文件结构如下:
- GTinst.Segmentation is a single 2D image containing the segmentation. Pixels belonging to the
i-th instance have value i.
- GTinst.Boundaries is a cell array. GTinst.Boundaries{i} contains the boundaries of the i-th instance.
Again, these are sparse arrays.
- GTinst.Categories is a vector with as many components as there are instances. GTinst.Categories(i) is
the category label of the i-th instance.
如上面陈述,通常 trainaug 的数量为10582,该数字获取方式如下:
VOC数据集分布:
SBD数据集分布:
通过对比其中图片文件名重合情况(具体如何比对,可以写代码或者直接文件复制粘贴),可以得到:
sbd_train(8498) = 和voc_train重复的图片(1133) + 和voc_val重复的图片(545) + sbd_train真正补充的图片(6820)
sbd_val(2857) = 和voc_train重复的图片(1) + 和voc_val重复的图片(558) + sbd_val真正补充的图片(2298)
所以可以得到的最大的扩充数据集应为:
12031张标注图 = voc_train(1464) + voc_val(1449) + sbd_train真正补充的图片(6820) + sbd_val真正补充的图片(2298)
用原来的voc_val(1449)作为验证集,剩下的12031-voc_val(1449)=10582都可以用作训练,就是trainaug(10582)。
该部分主要介绍如何制作用于语义分割的训练数据制作,制作的基本流程如下:
(a)VOC2012 标签制作
下面左图为原始图片,中间的图是官方提供的标注图,参考 download_and_convert_voc2012.sh,可以将中间的图片处理为右边的图片。右图中,背景像素值为 0,人的区域像素值为 15(人属于第15类),飞机区域的像素值为 1(飞机为第1类)。
(b)SBD mat 数据转换
数据转换工具 Mat2PNG,可以将mat标签转为灰度图,具体命令为:
python mat2png.py $DATASETS/VOC_aug/dataset/cls $DATASETS/VOC_aug/dataset/cls_png
(c)合并数据集
参考(3、如何得到训练集10582?)中介绍,合并后的名字列表为trainval.txt,也可以从(b)中的链接中直接下载名字列表。
(d)生成TFRecord
参考TensorFlow官网代码 build_voc2012_data.py,可以生成相应的TFRecord文件。