机器学习(7) PASCAL VOC2012数据集

来源:互联网 发布:java怎样输出数组 编辑:程序博客网 时间:2024/05/29 02:26

因为最近在做语义分割,需要用到这个数据集。而通过对于官网的查看和了解,发现这个数据集的用途非常的多,特此详细记录一下。

下载地址:点击下载


这个数据集的文件目录如下:

  • Annotation
    • *.xml
  • ImageSets
    • Action
      • *_train.txt
      • *_trainval.txt
      • *_val.txt
    • Layout
      • train.txt
      • trainval.txt
      • val.txt
    • Main
      • *_train.txt
      • *_trainval.txt
      • *_val.txt
    • Segmentation
      • train.txt
      • trainval.txt
      • val.txt
  • JPEGImages
    • *.jpg
  • SegmentationClass
    • *.png
  • SegmentationObject
    • *.png

Annotation

Annotations文件夹中存放的是xml格式的标签文件,每一个xml文件都对应于JPEGImages文件夹中的一张图片。格式如下,我们以2007_000033.xml为例。

这里写图片描述

<annotation>    <folder>VOC2012</folder>    <filename>2007_000033.jpg</filename>   //文件名    <source>                               //文件来源        <database>The VOC2007 Database</database>        <annotation>PASCAL VOC2007</annotation>        <image>flickr</image>    </source>    <size>                       //图片的长,宽,通道数        <width>500</width>        <height>366</height>        <depth>3</depth>    </size>    <segmented>1</segmented>     //可否用于语义分割任务,1表示可以,也就是这张图片在SegmentationClass/Object里面有    <object>                     //检测的目标,如果有多个会有多个<object>标签        <name>aeroplane</name>   //目标类别        <pose>Unspecified</pose> //拍摄角度        <truncated>0</truncated> //是否被截断, 0表示完整          <difficult>0</difficult> //目标是否难以识别, 0表示容易识别         <bndbox>                 //bounding-box, 包含左下角和右上角xy坐标            <xmin>9</xmin>            <ymin>107</ymin>            <xmax>499</xmax>            <ymax>263</ymax>        </bndbox>    </object>    <object>        <name>aeroplane</name>        <pose>Left</pose>        <truncated>0</truncated>        <difficult>0</difficult>        <bndbox>            <xmin>421</xmin>            <ymin>200</ymin>            <xmax>482</xmax>            <ymax>226</ymax>        </bndbox>    </object>    <object>        <name>aeroplane</name>        <pose>Left</pose>        <truncated>1</truncated>        <difficult>0</difficult>        <bndbox>            <xmin>325</xmin>            <ymin>188</ymin>            <xmax>411</xmax>            <ymax>223</ymax>        </bndbox>    </object></annotation>

ImageSets

ImageSets存放的是每一种类型的challenge对应的图像数据。
ImageSets下的四个文件夹:

  • Action下存放的是人的动作(running、jumping等等)
  • Layout下存放的是人体部位(head、hand、feet等等)
  • Main下存放的是图像物体识别的数据,总共分为20类。
  • Segmentation下存放的是可用于分割的图片的编号。

*_train中存放的是训练集的图片编号。
*_val中存放的是验证集的图片编号。
*_trainval是上面两者的合并集合。
train和val包含的图片没有交集。


JPEGImages

JPEGImages文件夹中包含了PASCAL VOC所提供的所有的图片,共有17125张。图片均以“年份_编号.jpg”格式命名。图片的尺寸大小不一,所以在后面训练的时候需要对图片进行resize操作。具体resize方式可以看最下面github链接里data.py(觉得好的话拜托star一下~)

这里写图片描述

SegmentationClass

这里面包含了2913张图片,每一张图片都对应JPEGImages里面的相应编号的图片。这里面的图片的像素颜色共有20种,对应20类物体。比如所有飞机都会被标为红色。

这里写图片描述


SegmentationObject

这里面同样包含了2913张图片,图片编号都与Class里面的图片编号相同。这里面的图片和Class里面图片的区别在于,这是针对Object的。在Class里面,一张图片里如果有多架飞机,那么会全部标注为红色。而在Object里面,同一张图片里面的飞机会被不同颜色标注出来。

这里写图片描述


AlexNet转成FCN进行segmentation task的代码实现:

原创粉丝点击