【记录】PASCAL VOC数据集分析

前言:

做深度学习目标检测方面的同学一定会接触到PASCAL VOC数据集,前阵子准备按照它的格式准备自己的数据集。这里就来详细的记录一下PASCAL VOC的格式,包括目录构成以及各个文件夹的内容格式。

正文:

  • 相关网址:
    官方数据集网址
    各大算法的Leaderboards
  • 常用搭配:
    • train2007 + val2007 + test2012
    • train2007+2012 + val2007+2012 + test2012

VOCdevkit 文件夹:

结构图

└─VOC2007
    ├─Annotations
    ├─ImageSets
    │  ├─Layout
    │  ├─Main
    │  └─Segmentation
    ├─JPEGImages
    ├─SegmentationClass
    └─SegmentationObject

必需的文件夹只有三个

└─VOC2007
    ├─Annotations
    ├─ImageSets
    │  ├─Main
    ├─JPEGImages
  • Annotations 文件夹里放置的是xml格式的标注文件,该文件是对图片的解释,每张图片都对于一个同名的xml文件。
  • Main 文件夹里文件夹存放的是txt文件,存放的是各分类的正负样本的属性和文件名,以及总的文件名。
  • JPEGImages 文件夹里存放的是.jpg格式的图片。

(可选): 在做分割问题的时候 还会用到另外几个文件夹

  • SegmentationClass SegmentationObject 这两个文件夹下保存了物体分割后的图片,在物体识别中不会用到。
  • Layout 是个预测人体部位的bbox和label的任务
  • ImageSets 存放的是每一种类型的challenge对应的图像数据。

Annotations 文件夹

文件夹下的xml主要介绍了对应图片的基本信息,如来自那个文件夹、文件名、来源、图像尺寸以及图像中包含哪些目标以及目标的信息等等,但是有些信息其实并不是必需的。内容如下:

<annotation>
        <folder>VOC2007folder>								# 文件夹
        <filename>662529_134_2.jpgfilename>		# 文件名
        <source>TianChi Datasource>							# 文件来源,可随意填写
        <size>													# 图片的长宽和通道数
                <width>512width>
                <height>512height>
                <depth>3depth>
        size>
        <segmented>0segmented>								# 是否用于分割,0表示否,1表示是
        <object>												# 每个目标用一个object来描述
                <name>nodulename>								# 类别名
                <pose>Unspecifiedpose>						# 拍摄角度
                <truncated>0truncated>						# 是否被截断 0表示完整
                <difficult>1difficult>						# 是否难以识别 0表示容易识别
                <bndbox>										# 左上角点和右下角点的像素坐标
                        <xmin>217xmin>
                        <ymin>318ymin>
                        <xmax>225xmax>
                        <ymax>327ymax>
                bndbox>
        object>
        <object>												# 多个目标时重复添加object模块即可
                <name>nodulename>
                <pose>Unspecifiedpose>
                <truncated>0truncated>
                <difficult>1difficult>
                <bndbox>
                        <xmin>168xmin>
                        <ymin>242ymin>
                        <xmax>174xmax>
                        <ymax>247ymax>
                bndbox>
        object>
annotation>

在制作xml的时候发现不一定需要使用xml等函数库,直接使用自带的open() 和file.write()来写入,使用\t, \n来缩进和换行即可。

JPEG 文件夹

JPEGImages文件夹中包含了PASCAL VOC所提供的所有的图片信息,包括了训练图片和验证图片。
【记录】PASCAL VOC数据集分析_第1张图片
这些图像都是以“年份_编号.jpg”格式命名的。
图片的像素尺寸大小不一,但是横向图的尺寸大约在500*375左右,纵向图的尺寸大约在375*500左右,
基本不会偏差超过100。(在之后的训练中,第一步就是将这些图片都resize到300*300或是500*500,所有原始图片不能离这个标准过远。)
这些图像就是用来进行训练和测试验证的图像数据。
JPEGImages文件夹和Annotations文件夹的映射关系是单射但非满射
【记录】PASCAL VOC数据集分析_第2张图片

即 在Annotations下有标注文件,则在JPEGImages文件夹下 必须要有与其对应的同名图片,反之,JPEGImages可以有冗余的图片,即使在Annotations里找不到它的标注文件,在大部分的代码里都是可以正常运行的。

Main 文件夹

Main文件夹是在ImageSets文件夹下的一个子文件夹,表示主任务的意思,其他文件夹在其他检测或分割时才会用到,在普通的目标检测中,属于可有可无的文件。
其中Action下存放的是人的动作(例如running、jumping等等,这也是VOC challenge的一部分)
Layout下存放的是具有人体部位的数据(人的head、hand、feet等等,这也是VOC challenge的一部分)
Main下存放的是图像物体识别的数据,总共分为20类。
Segmentation下存放的是可用于分割的数据。

  • Main 文件夹
    Main文件夹下包含了各分类的***_train.txt、***_val.txt和***_trainval.txt。还有所有的train.txt, val.txt, trainval.txt
    这些txt中的内容都差不多如下:(test系列可以没有)
    【记录】PASCAL VOC数据集分析_第3张图片
    前面的表示图像的name,后面的1代表正样本,-1代表负样本。
    需要保证的是train和val两者没有交集,也就是训练数据和验证数据不能有重复,在选取训练数据的时候 ,也应该是随机产生的。
    其中包含的train.txt以及trainval.txt等文件内容与上面类似。不过train.txt和trainval.txt四个文件的内容中光有图片的名字,末尾没有标注正负1.

SegmentationClass和SegmentationObject

这两个文件夹下保存了物体分割后的图片。只做检测问题时可以忽略这两个文件夹。
【记录】PASCAL VOC数据集分析_第4张图片

你可能感兴趣的:(【记录】PASCAL VOC数据集分析)