上期介绍了VOC数据集的一些基本知识,相信有需要的小伙伴已经下载从百度网盘下载了VOC的数据。今天笔者就带领大家一起对VOC进行深入的研究和学习。
【题外话:有的人可能认为第一篇文章太过于简单,干货不够。但是笔者认为,要想掌握一门知识,合理的知识陡峭程序很重要。如果一上来笔者直接介绍VOC数据在各类模型中的使用,恐怕对于刚刚接触到VOC的小伙伴们来说简直是如坠云里雾里。所以笔者坚持由简单到复杂,希望给大家带来实实在在的帮助】
下面全部的操作都是在Win10中。
1.VOC数据集
下载下来的VOC数据如下图所示:
1.下载下来的压缩的VOC数据集可以看到,分为3个独立的tar压缩文件,分别是VOCtest_06-Nov-2007.tar,VOCtrainval_06-Nov-2007.tar和VOCtrainval_11-May-2012.tar。
VOCtest_06-Nov-2007.tar:测试集合(2007)
VOCtrainval_06-Nov-2007.tar:训练集合和验证集合(2007)
VOCtrainval_11-May-2012.tar:训练集合和验证集合(2012)
【注意:这里并没有缺少文件,根据官方的说法,VOC2012是没有提供测试集的,即没有test集合】
好了,下面我们把这3个tar文件解压到该文件夹下。这里有个小技巧,选中全部的3个tar,然后选择解压到当前文件夹下。
(1)选中3个tar->(2)右键解压到当前文件夹(X) 【注意:这里不要选解压每个压缩文件到到单独的文件夹(s)】
3.解压进行中因为本身VOC的数据集也不是很大,几分钟就可以解压完毕。
4.解压完成好了,这个VOCdevkit就是我们需要的。为了看起来清爽,这里我们可以直接把下面的3个tar压缩文件删除了。其实也是笔者一直倡导的理念,学习不仅要知其然,更要知其所以然。这里我们的目的就是为了得到解压后的VOC数据库,显然tar就不再需要了。所以明白每一步其实很重要,而不是机械的生搬硬套。我们只保留VOCdevkit文件夹即可。
5.只保留VOCdevkitOK,终于得到她!让我们一睹芳容。
6.VOC2007和VOC2012VOC2007:2007年发布的VOC数据集
VOC2012:2012年发布的VOC数据集
这里我们以VOC2007为例,来看一下到底VOC数据集包含哪些部分?
7.VOC2007的数据集结构(1)Annotations:标注信息。这里所谓的标注信息,实际上是图片中物体(instances)的位置坐标和。文件的形式是xml,并且是1个xml和1张图片相对应。
8.Annotations文件夹一共有9963个xml文件,意味着会有9963张图片,也即VOC2007全部的数据集有9963张。
打开其中的任意一个xml,比如000001.xml
9.标注文件000001.xml这里有很多的干货,这里我们逐一来解析:
首先,该xml文件是以<annotation> 开头,</annotation>结尾的。在<annotation> ...</annotation>包裹的范围内,
有如下几个关键的信息:
<size>:代表图片的分辨率,以该xml为例,对应的图片宽度是353pixel,高度是500pixel,通道数是3.
<object>:代表物体,里面有name,pose和bndbox。其中比较重要的是name和bndbox。name是指物体属于的类别,bndbox是标注框的信息
显然这里的xml里面有2个物体(instances),分别是dog和person。
以dog的bndbox为例:
<bndbox>
<xmin>48</xmin>
<ymin>240</ymin>
<xmax>195</xmax>
<ymax>371</ymax>
</bndbox>
xmin和ymin构成了bndbox的左上角,xmax和ymax构成了bndbox的右下角。那么有人肯定要问了:什么是bndbox?
其实bndbox是boundingbox缩写,深度学习的模型检测出了目标之后,会画一个框框,标定这个框内的东西,认为是一个object。
例如:
10.在图片上绘制bndbox上面我们说到,00001.xml这个标注文件对应的图片中有2个instances,分别是dog和person。那么我们现在来看下,是不是这样的。
首先我们先找到这张图片,请大家记住,VOC数据集中,图片的名称和xml文件的名称是一致的,除了后缀名不一样。例如这里的000001.xml,其对应的图片是:000001.jpg
11.图片000001.jpg经过观察,该图片中确实如xml中描述的那样,有2个instances,分别是person和dog。
(2)ImageSets:
Layout下存放的是具有人体部位的数据(人的head、hand等)
Segmentation下存放的是可用于分割的数据。
Main下存放的是图像物体识别的数据,总共分为20类。
我们主要关注Main下面的文件.
12.ImageSets下的txt文件可以看到,在Main下有很多的txt文件,一共是再仔细观察会发现,每个类别有4个txt文件,比如aeroplane(飞机)就有4个txt文件,
分别是:aeroplane_test.txt/aeroplane_train.txt/aeroplane_trainval.txt/aeroplane_val.txt
其他的,比如bicycle,也是有4个txt。
我们来看下:aeroplane_trainval.txt
1代表正样本,-1代表负样本
由于VOC一共有20个类别,所以这里的4*20=80。那么另外的4个txt是什么呢?
其实是train.txt/val.txt/trainval.txt/test.txt,里面记录的是训练和验证以及测试的样本的名称。
网友评论