常用的目标检测数据集
了解数据集是很重要的一个步骤,所以将这个章节放到了整个教程最开始的地方。
我们可以把目标检测模型当作一个黑盒子 ,我们给这个黑盒子一个 输入
,然后黑盒子会给我们一个输出
。
通过了解数据集,我们可以对这个输入
和 输出
有个更好的认识。
同时,可以对目标检测任务有个更好的认识。最重要的一点,通过了解数据集,可以帮助我们设计目标检测模型的输出形式。
这一部分,我们会讲解一些论文中常用的目标检测数据集,告诉大家应该如何去看,使用这些数据集。
在开始任何目标检测任务之前,我们首先需要收集这个任务所需要的数据集。
有些任务的数据集,我们可以从网上找到开源的数据集。但有些任务的话,可能并没有开源的数据集,那么就需要我们自己去制作数据集。
数据集,主要有两个部分组成: 图像
和 标注
。分别对应目标检测模型的 输入
和 输出
。
对于 图像
,我们只需要知道这些图像的来源,以及这些图像的格式。
对于 标注
,我们需要知道这些标注的格式,以及这些标注的含义。
接下来,我们先来看看一些开源的数据集长什么样。
VOC 数据集
VOC 的全称是 Visual Object Classes,是目标检测领域最常用的数据集之一。
在目标检测初期的论文中,很多都是基于 VOC 数据集的。大家都用 VOC 数据集来训练模型,用 VOC 数据集上的测试表现来评估模型的性能。
VOC 数据集官方地址:http://host.robots.ox.ac.uk/pascal/VOC/
VOC 数据集中,常用的两种数据集是:VOC2007 和 VOC2012。
从 VOC 2005 到 2007,它的数据集数量是逐渐增加的。所以,VOC 2007 数据集大家比较常用的数据集。 从 2008 开始,VOC 数据集进行了新的整理。从 2008 到 2012,VOC 数据集都在去年的基础上新增了内容。 VOC 2012 相较于 VOC 2011,没有增加目标检测的数据量,但增加了其他任务的数据量。 所以从表上,我们看不到 VOC 2012 相较于 VOC 2011 数据集上的进步。
打开 VOC 数据集,可以看到这样的目录结构。
我们需要关注的是 Annotations
和 JPEGImages
这两个文件夹。
JPEGImages
文件夹中,存放的是图片。
Annotations
文件夹中,存放的是标注目标的信息。
ImageSets
文件夹中,存放的是不同任务对应的图片信息。比如 Layout
文件夹中,会告诉我们哪些图片可以用来训练识别人体部位的数据集信息;
Main
文件夹中,会告诉我们不同类别对应的图片有哪些。Segmenation
是用来告诉我们哪些图片可以用来训练语义分割任务的。
至于 SegmenationClass
和 SegmentationObject
文件夹中,存放的是其他检测任务对应的标注信息。
总而言之,我们只需要关注 Annotations
和 JPEGImages
这两个文件夹。其他的文件夹是对应 于其他任务,我们可以忽略。
对于 JPEGImages
就是输入数据,就是纯粹的图片。
对于 Annotations
就是标注,它是以 XML 文件格式来存储的。
COCO 数据集
COCO 数据集,算是目标检测领域中非常常用的数据集。
在COCO 数据集的下载页面中 https://cocodataset.org/#download
我们可以看到大概分为了三列:
Tools(工具),Images(图像),Annotations(标注)。
Tools(工具)列是COCO 给我们提供一些代码的帮助,帮助我们可以更快地在代码中使用这些数据。
Images(图像)列就是我们说的 COCO 数据集。可以看到它上面标注了年份和数据集的种类。2014 Train Images [83K/13GB] 表明这个 2014 年竞赛提供的数据集,并且是训练数据集,其中含有 83K(83,000)张图片, 所有文件总大小为 13GB。
Annotations(标注)列可以看到,其中提供了数据集的标注或者信息。可以看到 2014 Train/Val annotations[241 MB] 提供了 2014 年训练和验证数据集的标注信息。2014 Testing Image Info[1MB] 中只提供了 2014 年测试数据 集的图片信息,并不提供标注信息。
其中,2017 Unlabeled Image Info [4MB] 比较特殊。前面的 2014/5/7 Testing Image Info,虽然没有给参赛者提 供数据集对应的标注结果信息,但是竞赛主办方手中是有这些标注信息的。但是 2017 Unlabeled Image Info 是竞 赛主办方手中也没有对应的标注信息的。将 2017 Unlabeled Image 数据集(不带标注信息)开放出来,是为了推 动无监督学习的发展。我们现在的主流深度学习绝大多数都是有监督学习。什么是有监督学习呢?
持此之外,2017 Stuff Train/Val annoations [1.1 GB],Panoptic Train/Val annotations[821MB] 数据集是用于其他 目的的,并不是用于目标检测目的的。大家可以直接忽略无视。
一般情况下,我们下载数据集的时候,都是选择数据量大的。数据集数量越大,数据质量越高,训练出来的 网络模型质量就越好。所以针对 COCO 数据集,我们一般选择 2017 的 Train/Val/Test 数据集。我们需要将 2017 年对应的训练,验证和测试数据集还有其对应的标注信息都下载下来。
COCO 数据集下载地址,整理如下
对于验证数据集,因为竞赛主办方并没有将标注信息对外开放,所以参赛者手中拿到的仅仅是图片的信息。 我们可以看到它提供了两个文件,文件的后缀为 json。所谓的 Json 文件,就是采用一种名为 JSON 的格式来组 织数据内容的。我们只需要读懂名为 JSON 格式的数据就行了,无需了解过多的细节。
随便打开下载的 COCO 数据集,就可以看到如下的文件夹结构。
COCO数据集的下载。