一、介绍
VOC 数据是 PASCAL VOC Challenge 用到的数据集,官网:http://host.robots.ox.ac.uk/pascal/VOC/
备注:VOC数据集常用的均值为:mean_RGB=(122.67891434, 116.66876762, 104.00698793)
Pytorch 上通用的数据集的归一化指标为:mean=(0.485, 0.456, 0.406) , std=(0.229, 0.224, 0.225)
voc2012 官网:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/
VOC2012 数据集一共分为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挑战赛主要包括以下几类:图像分类(Object Classification),目标检测(Object Detection),目标分割(Object Segmentation),行为识别(Action Classification) 等。
-
图像分类与目标检测任务
-
分割任务
注意,图像分割一般包括语义分割、实例分割和全景分割,实例分割是要把每个单独的目标用一种颜色表示(下图中间的图像),而语义分割只是把同一类别的所有目标用同一颜色表示(下图右侧的图片)。
-
行为识别任务
-
人体布局检测任务
二、文件夹介绍
Annotations
这个文件夹内主要存放了数据的标签,里面包含了每张图片的bounding box信息,主要用于目标检测。
ImageSets
用于存放不同任务的划分的数据集。
-
Action:文件夹中包含10类常见的人体动作 {jumping, phoning, playinginstrument, reading, ridingbike, ridinghorse, running, takingphoto, usingcomputer. walking}。 一共包含33个关于样本划分的文本文件。每个文件中一共有三列,依次为图片的名称、图片中object的index、label{1:正类样本, -1:负类样本}。
-
Layout:用于预测人体的头、手、脚这三部分的bbox,并对bbox内的object分类。各文本文件都有2列,依次表示:图片名称、图片包含的人数。
-
Main:包含63个文本文件,其中20个类的划分文件 [class_train.txt, class_trainval.txt, class_val.txt],外加以一组全局样本的 [train.txt, trainval.txt, val.txt] 划分文件。每个文件都有两列:文件名、label[1:表示正类样本,-1:表示负类样本]。
-
Segmentation:只包含一组 [train.txt, trainval.txt, val.txt] 文件,各文件只有1列,为图片名称。
JPEGImages
这里存放的就是JPG格式的原图,包含17125张彩色图片,但只有一部分(2913张)是用于分割的。
SegmentationClass
语义分割任务中用到的label图片,PNG格式,共2913张,与原图的每一张图片相对应。
SegmentationObject
实例分割任务用到的label图片,在语义分割中用不到。
其余的具体可以查看 【目标检测数据集】VOC2007 数据集介绍 里面对每个文件的介绍
三、Augmented dataset
VOC 的 Augment dataset 也叫作SBD。
数据集介绍
增强版的VOC跟原版没什么区别,只是增加了数据。
-
img: 增强版的原图,共11355张图片
-
cls: 用于语义分割的label,共11355个.mat文件,每个.mat文件对应一张原图
-
inst: 用于实例分割的label,也是11355个.mat文件
-
tools: 3个用于数据转换的脚本,在后面数据转换时用到
-
train.txt: 训练集索引
-
val.txt: 验证集索引
数据集使用
数据转换
label 是 .mat 格式的文件,需要将其转换为 .png 格式的图片,转化后的图片是8-bit的灰度图。
# 在 benchmark_RELEASE 目录下创建一个名为 cls_png 的目录用于存放转化后的 png图片
# 在 benchmark_RELEASE 目录下执行 mat2png.py 脚本
python tools/mat2png.py cls cls_png
原始 label 为三通道RGB图像,为了统一,需要将其转化为8-bit的灰度png图像。
# 在 VOCdevkit/VOC2012 目录下创建一个名为 SegmentationClass_1D 的文件夹用于存放转化后的图片
# 将 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 数据集和增强版的数据集合并到一起。
目前已有数据文件如下:
-
VOCdevkit/VOC2012 为原始 PASCAL VOC 2012 数据集
images 数据集的文件名为:JPEGImages,共17125张图片(其中2913张用于分割)
labels 数据集文件名为:SegmentationClass_1D,共2913张图片
-
benchmark_RELEASE 为增强数据集
images 数据集的文件名为:img,共11355张图片
labels 数据集文件名为:cls_png,共11355张图片
将 JPEGImages 中用于分割的2913张图片拷贝到 img 目录下,将 SegmentationClass_1D 中的2913张图片拷贝到cls_png 目录下,如遇到重复,替换即可。
四、数据下载
【目标检测数据集】VOC2012 数据集与 SBD dataset 介绍
五、链接作者
欢迎关注我的公众号:@AI算法与电子竞赛
硬性的标准其实限制不了无限可能的我们,所以啊!少年们加油吧!