转自:https://blog.csdn.net/qq_44396101/article/details/109563892
如题,我本身也是一个初学者,本篇文章是我在了解PASCAL VOC数据集中所学习到的,因此记录下来与大家分享,如果有不对的地方还希望大家指正。
PASCAL VOC挑战赛是世界级的计算机视觉挑战赛,PASCAL的全称是:Pattern Analysis,Statistical Modelling and Computational Learning Visual Objection Classes,是一个由欧盟资助的网络组织,挑战赛主要分为以下几类:图像分类,目标检测,目标分割以及动作识别等。
一、PASCAL VOC2012数据集的下载
由于我下载的时候官网打不开,因此找到了一个镜像网站,大家可以直接复制到迅雷中下载,还是比较快的。https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
二、PASCAL VOC2012数据集的内容
解压下载的文件,里面结构如下:
1.Annotations
这个文件夹下的内容为所有图像的标注信息,均为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是被分割过,没有就是0
<object>#目标1
<name>aeroplane</name>#类别
<pose>Unspecified</pose>
<truncated>0</truncated>#目标是否被截断
<difficult>0</difficult>#目标检测的难易程度,1为难检测,0为容易检测
<bndbox>#目标的左上角和右下角坐标
<xmin>9</xmin>
<ymin>107</ymin>
<xmax>499</xmax>
<ymax>263</ymax>
</bndbox>
</object>
<object>#目标2
<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>#目标3
<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>
2.ImageSets
此文件夹下又有四个文件夹
其中Action文件夹中为人的行为动作图像信息,Layout为人的各个部位图像信息,Segmentation为目标分割图像信息,Main文件夹为目标检测分类图像信息,Main文件夹中包括了20个种类的txt格式的信息,每一个种类都有三个,分别是_train,_trainval,_val,部分截图如下。除此之外,还包含了三个总的信息文件train.txt,val.txt,trainval.txt,这里面训练集共有5717张图片,验证集共有5823张图片,共有11540张图片。
训练集train.txt文件中的每一行都是一个图片的名称,验证集val.txt也同样,并且训练集中的图片和验证集中的是完全不一样的。trainval.txt是将这两部分融合到一起的。
随机点开某一个类别的txt文件,如bird_train.txt,可以发现每一行除了名称后面还有一个数字,如果是-1,说明这个图片中没有鸟这个目标;如果是1,说明这个图片中有鸟这个目标;如果是0,说明这个目标检测起来是有困难的。如下部分截图:
3.JPEGImages
这个文件夹下就是一个个.jpg格式的图片。
4.SegmentationClass
基于类别的图像分割图,都是png格式的。
5.SegmentationObject
基于目标的图像分割图,也都是png格式的。
三、PASCAL VOC2012数据集的使用顺序
首先读入train.txt的文件,获取它的每一行信息,然后去Annotations找到它的xml文件,然后解析这个文件,再去JPEGImages中找到这个图片,载入到内存中。
如果大家觉得我写的不够细致,可以去b站搜这位up主的讲解,很细致,感谢他!https://b23.tv/KRwTKT