PASCAL VOC 2012数据集及其增强版介绍

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

PASCAL VOC 2012数据集及其增强版介绍_第1张图片
在分割任务上,需要用到原始图像和对应的标签。语义分割任务对同一类的物体在label上都填充都有一个特定的颜色,一共20种颜色,比如摩托车用蓝色表示,人用红色表示。
PASCAL VOC 2012数据集及其增强版介绍_第2张图片PASCAL VOC 2012数据集及其增强版介绍_第3张图片
更详细的介绍可以查看该数据集的官网: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

你可能感兴趣的:(PASCAL VOC 2012数据集及其增强版介绍)