经典分类模型(四):ResNet(2015CVPR)

Deep Residual Learning for Image Recognition-------ResNet_2015CVPR

深度残差学习用于图像识别

摘要

越深的神经网络训练起来越困难。本文展示了一种残差学习框架,能够简化使那些非常深的网络的训练,该框架使得层能根据其输入来学习残差函数而非原始函数(unreferenced functions)。本文提供了全面的依据表明,这些残差网络的优化更简单,而且能由更深的层来获得更高的准确率。本文在ImageNet数据集上使用了一个152层深的网络来评估我们的残差网络,虽然它相当于8倍深的VGG网络,但是在本文的框架中仍然只具有很低的复杂度。这些残差网络的一个组合模型(ensemble)在ImageNet测试集上的错误率仅为 3.57%。这个结果在2015年的ILSVRC分类任务上获得了第一名的成绩。我们在CIFAR-10上对100层和1000层的残差网络也进行了分析。

表达的深度在很多视觉识别任务中具有非常核心的重要性。仅仅由于我们相当深的表达,便在COCO目标检测数据集上获得了 28% 的相对提升。 深度残差网络是我们参加ILSVRC & COCO 2015 竞赛上所使用模型的基础,并且我们在ImageNet检测、ImageNet定位、COCO检测以及COCO分割上均获得了第一名的成绩。

1. 介绍

深度卷积神经网络在图像分类领域取得了一系列的突破 。 深度网络很好的将一个端到端的多层模型中的低/中/高级特征以及分类器整合起来,特征的等级可以通过所堆叠层的数量(深度)来丰富。最近有结果显示,模型的深度发挥着至关重要的作用,这样导致了ImageNet竞赛的参赛模型都趋向于“非常深”——16 层 到30层 。许多其它的视觉识别任务的都得益于非常深的模型。

在深度的重要性的驱使下,出现了一个新的问题:训练一个更好的网络是否和堆叠更多的层一样简单呢?解决这一问题的障碍便是困扰人们很久的梯度消失/梯度爆炸,这从一开始便阻碍了模型的收敛。归一初始化(normalized initialization)和中间归一化(intermediate normalization)在很大程度上解决了这一问题,它使得数十层的网络在反向传播的随机梯度下降(SGD)上能够收敛。

当深层网络能够收敛时,一个退化问题又出现了:随着网络深度的增加,准确率达到饱和(不足为奇)然后迅速退化。意外的是,这种退化并不是由过拟合造成的,并且在一个合理的深度模型中增加更多的层却导致了更高的错误率,我们的实验也证明了这点。Fig.1展示了一个典型的例子。
在这里插入图片描述
Fig.1 20层和56层的“plain”网络在CIFAR-10上的训练错误率(左)和测试错误率(右)。越深的网络在训练和测试上都具有越高的错误率。

退化的出现(训练准确率)表明了并非所有的系统都是很容易优化的。让我们来比较一个浅层的框架和它的深层版本。对于更深的模型,这有一种通过构建的解决方案:**恒等映射(identity mapping)**来构建增加的层,而其它层直接从浅层模型中复制而来。这个构建的解决方案也表明了,一个更深的模型不应当产生比它的浅层版本更高的训练错误率。实验表明,我们目前无法找到一个与这种构建的解决方案相当或者更好的方案(或者说无法在可行的时间内实现)。

本文中,我们提出了一种深度残差学习框架来解决这个退化问题。我们明确的让这些层来拟合残差映射(residual mapping),而不是让每一个堆叠的层直接来拟合所需的底层映射(desired underlying mapping)。假设所需的底层映射为 H(x),我们让堆叠的非线性层来拟合另一个映射: F(x):=H(x)−x。 因此原来的映射转化为: F(x)+x。我们推断残差映射比原始未参考的映射(unreferenced mapping)更容易优化。在极端的情况下,如果某个恒等映射是最优的,那么将残差变为0 比用非线性层的堆叠来拟合恒等映射更简单。

公式 F(x)+x 可以通过前馈神经网络的“shortcut连接”来实现(Fig.2)。Shortcut连接就是跳过一个或者多个层。在我们的例子中,shortcut 连接只是简单的执行恒等映射,再将它们的输出和堆叠层的输出叠加在一起(Fig.2)。恒等的shortcut连接并不增加额外的参数和计算复杂度。完整的网络仍然能通过端到端的SGD反向传播进行训练,并且能够简单的通过公共库(例如,Caffe)来实现而无需修改求解器(solvers)。
在这里插入图片描述
Fig.2 残差学习:一个构建块。
我们在ImageNet数据集上进行了综合性的实验来展示这个退化问题并评估了我们提出的方法。本文表明了: 1) 我们极深的残差网络是很容易优化的,但是对应的“plain”网络(仅是堆叠了层)在深度增加时却出现了更高的错误率。 2) 我们的深度残差网络能够轻易的由增加层来提高准确率,并且结果也大大优于以前的网络。

CIFAR-10数据集上也出现了类似的现象,这表明了我们提出的方法的优化难度和效果并不仅仅是对于一个特定数据集而言的。我们在这个数据集上成功的提出了超过100层的训练模型,并探索了超过1000层的模型。

在ImageNet分类数据集上,极深的残差网络获得了优异的成绩。我们的152层的残差网络是目前ImageNet尚最深的网络,并且比VGG网络的复杂度还要低。在ImageNet测试集上,我们的组合模型(ensemble)的top-5错误率仅为3.57%,并赢得了ILSVRC 2015分类竞赛的第一名。这个极深的模型在其他识别任务上同样也具有非常好的泛化性能,**这让我们在ILSVRC & COCO 2015 竞赛的ImageNet检测、ImageNet定位、COCO检测以及COCO分割上均获得了第一名的成绩。**这强有力的证明了残差学习法则的通用性,因此我们将把它应用到其他视觉甚至非视觉问题上。

2.Related Work**

Residual Representations 残差表示 在图像识别中,VLAD [18]是通过相对于字典的残差矢量进行编码的表示,Fisher Vector [30]可以表示为VLAD的概率版本[18]。它们都是用于图像检索和分类的有力的浅层表示[4,48]。对于矢量量化,编码残差矢量[17]被证明比编码原始矢量更有效。

在低级视觉和计算机图形学中,为了求解偏微分方程(PDE),广泛使用的Multigrid方法[3]将系统重新形成为多个尺度的子问题,其中每个子问题负责较粗和较细之间的剩余解规模。 Multigrid的替代方法是分层基础预处理[45,46],它依赖于表示两个标度之间的残差矢量的变量。已经证明[3,45,46],这些求解器的收敛速度比不知道解决方案剩余性质的标准求解器快得多。这些方法表明,良好的重构或预处理可以简化优化过程。

Shortcut Connections快捷连接。导致快捷连接[2、34、49]的实践和理论已经研究了很长时间。训练多层感知器(MLP)的早期实践是添加从网络输入连接到输出的线性层[34,49]。在[44,24]中,一些中间层直接连接到辅助分类器,以解决消失/爆炸梯度。 [39,38,31,47]的论文提出了通过快捷连接实现居中层响应,梯度和传播误差居中的方法。在[44]中,“起始”层由快捷分支和一些更深的分支组成。

与我们的工作同时,“highway networks” [42、43]提供具有选通功能[15]的快捷方式连接。与我们的无身份标识快捷方式相比,这些门是数据相关的并具有参数。如果“封闭”(接近零),则highway networks中的图层代表非残差功能。相反,我们的公式总是学习残差函数。我们的身份快捷方式永远不会关闭,所有信息始终都会通过传递,并需要学习其他残余功能。另外,highway networks还没有显示出深度极大增加(例如超过100层)的精度。

3.Deep Residual Learning

3.1. Residual Learning

让我们将H(x)视为由一些堆叠层(不一定是整个网络)拟合的基础映射,其中x表示这些层中第一层的输入。如果假设多个非线性层可以渐近逼近复杂函数2,则等效于假设它们可以渐近逼近残差函数,即H(x)-x(假定输入和输出的维数相同)。 因此,我们没有让堆叠的层近似为H(x),而是明确地让这些层近似为残差函数F(x):= H(x)-x。因此,原始函数变为F(x)+ x。尽管两种形式都应能够渐近地逼近所需的函数(如假设),但学习的难易程度可能有所不同。

关于降级问题的反直觉现象促使了这种重新形成(图1,左)。正如我们在简介中讨论的那样,如果可以将添加的层构造为身份映射,则较深的模型应具有的训练误差不大于其较浅的模型的训练误差。退化问题表明,求解器可能难以通过多个非线性层近似身份映射。利用残差学习重新形成,如果身份映射是最佳的,则求解器可以简单地将多个非线性层的权重逼近零以逼近身份映射。

在实际情况下,身份映射不可能达到最佳状态,但是我们的重新制定可能有助于解决问题。如果最优函数比零映射更接近于一个恒等式,那么求解器应该参考恒等式来查找扰动,而不是学习一个新的函数。我们通过实验(图7)表明,学习到的残差函数通常具有较小的响应,这表明身份映射提供了合理的预处理。

3.2. Identity Mapping by Shortcuts

我们对每几个堆叠的层都采用残差学习。一个构建块如图2所示。在形式上,本文中我们考虑一个定义为:
在这里插入图片描述
这里的x和y是所考虑层的输入和输出向量。函数F(x,{W i})表示要学习的残差映射。对于图2中具有两层的示例,F = W2σ(W1x),其中σ表示ReLU [29],并且为了简化符号省略了偏置。 F + x操作是通过快捷连接和逐元素加法执行的。我们采用加法后的第二个非线性度(即σ(y),见图2)。

式(1)中的快捷连接既不引入额外的参数,也不引入计算复杂度。这不仅在实践中具有吸引力,而且在我们比较普通网络和残差网络时也很重要。我们可以公平地比较同时具有相同数量的参数,深度,宽度和计算成本(除了可以忽略的逐元素加法)的普通/残差网络。

x和F的尺寸在等式(1)中必须相等。如果不是这种情况(例如,当更改输入/输出通道时),我们可以通过快捷连接执行线性投影W s以匹配尺寸:
在这里插入图片描述
我们也可以在等式(1)中使用平方矩阵Ws。 但是我们将通过实验证明身份映射足以解决退化问题,并且很经济,因此Ws仅在匹配尺寸时使用。

残差函数F的形式是灵活的。 本文中的实验涉及一个具有两层或三层的函数F(图5),而更多的层是可能的。 但是,如果F仅具有一层,则等式(1)类似于线性层:y = W1x + x,对此我们尚未观察到优势。

我们还注意到,尽管为简化起见,上述符号是关于全连接层的,但它们也适用于卷积层。 函数F(x,{Wi})可以表示多个卷积层。 在两个功能图上逐个通道执行逐元素加法。

3.3. Network Architectures

在这里插入图片描述
图3. ImageNet的示例网络架构。左:作为参考的VGG-19模型[41](196亿个FLOP)。中间:具有34个参数层(36亿个FLOP)的普通网络;右侧:具有34个参数层(36亿个FLOP)的残差网络。虚线快捷方式会增加尺寸。表1显示了更多详细信息和其他变体。

我们已经测试了各种普通/残差网络,并观察到了一致的现象。为了提供讨论实例,我们描述了ImageNet的两个模型,如下所示。

普通网络。我们简单的基线(图3,中间)主要受到VGG网络原理的启发[41](图3,左)。卷积层大多具有3×3滤镜,并遵循两个简单的设计规则:(i)对于相同的输出要素图大小,这些图层具有相同数量的滤镜; (ii)如果特征图的大小减半,则过滤器的数量将增加一倍,以保持每层的时间复杂度。我们直接通过步长为2的卷积层执行下采样。网络以全局平均池化层和具有softmax的1000路全连接层结束。在图3中,加重层的总数为34(中)。

值得注意的是,我们的模型比VGG网络[41]具有更少的过滤器和更低的复杂度(图3,左)。我们的34层基准具有36亿个FLOP(乘法加法),仅占VGG-19(196亿个FLOP)的18%。

残差网络。在上面的普通网络的基础上,我们插入快捷方式连接(图3,右),将网络变成其对应的剩余版本。当输入和输出的尺寸相同时,可以直接使用标识快捷方式(等式(1))(图3中的实线快捷方式)。当尺寸增加时(图3中的虚线快捷方式),我们考虑两个选项:(A)快捷方式仍然执行身份映射,并为增加尺寸填充了额外的零条目。此选项不引入任何额外的参数。 (B)等式(2)中的投影快捷方式用于匹配尺寸(按1×1卷积完成)。对于这两个选项,当快捷方式遍历两种尺寸的特征图时,步幅为2。

3.4. Implementation

我们对ImageNet的实现遵循[21,41]中的做法。调整图像的大小,并在[256,480]中对短边进行随机采样以进行缩放[41]。从图像或其水平翻转中随机采样224×224作物,并减去每像素均值[21]。使用[21]中的标准色彩增强。在每次卷积之后和激活之前,紧接着[16],我们采用批归一化(BN)[16]。我们按照[13]中的方法初始化权重,并从头开始训练所有普通/残差网络。我们使用最小批量为256的SGD。学习率从0.1开始,当误差平稳时除以10,并且对模型进行了多达60×10 4次迭代的训练。我们使用0.0001的权重衰减和0.9的动量。遵循[16]中的做法,我们不使用辍学[14]。

在测试中,为了进行比较研究,我们采用了标准的10种作物测试方法[21]。为了获得最佳结果,我们采用[41,13]中的全卷积形式,并在多个尺度上平均分数(图像被调整大小,使得较短的一面在{224,256,384,480,640}中)。

发布了47 篇原创文章 · 获赞 21 · 访问量 7231

猜你喜欢

转载自blog.csdn.net/qq_18315295/article/details/103568221
今日推荐