Image Recognition.

图像识别(Image Recognition)也叫图像分类(Image Classification),是计算机视觉的基本任务,旨在对每张图像内出现的物体进行类别区分。图像识别任务面临的主要问题是语义鸿沟(semantic gap),表现在:

传统的图像处理是先对图像手工提取特征,再根据特征对图像进行分类。而深度学习方法不需要手工提取特征,使用卷积神经网络自动提取特征并进行分类。

本文目录

  1. 图像识别模型
  2. 图像识别基准

⭐ 扩展阅读

1. 图像识别模型

本节主要介绍应用于图像识别任务的卷积神经网络,按照其结构发展概述如下:

  1. 早期探索:奠定“卷积层-下采样层-全连接层”的拓扑结构。如LeNet5, AlexNet, ZFNet, NIN, SPP-net, VGGNet
  2. 深度化:增加堆叠卷积层的数量。如Highway Network, ResNet, Stochastic Depth, DenseNet, Pyramidal ResNet
  3. 模块化:设计用于堆叠的网络模块。如Inception v1-4, WideResNet, Xception, ResNeXt, NASNet, ResNeSt, ConvNeXt v1-2
  4. 轻量化:设计轻量级卷积层,可参考轻量级卷积神经网络
  5. 其他结构:Noisy Student, SCAN, NFNet, ResNet-RS

(1) 早期探索

卷积神经网络结构设计的早期探索过程,奠定了“卷积层-下采样层-全连接层”的拓扑结构,并通过实现和理论分析总结了使用小尺寸的卷积核(如$3 \times 3$)并且增加网络深度的设计思想。

⚪ LeNet5

LeNetLeCun1998年提出,是历史上最早提出的卷积网络之一,被用于手写字符的识别。该网络由五层交替的卷积和下采样层组成,后接全连接层,网络参数并不庞大,大约有6万个参数。它具有对数字进行分类的能力,而不会受到较小的失真、旋转以及位置和比例变化的影响。当时GPU未广泛用于加速训练,传统多层全连接神经网络计算负担大,卷积神经网络利用了图像的潜在基础,即相邻像素彼此相关,不仅减少了参数数量和计算量,而且能够自动学习特征。在原始的LeNet模型中,使用了带参数的下采样层,模型最后还使用了高斯径向基连接,这些方法在今天已经很少再使用了,但这个网络奠定了卷积网络“卷积层-下采样层-全连接层”的拓扑结构,产生了深远的影响。

⚪ AlexNet

AlexNet被认为是第一个深层卷积神经网络,设计了一个八层的网络结构,大约有6000万个参数。网络使用了Dropout帮助训练,还使用了ReLU作为激活函数提高收敛速度。网络也使用了最大池化和局部响应归一化。这个网络获得了2012ImageNet图像分类竞赛的冠军,之后的网络大多在该网络的基础上进行演变。值得一提的是,受到当时条件的限制,网络是在两块GPU上进行并行训练的,只在部分层有GPU之间的交互。这种方法后来被研究者进一步研究,演变成如今的“组卷积”的概念。

⚪ ZFNet

早期网络超参数的学习机制主要是基于反复试验,而不知道改进背后的确切原因,缺乏了解限制了网络在复杂图像上的性能。2013年,ZeilerFergus提出了ZFNet,设计该网络的初衷是定量可视化网络性能。网络激活可视化的想法是通过解释神经元的激活来监视网络性能。通过实验发现,减小卷积核的尺寸和步幅能够保留更多的特征,从而最大限度地提高学习能力。拓扑结构的重新调整带来了性能提高,表明特征可视化可用于识别设计缺陷并及时调整参数。

⚪ NIN

NIN提出用非线性函数($1\times 1$卷积)增强卷积层提取的局部特征,同时使用全局平均池化层替代全连接层作为网络尾部的分类部分。

⚪ SPP-net

通常的卷积神经网络包含卷积层和全连接层,后者要求输入固定数量的特征数,因此在网络输入时会把图像通过裁剪和拉伸调整为固定的大小,然而这样会改变图像的尺寸和纵横比,并扭曲原始信息。SPP-net通过在卷积层和全连接层中间引入空间金字塔池化结构,能够把任意不同尺寸和不同纵横比的图像特征转换为固定尺寸大小的输出特征向量。

⚪ VGGNet

VGGNet提出了一种简单有效的卷积神经网络结构设计原则,该模型用多层3x3卷积层代替了11x115x5卷积层,并通过实验证明,同时放置多层3x3卷积可以达到大尺寸卷积的效果,并且减少了参数的数量。该网络提出的使用小尺寸的卷积核并且增加网络深度的设计思想一直沿用至今。VGGNet的主要限制是计算成本高,比如VGGNet这个16层的卷积网络,由于增加了层数,即使使用小尺寸的滤波器,也有约1.4亿个参数,仍承受着很高的计算负担。

(2) 深度化设计

深度化设计的思路是通过增加堆叠卷积层的数量来增强模型的非线性表示能力。

⚪ Highway Network

Highway Network通过门控机制引入新的跨层连接,利用深度来学习丰富的特征表示。实验表明,即使深度为900层,Highway Network的收敛速度也比普通网络快得多。

\[y=H(x) \cdot T(x) + x \cdot(1-T(x))\]

⚪ ResNet

ResNet通过引入残差学习使得训练深层的卷积网络成为可能。该网络设计了一种如图所示的残差连接,即在一些卷积层前后用一个恒等映射进行连接,这样主路径的卷积网络学习的是信号的残差,由于连接了这样一条恒等映射,使得在反向传播时梯度可以更容易的回传,从而减小了训练网络的困难。作者训练了超过100层的网络,并在分类挑战赛中取得了很好的成绩。

⚪ Stochastic Depth

随机深度是指在训练时以一定概率丢弃网络中的模块(等价于恒等变换);测试时使用完整的网络,并且按照丢弃概率对各个模块的特征进行加权。

⚪ DenseNet

ResNet的问题在于训练了一个深层的网络,但是网络中许多层可能贡献很少或根本没有信息。为了解决此问题,DenseNet使用了跨层连接,以前馈的方式将每一层连接到更深的层中,假设网络有$L$层,DenseNet建立了$(L(L+1))/2$个直接连接,并且对先前层的特征使用了级联而不是相加,可以显式区分网络不同深度的信息。

⚪ Pyramidal ResNet

Pyramidal ResNet也是一种残差网络结构,在整个网络结构中逐渐增加特征的通道数

(3) 模块化设计

模块化设计的思想是首先设计包含卷积层的网络模块,然后通过堆叠相同的模块构造深度网络。

⚪ Inception (GoogLeNet)

GoogLeNet提出了网络模块在设计时的基本思想,即拆分-变换-融合(split、transform、merge)的方法。该模型引入了如图所示的inception模块,首先把上一层的输出拆分成4路,分别通过1x13x35x5的卷积操作和一个3x3的最大池化操作进行变换,再把转换后的特征连接起来作为该模块的输出。在模块中封装了不同大小的卷积核以捕获不同尺度的空间信息。在采用大尺寸卷积核之前,使用1x1卷积作为瓶颈层,从而减小了模块的参数量。

⚪ Inception-V2, Inception-V3

后续的inceptionv2版本主要引入了batchnorm进行优化。在inceptionv3模块中,首先将一个5x5的卷积层转换为两层3×3的卷积层,两者具有相同的感受野但后者的参数量更少一些;进一步,该模块把nxn的卷积转换成nx1的卷积和1xn的卷积的串联或并联的形式。

⚪ Inception-V4, Inception-ResNet

Inception-ResNet是在Inception模块中引入了残差连接。

⚪ WideResNet

WideResNet通过增大网络结构的宽度(特征通道数)来改善网络的性能,并在卷积层之间引入了dropout进行正则化;实现了使用浅层网络获得跟深层网络相当的准确度。

⚪ Xception

Xception可以被认为是一种极端(eXtreme)的Inception结构。它设计了深度可分离卷积,即首先使用1x1卷积降低通道数提高网络的计算效率,然后分别对特征的每个通道进行$3 \times 3$卷积。

⚪ ResNeXt

ResNeXt引入了一个概念cardinality,是指一个附加的维度,用来表示对特征进行拆分和变换时的路径数目。比如图中把输入特征拆分成了32条路径,这里的cardinality就是32。实验表明增加cardinality能够显着改善性能,尽管会带来一些运算量的增加。

⚪ NASNet

直接在大型数据集上学习网络结构的计算成本过高,NASNet通过神经结构搜索的方法在小数据上学习网络模块。网络在搜索时预先设定了一些基本操作,如不同尺寸的卷积、池化、空洞卷积和深度可分离卷积,通过网络自动组合这些操作寻找最优的拓扑结构。值得一提的是,这样的搜索方法成本是相当高的,NASNet在搜索时使用了500GPU

⚪ ResNeSt

ResNeSt结合了多路径设计和通道注意力机制。多路径(multi-path)设计参考了ResNeXt,引入超参数cardinality控制分组卷积的分支数$k$;通道注意力机制参考了SKNet,引入超参数radix控制注意力计算的分支数$r$。

⚪ ConvNeXt

ConvNeXt通过把标准ResNet逐步修改为Swin Transformer,在此过程中发现了导致卷积神经网络和视觉Transformer存在性能差异的几个关键组件,在此基础上设计的卷积模块结合训练技巧与微观设计,实现了性能最佳的卷积网络。

⚪ ConvNeXt v2

ConvNeXt v2采用基于稀疏卷积设计的全卷积掩蔽自编码器(FCMAE)进行视觉自监督预训练,并引入全局响应归一化(GRN)缓解特征collapse现象。

(4) 轻量化设计

轻量级网络设计旨在设计计算复杂度更低的卷积网络结构,更多细节可参考轻量级(LightWeight)卷积神经网络

(5) 其他结构

⚪ Noisy Student

Noisy Student是一种半监督的图像分类方法。首先使用标记数据集训练一个教师网络;其次使用训练好的教师网络对大量无标签数据进行分类,构造伪标签;然后训练一个模型容量相等或更大的学生网络同时学习原标记数据和伪标签数据,在学习过程中引入数据增强、Dropout和随机深度等噪声干扰;最后将训练好的学生网络作为新的教师网络,并重复上述过程。

⚪ Semantic Clustering by Adopting Nearest neighbors (SCAN)

SCAN是一种无监督的图像分类方法,包括特征学习和聚类两个步骤。首先通过特征学习从图像中提取特征,学习过程采用自监督表示学习方法;然后对每一张图像的特征,在特征空间中寻找最近邻的$k$个特征,通过调整网络使得图像特征与这最近邻的$k$个特征内积最大(即相似度最高)。同时通过聚类给图像分配一个伪标签,通过调整网络最大化图像特征属于该类别的概率。

⚪ Normalizer-Free ResNet (NFNet)

NFNet是一个不使用BatchNorm的大批量图像分类网络,通过引入自适应梯度裁剪来保证较大batch size下训练的稳定性:

\[\begin{aligned} G \leftarrow \begin{cases} \lambda\frac{||W||}{||G||}G, & ||G|| \geq \lambda \\ G, & \text{otherwise} \end{cases} \end{aligned}\]

⚪ Revisiting ResNet (ResNet-RS)

ResNet-RS通过改进ResNet的网络结构,引入新的训练和正则化方法,并调整缩放策略,使得经典ResNet重新成为分类SOTA模型。作者提出的推荐缩放策略为在可能出现过拟合问题的大训练轮数下首选扩大深度,否则扩大宽度;并且应缓慢扩大分辨率。

2. 图像识别基准

常见的图像识别基准有MNIST, CIFAR, Places2, Cats vs Dogs, ImageNet, PASCAL VOC.

(1) MNIST(Mixed National Institute of Standards and Technology)

MNIST是由纽约大学的Yann LeCun整理的手写数字识别数据集。其训练集包含$60000$张图像,测试集包含$10000$张图像,每张图像都进行了尺度归一化和数字居中处理,固定尺寸大小为$28×28$。

(2) CIFAR(Canada Institute For Advanced Research)

CIFAR是由加拿大先进技术研究院的AlexKrizhevsky, Vinod NairGeoffrey Hinton收集而成的小图片数据集,包含CIFAR-10CIFAR-100两个数据集。

(3) Places2

Places2是由MIT开发的一个场景图像数据集,可用于以场景和环境为应用内容的视觉认知任务。包含一千万张图片,400多个不同类型的场景环境,每一类有5000-30000张图片。

(4) Cats vs Dogs

Cats vs Dogskaggle上的猫狗分类数据集,共25000张图片,猫、狗各12500张。

(5) ImageNet

ImageNet是斯坦福大学的计算机科学家李飞飞建立的目前世界上最大的图像识别数据库之一,目前已经包含14197122张图像,21841个类别。

基于ImageNet举办的ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)比赛是图像识别领域最重要的赛事,催生出一系列著名的卷积神经网络。该比赛使用的数据集是ImageNet的一个子集,总共有$1000$类,每类大约有$1000$张图像。具体地,有大约$120$万张训练图像,$5$万张验证图像,$15$万张测试图像。

(6) PASCAL VOC

PASCAL VOC数据集是一个视觉对象的分类识别和检测的基准测试集,提供了检测算法和学习性能的标准图像注释数据集和标准的评估系统。该数据集包含VOC2007($430M$)、VOC2012($1.9G$)两个下载版本。