点击上方↑↑↑“OpenCV学堂”关注我
关注可学习更多的OpenCV教程。 问题或建议,请公众号留言; 如果你觉得文章对你有帮助,欢迎转发支持
概述
Pascal VOC2012作为基准数据之一,在对象检测、图像分割网络对比实验与模型效果评估中被频频使用,但是如果没有制作过此格式的数据集就会忽略很多细节问题,今天我们一起来从头到尾扒一扒Pascal VOC2012 数据集各种细节问题。
Pascal VOC2012数据集主要是针对视觉任务中监督学习提供标签数据,它有二十个类别:
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
主要有四个大类别,分别是人、常见动物、交通车辆、室内家具用品。主要为图像分类、对象检测识别、图像分割三类任务服务。
图像分类与检测
分类:在测试图像预测是否为二十个分类之一,正确分类
检测:在测试图像上预测二十个分类对象的有无与位置信息
图像分割
分割:对每个对象与类别生成像素级别的分割标签,确定像素是为目标20个分类或者背景。
此外Pascal VOC还提供一些很有意思的标注数据包括行为识别、人体Layout分析等。
行为识别数据:预测图像中人的行为动作
Person Layout标注,检测人与其各个身体组成部分,如果手、脚、头等
数据集结构与描述
Pascal VOC2012的文件结构如下:
Annotations
里面是图像对应的XML标注信息描述,每张图像有一个与之对应同名的描述XML文件,XML前面部分声明图像数据来源,大小等元信息,举例如下:
上面表示图像对应路径为VOC2012/JPEGImages/2007_000033.jpg,来自flickr网站上,大小为WxHxC=500x366x3,是三通道的彩色图像,其中segmented为1有分割标注,0表示没有分割标注。后面的是对象检测的每个BOX标签信息极其描述信息,图示如下:
其中每个object标签是表示单独的box信息与对象描述,一张图像可以有多个object标签(boxes),
-name 表示对象类别
-pose 表示采用是从什么视角,常见的有Left、Right、Frontal、rear,
-difficult 是否被标记为很难识别对称,0表示不是,1表示是
-truncated 是否被标记为截断,0表示没有,1表示是
-Bndbox 标签描述box框在图像上的 位置
ImageSets
里面是标注类别的每个文件列表信息,Action中是所有具有Action标注信息图像文件名的txt文件列表,Layout中的txt文件表示包含Layout标注信息的图像文件名列表,Main文件夹中包含20个类别每个类别一个txt文件,每个txt文件都是包含该类别的图像文件名称列表,Segmentation则是包含语义分割信息图像文件的列表。
train.txt表示是的训练数据集合 val.txt 表示验证集数据 trainval.txt表示训练与验证集数据 test.txt表示测试集数据
Pascal VOC2012 Main中统计的训练、验证、验证与训练、测试图像如下:
可以看出训练图像有5717张,目标数13609个。
在main中针对每个类别都有个三个文件,分别为:
CLASSNAME_train.txt CLASSNAME_trainval.txt CLASSNAME_val.txt
以CLASSNAME = aeroplane为例,main中的三个文件分别为:
aeroplane_train.txt aeroplane_trainval.txt aeroplane_val.txt
每个类别txt文件里面的内容格式为
图像文件名 + 空格 + 标记,以aeroplane_train.txt中的举例如下:
2008_000290 0 2008_000291 1 2008_000297 -1
其中2008_000290、2008_000291、2008_000297表示三张图像文件名
0 表示图像中包含aeroplane对象但是难识别样本 1 表示图像中包含aeroplane -1 表示图像中不包含aeroplane
JPEGImages
所有的原始图像文件,格式必须是JPG格式,这个要特别注意!如果你打算使用VOC2012格式生成数据,那么原始图像格式在采样时候请用JPG格式保存,避免后期生成使用tensorflow工具生成的时候出错。
SegmentationClass
所有分割的图像标注,分割图像安装每个类别标注的数据
SegmentationObject
所有分割的图像标注,分割图像安装每个类别每个对象不同标注的数据
性能评价
对象检测类任务的性能评价是基于AP/AR 根据精度召回曲线计算mAP,相关阅读参考之前的文章即可:
图像分割类任务的性能评价是基于图像的平均分割精度,即20个类别与背景类别的分割计算得到:
标注制作
我喜欢用的制作VOC2012数据集的标注工具为labelImg
简单好用,自动生成VOC2012 Annotation XML文件。
更多数据标注与数据集制作工具参考之前的文章:
参考资料
http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html