PASCAL VOC 2012 数据集详解

{TOC}

在目标检测中,如果对数据不了解,在数据集处理这块有时候会看得云里雾里。比如

  1. trainval 这个词到底指什么
  2. 标签中的 bbox 中的 ymax, xmax, ymin, xmin 取值范围是多少,如何计算的?
  3. 图片与标签是如何关联起来的等等

本文的目的:

  1. 明白数据集是如何组织的
  2. TensorFlow 是如何对数据做处理的。

数据集详解

在目标检测中,主要用到了 Annotations,ImageSets,JPEGImages

其中 ImageSets/Main/ 保存了具体数据集的索引,Annotations 保存了标签数据, JPEGImages 保存了图片内容。

ImageSets

ImageSets/Main/ 文件夹以 , {class}_trainval.txt {class}_val.txt 的格式命名。 train.txt val.txt 例外

包括 Action,Layout,Main,Segmentation 四个文件夹

  1. Action:存放的是人的动作(例如running、jumping等等,这也是VOC challenge的一部分)
  2. Layout:存放的是具有人体部位的数据(人的head、hand、feet等等,这也是VOC challenge的一部分
  3. Main:存放的是图像物体识别的数据,总共分为20类。
  4. Segmentation:存放的是可用于分割的数据。

ImageSets/Main/ 文件夹以 , {class}_trainval.txt {class}_val.txt 的格式命名。 train.txt val.txt 例外

aeroplane_train.txt
aeroplane_trainval.txt
aeroplane_val.txt
bicycle_train.txt
bicycle_trainval.txt
bicycle_val.txt
bird_train.txt
bird_trainval.txt
bird_val.txt
boat_train.txt
boat_trainval.txt
boat_val.txt
bottle_train.txt
bottle_trainval.txt
bottle_val.txt
bus_train.txt
bus_trainval.txt
bus_val.txt
car_train.txt
car_trainval.txt
car_val.txt
cat_train.txt
cat_trainval.txt
cat_val.txt
chair_train.txt
chair_trainval.txt
chair_val.txt
cow_train.txt
cow_trainval.txt
cow_val.txt
diningtable_train.txt
diningtable_trainval.txt
diningtable_val.txt
dog_train.txt
dog_trainval.txt
dog_val.txt
horse_train.txt
horse_trainval.txt
horse_val.txt
motorbike_train.txt
motorbike_trainval.txt
motorbike_val.txt
person_train.txt
person_trainval.txt
person_val.txt
pottedplant_train.txt
pottedplant_trainval.txt
pottedplant_val.txt
sheep_train.txt
sheep_trainval.txt
sheep_val.txt
sofa_train.txt
sofa_trainval.txt
sofa_val.txt
train.txt
train_train.txt
train_trainval.txt
train_val.txt
trainval.txt
tvmonitor_train.txt
tvmonitor_trainval.txt
tvmonitor_val.txt
val.txt
  1. {class}_train.txt 保存类别为 class 的训练集的所有索引,每一个 class 的 train 数据都有 5717 个。
  2. {class}_val.txt 保存类别为 class 的验证集的所有索引,每一个 class 的val数据都有 5823 个
  3. {class}_trainval.txt 保存类别为 class 的训练验证集的所有索引,每一个 class 的val数据都有11540 个

每个文件包含内容为

2011_003194 -1
2011_003216 -1
2011_003223 -1
2011_003230  1
2011_003236  1
2011_003238  1
2011_003246  1
2011_003247  0
2011_003253 -1
2011_003255  1
2011_003259  1
2011_003274 -1
2011_003276 -1

注:1代表正样本,-1代表负样本。

VOC2012/ImageSets/Main/train.txt 保存了所有训练集的文件名,从 VOC2012/JPEGImages/ 找到文件名对应的图片文件。VOC2012/Annotations/ 找到文件名对应的标签文件

VOC2012/ImageSets/Main/val.txt 保存了所有验证集的文件名,从 VOC2012/JPEGImages/ 找到文件名对应的图片文件。VOC2012/Annotations/ 找到文件名对应的标签文件

读取 JPEGImages 和 Annotation 文件转换为 tf 的 Example 对象,写入 {train|test}{index}_of{num_shard} 文件。每个文件写的 Example 的数量为 total_size/num_shard。(不同数据集可以适当调节 num_shard 来控制每个输出文件的大小)

Annotations

文件夹中文件以 {id}.xml (id 保存在 VOC2012/ImageSets/Main/文件夹 ) 格式命名的 xml 文件,保存如下关键信息

  1. 物体 label : name ,如下例子为 person
  2. 图片尺寸: depth, height, width
  3. 物体 bbox : bndbox 下 xmax, xmin, ymax, ymin
    <annotation>
        <filename>2009_001137.jpg</filename>
        <folder>VOC2012</folder>
        <object>
            <name>person</name>
            <bndbox>
                <xmax>355</xmax>
                <xmin>187</xmin>
                <ymax>334</ymax>
                <ymin>121</ymin>
            </bndbox>
            <difficult>0</difficult>                //目标是否难以识别(0表示容易识别)
            <occluded>0</occluded>
            <pose>Unspecified</pose>                //拍摄角度
            <truncated>0</truncated>                //是否被截断(0表示完整)
        </object>
        <object>
            <name>pottedplant</name>
            <bndbox>
                <xmax>500</xmax>
                <xmin>376</xmin>
                <ymax>261</ymax>
                <ymin>1</ymin>
            </bndbox>
            <difficult>0</difficult>
            <occluded>1</occluded>
            <pose>Unspecified</pose>
            <truncated>1</truncated>
        </object>
        <segmented>1</segmented>
        <size>
            <depth>3</depth>
            <height>334</height>
            <width>500</width>
        </size>
        <source>
            <annotation>PASCAL VOC2009</annotation>
            <database>The VOC2009 Database</database>
            <image>flickr</image>
        </source>
    </annotation>

JPEGImages

以 2009_001137.jpg 为例,解码之后获取 image_data(图片内容的二进制),height, width

数据集转换为 TF Record

以上面例子为例,最终的 TFRecord 为

TF Example 
{
'filename' : 'VOC{year}/JPEGImages/{id}.jpg'
'height' :  height
'width' :   width
'classes' : [classes.index(person), classes.index(person)]
'y_mins' : [float(121)/334, float(1)/334]  # 各个 object 的  ymin
'x_mins' : [float(187)/500, float(376)/500]
'y_maxes' : [float(334)/334, float(261)/334]
'x_maxes' : [ float(355)/500, float(500)/500]
'encoded' : '图片内容二进制'
}

其中

classes = [
    "aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat",
    "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person",
    "pottedplant", "sheep", "sofa", "train", "tvmonitor"
]

注:difficult = 1 的直接跳过,不进行处理。

以上为将一张图片及标签转为 TF Example,对于整个数据集,依次遍历数据集即可。

  • 14
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
### 回答1: Pascal VOC 2012数据集是一个广泛使用的计算机视觉数据集,包含20个物体类别的图像数据和标注数据。你可以从Pascal VOC官方网站(http://host.robots.ox.ac.uk/pascal/VOC/voc2012/)下载该数据集。 在网站上,你可以找到Pascal VOC 2012数据集的图片、标注和其他相关文件的下载链接。你需要先注册一个账户,然后接受用户协议,才能开始下载数据集。下载完成后,你可以使用各种计算机视觉工具和库来处理和分析这些图像和标注数据,例如OpenCV、TensorFlow和PyTorch等。 ### 回答2: Pascal VOC2012数据集是计算机视觉领域中非常著名的数据集。该数据集包含了超过11,000张图像,每张图片都以及其对应的对象边框和类别标签。这个数据集是通过对图像进行分类、目标检测、语义分割等任务的评测,成为了视觉任务领域中一个标准的基准数据集。在研究和开发计算机视觉算法和模型时,使用该数据集能够使研究者们更加高效地进行工作。 要下载Pascal VOC2012数据集,可以先访问它的官方网站(http://host.robots.ox.ac.uk/pascal/VOC/)下载对应的图像和标注文件。但是,由于该数据集较大,因此在下载过程中可能会遇到下载速度较慢或下载不完整的问题。因此,研究者们可以从一些国内的镜像站点下载Pascal VOC2012数据集。其中常用的镜像站点包括清华大学镜像站、网易镜像站、中科大镜像站等。 在下载完成之后,我们需要了解如何使用Pascal VOC2012数据集。对于分类任务,我们可以使用图像和其对应的标签进行模型训练。对于目标检测任务,我们需要使用图像的目标边框和类别标签,并且通过目标检测算法对目标进行检测和定位。而对于图像分割任务,则需要使用图像中的像素级别的标注信息,并通过语义分割算法对图像进行分割。 总之,Pascal VOC2012数据集是计算机视觉领域中一个重要的基准数据集,对于提升计算机视觉技术的发展和实践都具有重要的意义。 ### 回答3: Pascal VOC数据集是计算机视觉领域内最著名的数据集之一,包含各种视觉任务,比如目标检测、分类、语义分割等。其中,Pascal VOC2012是该数据集的最新版本,包含了20个物体类别和多个实例级别标注,是做目标检测、图像分割等任务的重要数据源之一。 要下载Pascal VOC2012数据集,首先需要访问Pascal VOC的官网(http://host.robots.ox.ac.uk/pascal/VOC/),然后点击左侧的‘downloads’菜单进入下载页面。在下载页面中,可以找到训练数据集和验证数据集的下载链接,分别是: 1.训练数据集:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar 2.验证数据集:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtest_11-May-2012.tar 需要注意的是,Pascal VOC2012数据集的下载并不是免费的,下载之前需要先申请一个账户并缴纳一些费用,具体费用可以在官网上查询。 下载完成后,可以通过解压缩获得VOCdevkit文件夹,里面包含了训练数据集、验证数据集和标注文件等。其中,训练数据集包含一万多张图片,大约有50万个标注,验证数据集包含2,837张图片,没有标注信息。标注文件中包含了每张图片目标的名称、位置、类别等信息,可以用于训练/测试目标检测、分类、语义分割等模型。 总之,Pascal VOC2012数据集的下载是一个费时费力的过程,但是获得的数据集对于深度学习研究人员和开发者来说是非常重要的。它可以帮助我们训练出更加准确、鲁棒的模型,同时也有助于我们了解计算机视觉领域的最新进展和研究方向。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值