由于跑代码过程中用到的是VOC2007数据集,就直接说明VOC2007数据集的下载与解压
一、数据集的下载与解压
Pascal VOC2007
1.输入以下命令下载训练、验证、测试数据和工具包
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
2.再把这些压缩文件解压到一个叫做VOCdevkit
的文件夹下
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
注意要同时输入这三句命令解压
3.然后可以看到应该有下面这样的结构:
$VOCdevkit/ # development kit
$VOCdevkit/VOCcode/ # VOC utility code
$VOCdevkit/VOC2007 # image sets, annotations, etc.
#… and several other directories …
(我的解压完如下)
二、PASCAL VOC数据集的分析
(此处为参考多篇博客及其他资料学习后的总结,若有不对请多多指教)
首先提供官方下载地址:
https://pjreddie.com/projects/pascal-voc-dataset-mirror/
1.简介
PASCAL VOC从2005年开始举办挑战赛,内容从最开始的分类,到后面逐渐增加检测,分割,人体布局,动作识别(Object Classification 、Object Detection、Object Segmentation、Human Layout、Action Classification)等,数据集的容量以及种类也在不断的增加和改善。
本文主要分析PASCAL VOC数据集中和图像中物体识别相关的内容。
以PASCAL VOC2007为例,在一、数据集的下载与解压后在VOCdevkit目录下的VOC2007中看到如下的文件:
其中Annotations、ImageSets和JPEGImages主要用于识别,SegmentationClass和SegmentationObject用于分割。
- Annotations: 存放的是标记文件,采用xml格式,对JPEGImages文件夹中的每一张图片进行信息的标注。
例如000001.jpg和对应的xml文件具体如下:
<annotation>
<folder>VOC2007</folder>
<filename>000001.jpg</filename> # 文件名
<source> # 图像的来源
<database>The VOC2007 Database</database>
<annotation>PASCAL VOC2007</annotation>
<image>flickr</image>
<flickrid>341012865</flickrid>
</source>
<owner> #拥有者
<flickrid>Fried Camels</flickrid>
<name>Jinky the Fruit Bat</name>
</owner>
<size> # 图像尺寸, 长、宽及通道数
<width>353</width>
<height>500</height>
<depth>3</depth>
</size>
<segmented>0</segmented> # 是否用于分割,在识别任务中0和1无所谓
<object> # 检测到的物体,表明这个是一个目标,下面的是与该目标相关的信息
<name>dog</name> # 物体类别
<pose>Left</pose> # 拍摄角度(包括:front, rear, left, right, unspecified )
<truncated>1</truncated> # 目标是否被截断(比如一部分在图片之外),或者被遮挡(超过15%),0代表完整
<difficult>0</difficult> # 检测难易程度,这个主要是根据目标的大小,光照变化,图片质量来判断,0代表容易识别
<bndbox> # bounding box 的左上角点和右下角点的4个坐标值
<xmin>48</xmin>
<ymin>240</ymin>
<xmax>195</xmax>
<ymax>371</ymax>
</bndbox>
</object>
<object> # 除了上边的又检测到的物体,表明检测到多个物体
<name>person</name>
<pose>Left</pose>
<truncated>1</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>8</xmin>
<ymin>12</ymin>
<xmax>352</xmax>
<ymax>498</ymax>
</bndbox>
</object>
</annotation>
- ImageSets :存放的是图像数据,包含三个子文件夹 Layout、Main、Segmentation。其中 Main 存放的是用于分类和检测的数据集的分割文件,一共20个种类, Layout和Segmentation分别是人的身体部位和用于分割的数据。
其中Main文件夹中:包括
_train.txt: 用于训练的图片名称
_val.txt :用于验证的图片名称
_trainval.txt: train与val的合集(训练数据和验证数据无交集,即一张图片不可能同时属于训练集又属于验证集)
_test.txt :用于测试的图片名称
每一个.txt文件打开后,如下:
前面的是图像名称,后边的+1和-1分别代表正负样本。上图即代表在训练集中这张图片(000012)是aeroplane的话为1,不是则为-1。其他所有的 (class)_(imgset).txt 文件都是类似的。
-
JPEGImages:存放的是 .jpg 格式的图片,包括了所有训练图片和测试图片。
-
SegmentationClass:存放的是按照类别分割后的图片
-
SegmentationObject:存放的是按照物体分割后的图片
参考:https://arleyzhang.github.io/articles/1dc20586/
https://blog.csdn.net/zhangjunbob/article/details/52769381