🏷sec0401_Datasets_ClassicDatasets
视觉是人类认识世界最重要的一种知觉之一。对于人类来说,通过视觉来识别文字、识别图片中的物体或者找出图片和视频中某个特定的人都是非常容易的事情。然而对于计算机来说,要从图片中找到特定的物体,甚至于识别出某个特定的物体都不是一件容易的事情。图像识别技术就是寄希望于借助计算机程序来处理、分析和理解图片中的内容,使得计算机可以从图片中自动地识别各种不同模式的目标和对象。不难想象,这种技术不仅仅对于此,它同样也是自动驾驶、机器人导航、目标跟踪等应用的基石。
近年来,得益于机器学习特别是深度学习的发展,计算机视觉成为人工智能领域最为重要的一个组成部分,并取得了许多突破性的进展。本章将介绍这些突破性进展背后的重要支撑——数据集。在前面的课程中,我们介绍过的MNIST数据集就是用来训练计算机能够自动地从一些手写的数字中去识别它们的真正意义。MNIST[1] 数据集是诞生于上个世纪七、八十年代的手写数字数据集,它来源于美国国家标准与技术研究所(NIST,National Institute of Standards and Technology)。该数据集由250个不同的人通过手写获得,其中50%来自于人口普查局的工作人员,另外的50%来源于高中学生。MNIST数据集的所有的图片都是28×28像素的灰度图,它总共包含60,000张训练图片和10,000张测试图片,由0~9这10个数字构成。图4-1 展示了一些图像识别的主流技术在MNIST数据集上错误率随年份的发展趋势图。
图4-1 不同算法在MNIST数据集上SOTA性能对比图
在上图中,最下面的虚线表示人工标注的错误率0.22[2]。四条不同的实线表示的是四种主流的机器学习算法在MNIST测试集上的精度,它们分别是K近邻算法、支持向量机、多层感知机和卷积神经网络。从图中不难得出结论,卷积神经网络始终占据优势地位,其错误率一直优于其他算法,甚至于接近人工标注的错误率。对于包含10,000张图片的测试集,基于卷积神经网络所构建的模型只比人工标注多错一张图片。不过,相比MNIST数据集,同时代所提出的卷积神经网络模型LeNet-5并没有MNIST数据集那么更受欢迎。MNIST数据集基本上已经成为随后30年里机器学习和深度学习领域的初始基准数据集。就像著名的"Hello World"程序段一样,MNIST数据集也经常被用来作为一个模型是否能够正常运行的起始测试数据。此外,在上个世纪80年代末,由于普通计算机的内存也就几兆而已,也就刚刚能容纳MNIST的测试集。所以在当时,MNIST数据集也被认为是最具代表性的大数据集。
MNIST手写数字数据集是一个非常简单的“大规模”数据集。但令人遗憾的是它所有的图片都是灰度图。因此,基于MNIST所训练的模型也只能处理灰度图,这在实际应用中是非常受限的。CIFAR数据集[3] 是另外一个具有影响力的图像分类数据集,它由多伦多大学的Geoffrey Hinton教授和他的学生Alex Krizhevsky博士和Vinod Nair博士整理获得。相比MNIST数据集,CIFAR数据集中的图片都是由32×32的彩色图片构成。这个数据集分为CIFAR-10和CIFAR-100两种设置,它们都采样于一个更大的数据集"80 million tiny images"。
图4-2 CIFAR-10数据集样例图片
CIFAR-10数据集包含来自于自然场景的60,000张32×32的彩色图片,它们被分为10个不同的类,每个类有6,000张图片。其中50,000张训练图片,10,000张测试图片。图4-2展示了该数据集一些样例。其中,左图为数据集中每个类别的一些样例图以及这些类别的名称;右图给出了其中一张轮船的图片。由于CIFAR-10数据集的图片都是比较小的32×32像素,因此放大后比较模糊。但依然可以粗略看出图片中目标的轮廓,即一艘轮船。
与MNIST数据集类似,CIFAR-10数据集也包含且只包含一个目标实体。不同的是,MNIST图片是黑白的数字,而CIFAR-10是彩色的物体。因此,CIFAR-10数据集的分类难度相对更高。有趣的是,CIFAR-10的人工标注正确率也只有94%,远低于MNIST的99.8%。按照今天的标准,这两个数据集确实是相当的小,但它们也依然是机器学习算法不错的基准数据集。在CIFAR-10上,目前性能最好的模型同样是卷积神经网络,它的精度为95.59%[4]。
无论是MNIST数据集还是CIFAR数据集,与真实场景都有较大的差异。首先,真实场景中的样本分辨率要远高于32×32;其次,真实场景的目标种类通常比较多,并且会同时存在于同一场景中。为了能训练出更符合真实场景的模型,在斯坦福大学的李飞飞教授和普林斯顿大学的李凯教授的带领下,一个通过亚马逊的人工标注服务(Amazon Mechanical Turk)收集并整理了超大规模的数据集ImageNet诞生了。ImageNet数据集[5]是计算机视觉最重要的数据集,它是这一轮深度学习兴起的功勋数据集。该数据集包含14,197,122张图片和21,841个Synset索引。Synset是WordNet层次结构中的一个节点,它是一组同义词集合。目前每一个与ImageNet相关联的WordNet同义词都代表了真实世界中的一个实体。这就意味着,ImageNet数据集是一个包含2万多个类别的复杂数据集。
图4-3 ImageNet数据集样例图片
相比CIFAR和MNIST数据集,ImageNet数据集的图片的分辨率要大得多。整个数据集的平均尺度为469×387,即使最小的图片也由75×56,大的图片甚至超过1000像素。图4-3 是ImageNet中的几张示例图片。从图中我们可以看到,除了分辨率和清晰度有了质的提升外,它们在内容上和CIFAR等早期数据也具有较大的区别的。首先,从左图中我们可以看到,关键目标虽然只有一个,但是它占据样本的区域甚至不到整个图片的一半。因此,如果用这个关键目标的标签来代表这幅图片的标签的话,多多少少都会存在一些偏差。虽然,当我们看到这幅图片的时候,我们也会认为它是一幅关于蛇的图片,而不是一幅关于沙漠的图片。所以,除了使用图片中的主目标来定义样本的标签外,你当然也可以用图片的背景来定义其场景的标签。其次,你可能也会发现有些样本中可能存在多个不同种类的目标,并且不同目标的数量可能也是多样化的。在 图4-3 的中间的图片中,我们可以看到有两个穿戴滑雪板,手持滑雪杖的人站在一片茫茫的大山前。对于这样的样本,我们很难用一个标签来对其进行定义。相反,目标检测算法会更适合这样的样本。因为,目标检测可以通过局部定位来找到一个样本中的局部目标。此外,在右图中,我们会发现主目标占据了样本的绝大部分区域,但是仍然有一些小目标存在于样本中,例如右边黄色方框中的行人。类别多样化、目标尺度多样化、数量不定,这些特征使得ImageNet数据集较好地还原了真实场景中物体的相互关系。所以,ImageNet数据集从其2009年发布至今,一直是评估图像分类算法性能的基准。
ImageNet之所以成为现代深度学习的奠基石,还有一个重要原因就是基于它所开办的ImageNet大规模视觉识别挑战赛(ILSVRC,ImageNet Lage-Scale Visual Recognition)。我们今天所常用的ImageNet数据集,其实并不是包含1400万张图片的完整数据集,而是被用于ILSVRC竞赛的ImageNet的子集。这个数据子集是从完整版的ImageNet数据集中采集了最具代表性的1000个类,每个类大约1000多张图片。最后,组成了一个包含1,280,000张图片的训练集、50,000张图片的验证集和150,000万张测试图片的数据集合。ILSVRC竞赛从2010年-2017年,一共举办了8次。它涵盖了图像分类、目标定位、目标检测和视频中的目标检测等赛项。此外,由于其他一些数据集,例如ADE20K、Places2的加入,该竞赛还被拓展到了场景解析和场景分类的应用中。在ImageNet竞赛中,很多著名的里程碑级别的深度学习模型诞生。例如大名鼎鼎的AlexNet、VGGNet、GoogLeNet和ResNet都来源于它。
图4-4 历年来ILSVRC竞赛冠军精度天梯图
图4-4 给出了从2010年到2017年ILSVRC竞赛中冠军算法在ImageNet数据集的测试集上Top-5的正确率。Top-N正确率是指在评估模型正确率的时候,前N个答案中有一个是正确的概率。换句话说,Top-5正确率指的是模型输出的前五个分类概率中有一个是正确的概率。在图像分类任务中,Top1正确率和Top5正确率都是最常用的评价指标。从上图中,我们可以看到,自2012年以AlexNet为代表的卷积神经网络获得了当年的第一名开始,在随后的几次竞赛中,冠军的殊荣始终属于深度卷积神经网络。2015年,微软亚洲研究院的何凯明提出了ResNet深度残差网络[6],该网络使得深度学习突破了传统意义上深度的极限,这也代表着深度学习开始正式走上向了实用的舞台。可以说,ImageNet数据集和ILSVRC竞赛大大促进了计算机视觉技术乃至整个深度学习的发展,在深度学习的浪潮中占有举足轻重的地位。
不仅仅是在分类领域,在目标检测、图像分割、场景解析、人脸识别等领域都有不少著名的数据集。例如,Pascal VOC,MS COCO,ADE20K,Market1501,CityScapes等等,下表给出了一些常见的计算机视觉数据集。
表4-1 计算机视觉常见经典数据集
序号 | 任务类型 | 数据集 |
---|---|---|
1 | 图像分类 | MNIST,CIFAR10/100,ImageNet,Stanford Dogs,Fashion-MNIST,Caltech101,LabelMe,SUN |
2 | 目标检测 | Pascal VOC,MSCOCO,OpenImages |
3 | 图像分割 | MSCOCO,VisualGenome,PASCAL Context |
4 | 人脸识别 | IMDB-Wiki,LFW,CelebFaces,FDDB,WiderFace |
5 | 场景识别 | ADE20K(室内),LSUN(室内),CityScapes(街景),Places,Places2 |
6 | 行人再识别 | Market1501,VIPeR,CUHK01-03,PRW,MARS,DukeMTMC-reID,PETA,KITTI |
7 | 医学图像处理 | COVID-19(胸部X光),DRIVE(视网膜), |
在计算机视觉应用开发中,第一步通常是做什么的?
A. 数据处理
B. 构建神经网络
C. 应用部署
D. 获取数据集
如果现在需要搭建一个可以识别多种物体的图像识别系统,那么下列选项中最有可能用来训练模型的数据集是()。
A. MNIST
B. MS-COCO
C. PASCAL VOC
D. ImageNet
开放图像数据集为我们带来了极大的便利,下列关于图像数据集说法错误的是()
A. CIFAR-10图像的识别难度比MNIST高很多
B. ImageNet数据集都是32×32的彩色图像
C. Cityscapes数据集里包含21841个类别
D. PascalVOC是目标检测数据集
下列关于MNIST数据集的描述正确的是()。
A. MNIST数据集的数据都是32×32的彩色图像
B. 每张图像都进行了边框标注
C. 该数据集全是关于手写字体的图像
D. 该数据集包含60000张训练图像和10000张测试图像
以下数据集被认为是计算机视觉界的“Hello World”数据集的一个是()。
A. MNIST
B. CIFAR
C. Pascal VOC
D. ImageNet