PASCAL VOC 2012数据集及其增强版介绍
Pascal voc 2012数据集可以用于分类、检测和分割。这篇文章主要介绍其在语义分割任务上的使用。原始的Pascal voc 2012数据集仅仅包含1464个训练数据集,然而在很多paper上,大家都使用了包含10582个训练集的增强版数据集进行训练,因此,这篇文章将会详细介绍原版和增强版的Pascal voc 2012数据集以及它们的使用方法。
数据集下载
- PASCAL VOC 2012
下载后的文件目录如下:
+ VOCdevkit
+ VOC2012
+ Annotations
+ ImageSets
+ JPEGImages
+ SegmentationClass
+ SegmentationObject
- Augmented PASCAL VOC
这里提供的是我的网盘下载地址,提取码:fg3e。下载后的文件目录如下:
+ benchmark_RELEASE
+ cls
+ img
+ inst
+ tools
train.txt
val.txt
数据集介绍
PASCAL VOC 2012
VOC 2012数据集分为20类,算上背景一共21类,分别如下:
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
在分割任务上,需要用到原始图像和对应的标签。语义分割任务对同一类的物体在label上都填充都有一个特定的颜色,一共20种颜色,比如摩托车用蓝色表示,人用红色表示。
更详细的介绍可以查看该数据集的官网:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html,接下来主要介绍下载的目录中每个文件夹都是做什么的,我们主要用到下面加粗的文件目录。
- Annotations: 这个文件夹内主要存放了数据的标签,里面包含了每张图片的bounding box信息,主要用于目标检测,这里不做过多介绍。
- ImageSets: ImageSets中的Segmentation目录下存放了用于分割的train, val, trainval数据集的索引。
- JPEGImages: 这里存放的就是JPG格式的原图,包含17125张彩色图片,但只有一部分(2913张)是用于分割的。
- SegmentationClass: 语义分割任务中用到的label图片,PNG格式,共2913张,与原图的每一张图片相对应。
- SegmentationObject: 实例分割任务用到的label图片,在语义分割中用不到,这里不详解介绍。
Augmented PASCAL VOC
增强版的VOC跟原版没什么区别,只是增加了数据。下面还是一一介绍下载的文件夹中每个文件的作用。
- img: 增强版的原图,共11355张图片
- cls: 用于语义分割的label,共11355个.mat文件,每个.mat文件对应一张原图
- inst: 用于实例分割的label,也是11355个.mat文件
- tools: 3个用于数据转换的脚本,在后面数据转换时用到
- train.txt: 训练集索引
- val.txt: 验证集索引
数据集使用
大多数paper中使用的数据集是以上两个数据集的融合,因此,在这部分将要介绍如何融合以上两个数据集来训练。
数据转换
由于pascal voc 2012增强版的数据集的label是.mat格式的文件,需要将其转换为.png格式的图片。转化后的图片是8-bit的灰度图。
1)在benchmark_RELEASE目录下创建一个名为cls_png的目录用于存放转化后的png图片
2)在benchmark_RELEASE目录下执行mat2png.py脚本
python tools/mat2png.py cls cls_png
原始pascal voc 2012数据集中label为三通道RGB图像,为了统一,我们也将其转化为8-bit的灰度png图像。
1)在VOCdevkit/VOC2012目录下创建一个名为SegmentationClass_1D的文件夹用于存放转化后的图片
2)将benchmark_RELEASE/tools目录下的convert_labels.py和utils.py脚本拷贝到VOCdevkit/VOC2012目录下,并执行convert_labels.py脚本
python convert_labels.py SegmentationClass ImageSets/Segmentation/trainval.txt SegmentationClass_1D
数据融合
现在,我们将原始的PASCAL VOC 2012数据集和增强版的数据集合并到一起。目前已有数据文件如下:
1.VOCdevkit/VOC2012为原始PASCAL VOC 2012数据集
- images数据集的文件名为:JPEGImages,共17125张图片(其中2913张用于分割)
- labels数据集文件名为:SegmentationClass_1D,共2913张图片
2.benchmark_RELEASE为增强数据集
- images数据集的文件名为:img,共11355张图片
- labels数据集文件名为:cls_png,共11355张图片
将JPEGImages中用于分割的2913张图片拷贝到img目录下(写个简单的脚本就可实现),将SegmentationClass_1D中的2913张图片拷贝到cls_png目录下,如遇到重复,替换即可。
重命名文件夹
将融合后的img文件名重命名为JPEGImages,共12031张原始JPG图片
将融合后的cls_png文件名重命名为SegmentationClassAug,共12031张PNG标签图片
生成索引文件
整个数据集可分为train, val, trainval, test。需要有索引文件来指定某个样本属于哪个集,因此最后还需要得到每个数据集的索引文件,可以写个简单的脚本生成。也可以在我这里直接下载。https://pan.baidu.com/s/1e_dKDtwl3Gx7-qUsuot7yg 提取码:jn4x