
2.3 ImageNet图像识别模型
2.3.1 ImageNet数据集简介
ImageNet数据集是为了促进计算机图像识别技术的发展而设立的一个大型图像数据集。2016年ImageNet数据集中已经有超过千万张图片,每一张图片都被手工标定好类别。ImageNet数据集中的图片涵盖了大部分生活中会看到的图片类别,如图2-19所示。

图2-19 ImageNet数据集的图像示例
相比CIFAR-10, ImageNet数据集图片数量更多,分辨率更高,含有的类别更多(有上千个图像类别),图片中含有更多的无关噪声和变化,因此识别难度比CIFAR-10高得多。从2010年起,每年ImageNet的项目组织都会举办一场ImageNet大规模视觉识别竞赛(ImageNet Large Scale Visual Recognition Challenge, ILSVRC)。在ILSVRC竞赛中诞生了许多成功的图像识别方法,其中很多是深度学习方法,它们在赛后又会得到进一步发展与应用。可以说,ImageNet数据集和ILSVRC竞赛大大促进了计算机视觉技术,乃至深度学习的发展,在深度学习的浪潮中占有举足轻重的地位。
2.3.2 历代ImageNet图像识别模型
2012年,加拿大多伦多大学的教授Hinton与其学生Alex参赛,使用深度学习处理图像识别问题,将错误率从原来的25%降到了16%。图2-20展示了他们使用的网络结构。

图2-20 AlexNet的结构示意图
这个网络由上下两部分组成。输入的图像会经过5层卷积层(依次是11×11卷积、5×5卷积,3个3×3卷积),有些卷积层后面还使用了池化层。5层卷积之后连接了3层全连接层。由于该网络是由Alex设计完成的,所以现在一般将此网络简称为AlexNet。
AlexNet的成功主要得益于以下几个方面:
· 训练了较深层的卷积神经网络。
· ImageNet提供了大量训练样本,此外还使用了数据增强(参考第2.2.1节)技术,因此神经网络的过拟合现象不严重。
· 使用了dropout等技术,进一步降低了过拟合。
AlexNet的成功引起了研究人员的兴趣,2014年,ILSVRC竞赛上又出现了两个引人关注的模型:VGGNet和GoogLeNet。相比AlexNet 16%的错误率,VGGNet把错误率降到了7%, GoogLeNet的错误率则是6%。
先来介绍VGGNet。在原始的论文中,作者共训练了6个网络,分别命名为VGG-A、VGG-A-LRN、VGG-B、VGG-C、VGG-D和VGG-E,如图2-21所示。

图2-21 VGGNet的结构示意图
简单解释表中符号表示的含义。conv3-512表示使用了3×3的卷积,卷积之后的通道数为512。而conv3-256表示使用了3×3的卷积,通道数为256,依此类推。在实际应用中,由于VGG-D和VGG-E效果最好,所以一般只会用到这两个网络。由于VGG-D有16层,VGG-E有19层,所以它们又被分别简称为VGG16与VGG19模型。VGG19比VGG16准确率更高,但相应地计算量更大。VGG16的结构还可以用图2-22简化表示。

图2-22 VGG16的结构示意图
GoogLeNet由Google公司提出,性能与VGGNet相近。GoogLeNet的创新在于它提出了一种“Inception”结构,它把原来的单个结点又拆成一个神经网络,形成了“网中网”(Network in Network)。Inception单元的结构如图2-23所示。

图2-23 Inception单元的结构
整个GoogLeNet就是由许多这样的Inception单元组成的,它的构造比较复杂,但同样是深层的卷积神经网络,其结构示意图如图2-24所示。

图2-24 GoogLeNet的结构示意图
值得一提的是,GoogLeNet又被称为Inception V1模型,Google又对该模型做了后续研究,相继提出了Inception V2、Inception V3、Inception V4模型,每一代模型的性能都有提升。
2015年,一种名为深度残差网络(Deep Residual Network, ResNet)的模型赢得了ILSVRC图像识别竞赛的冠军。深度残差网络比以往的任何模型都要深,它可以训练100层,甚至1000层。深度残差网络把错误率从6%(GoogLeNet)、7%(VGGNet)降到了3.57%,这也是在ImageNet数据集上,机器的表现首次优于人类。
深度残差模型的优势在于使用了跳过连接,让神经网络从拟合F(x)变成拟合残差F(x)-x。残差比原始函数更容易学习,也更适合深层模型迭代。因此,即使训练非常深的神经网络也不会发生非常严重的过拟合。残差网络使用的基本结构如图2-25所示,实际的残差网络就是由大量这样的基本单元组成的。

图2-25 残差网络的基本单元
至此,本节介绍了在ImageNet数据集上最重要的几个深度学习模型:AlexNet、VGGNet、GoogLeNet和ResNet。读者没有必要记忆模型的每一个细节。在后面的章节中,大多数时候会直接把这些模型当作整体工具来使用。