前言
1.PASCAL VOC为图像识别与分类提供了一整套标准化的图像数据集,VOC数据集是衡量图像分类识别能力的基准,好多深度学习的框架在识别这块都以此数据集作为演示样例。PASCAL VOC数据集的下载链接。
2.我们想要用Caffe-SSD训练自己想要识别数据模型,也是要制作自己的VOC数据集,那么最好的办法是看官方的数据的结构与它们之间的关联,才好制作自己的数据集。
3.我这是以VOC2007为例子,大概介绍VOC数据集的结构与各个文件的功能。
VOC2007数据集的目录结构
当把下载好之后的VOC2007解压出来,可以看到里面五个目录。
1.Annotations目录
(1)目录下存放的是 xml 文件,每个xml文件对应 JPEGImage 里面的一张图片,这个xml文件是用标注工具对 JPEGImage 里的图像进行标注得到的。
(2)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>
<object>
<name>dog</name> //类别 (狗)
<pose>Left</pose> // 拍摄角度
<truncated>1</truncated> //是否被截断(1表示不完整),
<difficult>0</difficult> //目标是否难以识别(0表示容易识别)
<bndbox> //标注工具标出物体图框的参数
<xmin>48</xmin> //左上角的 x 坐标
<ymin>240</ymin> //左上角的 y 坐标
<xmax>195</xmax> //右下角的 x 坐标
<ymax>371</ymax> //右下角的 y 坐标
</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>
这个文件对应的图像是这张
2.ImageSets目录是存放记录各个数据正负样本的 txt 文件,ImageSets有三个目录。
(1)Layout目录有四个txt文件。
这个在我们制作自己的数据时用不上,所以就不去做深入了解,但看文件名也大概能明白是用来放训练,测试,验证,交叉验证相关的图数据。
(2)Main目录
XXX_train中存放的是训练使用的数据,每一个类别的train数据都有5717个。
XXX_val中存放的是验证结果使用的数据,每一个类别的val数据都有5823个。
XXX_trainval将上面两个进行了合并,每一个类别有11540个。
需要保证的是train和val两者没有交集,也就是训练数据和验证数据不能有重复,在选取训练数据的时候 ,也应该是随机产生的。
打开其中的一个txt文件可以看到如下的内容:
可以看到前面的表示图像的名称不带扩展名,后面如果是1代表正样本,如果是-1代表负样本。
(3)Segmentation目录下的四个txt文件,放着从图像里分割出分类对的相关信息,test放着测试数据的图像名,val中存放的是验证结果使用的数据,train中存放的是训练使用的数据,trainval是将val与train进行了合并。
3.JPEGImages目录放置数据的原始图片,图片的文件名用统一以一种格式以递增式进行命名。
4.SegmentationClass目录是放置分割好的类的数据。
5.SegmentationObject目录放置着分割好的对象的数据。
结语
1.以上是关于VOC2007的目录结构与放置的内容的相关介绍,是为了更好的去制作我们自己的数据做准备。但我们自己制作自己的SSD训练集时,不像官方格式这么繁多,能训练出结果就行。
2.这是我对于PASCAL VOC数据集的理解,有理解不到的地方或者想要做相关可以加这个群(487350510)互相学习。