美文网首页人工智能之数据处理
小白AI:VOC数据集史上最实用的介绍和使用(2)

小白AI:VOC数据集史上最实用的介绍和使用(2)

作者: 小白学AI | 来源:发表于2020-06-29 21:06 被阅读0次

    上期介绍了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.只保留VOCdevkit

    OK,终于得到她!让我们一睹芳容。

    6.VOC2007和VOC2012

    VOC2007: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,里面记录的是训练和验证以及测试的样本的名称。

    相关文章

      网友评论

        本文标题:小白AI:VOC数据集史上最实用的介绍和使用(2)

        本文链接:https://www.haomeiwen.com/subject/smsafktx.html