ResNets - Deep Residual Learning for Image Recognition全文翻译

Deep Residual Learning for Image Recognition

Kaiming He 、Xiangyu Zhang 、Shaoqing Ren 、Jian Sun

Deep Residual Learning for Image Recognition - 原文

0 Abstract

越深的神经网络往往越难以训练,因此本文在此提出一个残差学习框架,能够简化那些非常深的网络,以减轻网络的训练负担。该框架使得层能根据其输入来学习残差函数而非原始未参考函数(unreferenced functions)。本文提供了非常全面的实验数据来证明,这些残差网络的优化更简单,而且能由更深的层来获得更高的准确率。本文在 I m a g e N e t ImageNet 数据集上使用了一个 152 层深的网络来评估我们的残差网络,虽然它相当于8倍深的 V G G VGG 网络,但是在本文的框架中仍然只具有很低的复杂度。这些残差网络的一个 组合模型(ensemble) I m a g e N e t ImageNet 测试集上的错误率仅为 3.57%。这个结果获得了 I L S V R C 2015 ILSVRC2015 的分类任务上获得了第一名,我们还用 C I F A R 10 CIFAR-10 数据集对100层和1000层的残差网络也进行了分析。

表示的深度对于许多视觉识别任务而言至关重要。仅仅由于我们相当深的表达,便在 C O C O COCO 目标检测数据集上获得了28%的相对提升。 深度残差网络是我们参加 I L S V R C & C O C O 2015 ILSVRC \& COCO 2015 竞赛上所使用模型的基础,并且我们在 I m a g e N e t ImageNet 检测、 I m a g e N e t ImageNet 定位、 C O C O COCO 检测以及 C O C O COCO 分割上均获得了第一名。

1 Introduction

深度卷积神经网络在图像分类领域取得了一系列的突破 ,深度网络很好的将一个端到端的多层模型中的低/中/高级特征以及分类器整合起来,特征的“层次”可以靠加深网络层数来丰富。最近的研究揭示了模型的深度发挥着至关重要的作用,这样导致了ImageNet竞赛的参赛模型都趋向于 “非常深” ,从16层到30层不等。其他一些计算机视视觉识别任务也受益于超级深的网络模型。

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

然而当开始考虑更深层的网络的收敛问题时,一个 退化 问题又出现了:随着神经网络深度的增加,精确度开始饱和(这是不足为奇的)然后会迅速退化。意外的是,这种退化并不是由过拟合造成的,并且 在一个合理的深度模型中增加更多的层却导致了更高的错误率 ,我们的实验也证明了这点。图1展示了一个典型的例子。

在这里插入图片描述
Figure 1. C I F A R 10 CIFAR-10 数据集,训练集误差(左),测试集误差(右)。20层/56层普通网络,越深的网络错误率越高, i m a g e n e t imagenet 数据集也是这样。

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

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

公式 F ( x ) + x \mathcal{F}(x)+x 可以通过在前馈神经网络中的“ S h o r t c u t Shortcut 连接 ”来实现(如图2), S h o r t c u t Shortcut 连接就是跳过一个或多个层。在我们的例子中, S h o r t c u t Shortcut 连接只是简单的执行恒等映射,再将它们的输出和堆叠层的输出叠加在一起(如图2)。恒等的 S h o r t c u t Shortcut 连接既不会添加额外的参数也不会增加计算复杂度。完整的网络仍然能通过端到端的SGD反向传播进行训练,并且可以很容易地通过公共库(比如 C a f f e Caffe )来实现而不用修改 求解器(solvers)( s l o v e r slover C a f f e Caffe 中的核心 s l o v e r . p r o t o t x t slover.prototxt )。
在这里插入图片描述
Figure 2. 残差网络:一个结构块。

我们目前用 I m a g e N e t ImageNet 的数据集进行了综合性的实验,来证实这个退化问题并评估我们提出的方法。

我们发现:

  1. 我们的极深的残差网络是很容易去优化的,不过对应的“ p l a i n plain ”网络(仅是堆叠了层)在深度增加时却出现了更高的错误率。
  2. 我们的深度残差网络能够轻易的享受由增加是深度带来的准确率的提高,并且结果也远远优于以前的那些网络。

C I F A R 10 CIFAR-10 数据集的实验中也出现了类似的现象,这表明了我们提出的方法的优化难度和效果并不仅仅是对于一个特定数据集而言的。我们在这个数据集上,提出的超过100层的网络表现很成功,还可以扩展到超过1000层的模型。

I m a g e N e t ImageNet 分类数据集上,我们用深度残差网络获得了优异的成绩,我们的152层的残差网络是目前 I m a g e N e t ImageNet 的参赛网络中最深的,然而却拥有比 V G G VGG 更低的网络复杂度。在 I m a g e N e t ImageNet 测试集上,我们的 组合模型(ensemble) 的top-5错误率仅为3.57%,以此赢得了 I L S V R C 2015 ILSVRC2015 对象分类的第一名。这个极深的模型在其他识别任务上同样也具有非常好的泛化性能,这使我们进一步赢得了多个比赛的第一名(有 I L S V R C & C O C O 2015 ILSVRC\&COCO2015 竞赛的 I m a g e N e t ImageNet 检测、 I m a g e N e t ImageNet 定位、 C O C O COCO 检测以及 C O C O COCO 分割)。这强有力的证明了残差学习法则的通用性,因此我们将把它应用到其他视觉甚至非视觉问题上。

(译者注:残差网络已经是当前最火爆且效果最好的网络之一)

2 Related Work

Residual Representations 在图像识别任务中, V L A D VLAD 是残差向量对应于字典进行编码的一种表达形式, F i s h e r V e c t o r Fisher Vector 可以看做是 V L A D VLAD 的一个概率版本。在图像检索和浅层分类中它们都是强力的浅层表达,对于矢量量化,残差向量编码被证明了比原始向量编码更有效果。

在低级视觉和计算机图形学中,为了求解偏微分方程( P D E s PDEs ),通常是使用多重网格( M u l t i g r i d Multigrid )法,将系统重新表达成多尺度的子问题来解决,每一个子问题就是解决粗细尺度之间的 残差问题 。除此之外, M u l t i g r i d Multigrid 的另一种求解 P D E s PDEs 的方法是分层基预处理,它是基于表达两个尺度之间 残差向量 进行的。在实验证明中证明了这些求解器比其他标准求解器的收敛要快得多,却并没有意识到这是该方法的 残差特性 所致。这些研究表明,一个好的模型重构或者预处理能够简化优化问题。

Shortcut Connections S h o r t c u t Shortcut 连接已经经过了很长的一段实践和理论研究过程。在训练多层感知器网络( M L P MLP )的一个早期实践,就是添加一个连接输入和输出的线性层。在 Szegedy2015Going 及 Lee2015deeply 中,将一些中间层直接与辅助分类器相连接可以解决梯度消失/爆炸问题。在 Szegedy2015Going 中,一个“ inception ”层由一个 s h o r t c u t shortcut 分支和一些更深的分支组合而成。

与此同时,“ highway networks ”将 shortcut连接 与门控函数结合起来。这些门是数据相关并且是有额外参数要进行调整的,而我们的恒等 s h o r t c u t s shortcuts 是无参数的。当一个门的 s h o r t c u t shortcut 是“ c l o s e d closed ”(接近于0)时, h i g h w a y highway 网络中的层表示非残差函数。相反的,我们的模型总是学习残差函数;我们的恒等 s h o r t c u t s shortcuts 从不关闭,在学习额外的残差函数时,所有的信息总是通过的。此外, h i g h w a y highway 网络并不能由增加层的深度(例如, 超过100层)来提高准确率。

3 Deep Residual Learning

3.1 Residual Learning

我们将 H ( x ) \mathcal{H}(x) 看作一个由部分堆叠的层(并不一定是全部的网络)来拟合的底层映射,其中 x x 是这些堆叠层的输入。如果有一个假设:多个非线性网络层可以逐渐逼近很复杂的函数,那么这就等价于这些层能够逼近复杂的残差函数。比如: H ( x ) x \mathcal{H}(x)-x (假设输入和输出都有着相同的维度)。所以与其让这些层去逼近 H ( x ) \mathcal{H}(x) ,我们更期望让它们去逼近残差函数 F ( x ) : = H ( x ) x \mathcal{F}(x) :=\mathcal{H}(x)-x 。对应的可以将原始的方程改成 F ( x ) + x \mathcal{F}(x)+x ,尽管这两种形式都应该可以逐步逼近目标函数(根据假设),但是学习的难易程度并不相同。

这个重新表达的动机是退化问题的反直觉现象(图1,左)。正如我们在 i n t r o d u c t i o n introduction 中讨论的,如果增加的层可以以恒等映射来构建,一个更深模型的训练错误率不应该比它对应的浅层模型的更大。退化问题表明了,求解器在通过多个非线性层来估计恒等映射上可能是存在困难的。而随着用残差方法来重新表达,如果恒等映射达到最优,那么求解器驱使多个非线性层的权重趋向于零来逼近恒等映射。

在实际情况下,恒等映射不太可能达到最优,但我们的重新表达将有助于对此问题的预处理。如果最优函数更趋近于恒等映射而不是0映射,那么对于求解器来说,学习寻找关于恒等映射的扰动会更容易,而不是将其作为一个全新的函数去学习。我们通过实验验证(图7),学习到的残差函数通常只有很小的响应,这表明恒等映射是更合理的预处理手段。

3.2 Identity Mapping by Shortcuts

我们在堆叠层上采取残差学习算法,一个构造块在图2所示,在本文中,我们把一个构造块定义成(Eq.1):

y = F ( x , { W i } ) + x . y=F(x,\{Wi\})+x.

其中 x x y y 分别表示构造块的输入和输出向量,函数 F ( x , { W i } ) F(x, \{Wi\}) 代表着学到的残差映射。举个例子,Fig.2中有两层, F = W 2 σ ( W 1 x ) F=W_2 σ(W_1x) 中的 σ σ σ σ 表示 R E L U RELU ,出于简化考虑省略了偏置项。操作 F + x F+x 是由一个 s h o r t c u t shortcut 连接和元素级(element-wise)的加法来表示。在做加法后我们再执行另一个非线性操作(例如, σ ( y ) σ(y) ,如Fig.2)。

Eq.1中中介绍的这个 s h o r t c u t shortcut 既没有引入额外的参数也没有增加计算复杂性。这不仅是一个很有吸引力的做法,同时在对“ p l a i n plain ”网络和残差网络进行比较时也是非常重要的。这样,我们可以在参数、深度、宽度以及计算成本都相同的基础上对两个网络进行公平地比较(除了可以忽略不计的元素级的加法)。
  
Eq.1中 x x 的维度和 F F 必须保持一致,如果不一致(比如改变了输入/输出的通道),我们可以在 s h o r t c u t shortcut 上进行一个线性投影 W s W_s 来匹配维度(Eq.2):

y = F ( x , { W i } ) + W s x y=\mathcal{F}\left(x,\left\{W_{i}\right\}\right)+W_{s} x

在Eq.1中同样可以使用方阵 W s W_s ,不过我们的实验表明,恒等映射足以解决退化问题,并且是经济的,因此 W s W_s 仅仅被用来解决维度不匹配的问题。

残差函数 F \mathcal{F} 的形式是灵活的,本文的实验中涉及到的函数 F \mathcal{F} 为2层或3层的情况(Fig.5),虽然更多的层也是可以的,但如果 F \mathcal{F} 只有一个层,Eq.1会等价于一个线性函数: y = W 1 x + x y=W_{1} x+x ,因此并不具有任何优势。

我们还注意到尽管上述的公式为了简便起见,都是关于全连接层的,但是它们同样适用于卷积层。函数 F ( x , { W i } ) F(x, \{W_i\}) 可以代表多个卷积层,在两个特征图的通道之间执行元素级的加法。

3.3 Network Architectures

我们在多个 p l a i n plain 网络和残差网络上进行了测试,并都观察到一致的现象,为了提供讨论的实证,我们将在下文对(用于 I m a g e N e t ImageNet 的)两个模型进行讨论。

Plain Network 我们的 p l a i n plain 网络结构(Fig.3,中)主要是受到 V G G VGG 网络(Fig.3,左)的启发。

卷积层的 f i l t e r filter 大多为3x3,并遵循了两个设计原则:(i) 输出特征尺寸相同的层含有相同数量的滤波器;(ii) 如果特征尺寸减半,则滤波器的数量增加一倍来保证每层的时间复杂度相同。我们直接通过stride 为2的卷积层来进行下采样。在网络的末端是一个全局的平均 p o o l i n g pooling 层和一个1000 类的包含 s o f t m a x softmax 的全连接层。加权层的层数为34,如Fig.3(中)所示。

值得注意的是,我们的模型比VGG网络(Fig.3,左)有更少的过滤器和更低的计算复杂度。我们的34层结构基本计算量为3.6亿FLOPS(包括乘法和加法),而这仅仅只有 V G G 19 VGG-19 (196亿个FLOPs)的 18%
在这里插入图片描述
Figure 3. 网络结构。左 V G G 19 VGG19 (19.6亿),中普通34层(3.6亿),右残差34层(3.6亿)。

Residual Network 在以上 p l a i n plain 网络的基础上,我们插入 s h o r t c u t shortcut 连接(Fig.3,右),将网络转化为其对应的残差版本。如果输入和输出的维度相同时,可以直接使用恒等shortcuts (Eq.1)。当维度增加时(Fig.3中的虚线部分),我们考虑两个策略:
(A) s h o r t c u t shortcut 仍然使用恒等映射,在增加的维度上使用0来填充。此策略不会加额外的参数;
(B)使用Eq.2的映射shortcut来使维度保持一致(靠1×1的卷积完成)。

对于这两个选项,当shortcut跨越两种尺寸的特征图时,均使用stride为2的卷积。

3.4 Implementation

针对 I m a g e N e t ImageNet 的网络实现遵循了 Krizhevsky2012ImageNet 和 Simonyan2014Very 。调整图像的大小使它的短边长度按照 [256,480] 区间的尺寸随机采样来进行尺度增强。从一张图像或者它的水平翻转图像中随机采样一个224*224的 c r o p crop ,每个像素都减去均值,图像进行了标准的颜色增强。我们把批量正则化(batch-normalization,BN)用在了每个卷积层和激活层之间,我们根据 He2014spatial 初始化了权重,然后从0开始训练 p l a i n plain 残差网络。

我们使用 S G D SGD 算法, m i n i b a t c h mini-batch 的大小为256,学习速率初始化为0.1,当到达错误率平稳时就把学习速率除以10,对各模型进行了 60 1 0 4 60∗10^4 次迭代,我们将权值衰减设置为0.0001,动量参数为0.9,根据 Ioffe2015Batch ,我们并没有使用 D r o p o u t Dropout

在测试中,为了对结果进行了比较研究,我们采用了标准的 10 c r o p 10-crop 测试。为了达到最佳的效果,我们使用 Simonyan2014Very 及 He2014spatial 中的全卷积形式,并在多个尺度的结果上取平均分(调整图像的大小使它的短边长度分别为 {224,256,384,480,640} )。

4 Experiments

4.1 ImageNet Classification

我们用有1000个分类的 I m a g e N e t 2012 ImageNet2012 的分类数据集,来评估我们的方法。训练集包含128万张图像,验证集包含5万张图像。我们在10万张测试图像上进行测试,并对 t o p 1 top-1 t o p 5 top-5 的错误率进行评估。

Plain Networks 我们首先评测了18层和34层的 p l a i n plain 网络。34层的网络如图Fig.3(中)所示。118层的结构很相似,具体细节参见Table 1。
在这里插入图片描述
Table1. I m a g e n e t Imagenet 的结构框架,括号中为构建块的参数(同样见Fig.5),数个构建块进行堆叠。下采样用的 s t r i d e = 2 stride=2 c o n v 3 1 conv3_1 , c o n v 4 1 conv4_1 , c o n v 5 1 conv5_1
在这里插入图片描述
Fig.4. 在 I m a g e N e t ImageNet 上进行训练。细曲线为训练错误率,粗曲线为使用中心 c r o p crop 时的验证错误率。左:18和34层的 p l a i n plain 网络。右:18 和34层的 R e s N e t s ResNets 。在这个图中,残差网络和对应的 p l a i n plain 网络相比并没有增加额外的参数。
在这里插入图片描述
Table 2. I m a g e N e t ImageNet 验证集上的 T o p 1 Top-1 错误率(%, 10-crop testing)。这里的 R e s N e t s ResNets 并没有额外增加的参数。Fig.4展示了整个训练过程。

Table 2中展示的结果表明了更深的34层网络比18层的网络具有更高的验证错误率。为了揭示产生此现象的原因,在Fig.4(左)中我们比较了整个训练过程中的训练及验证错误率。从结果中我们观测到了明显的 退化问题 ------在整个训练过程中,34层的网络具有更高的训练错误率,尽管18层网络的解空间仅仅是34层解空间的一个子集。

我们认为,这种优化上的困难不太可能是梯度消失造成的。因为这些 p l a i n plain 网络是用了 B N BN 训练的,这能确保前向传递的信号是具有非零方差的。我们还验证了在反向传递阶段的梯度由于 B N BN 而具有良好的范式,所以在前向和反向阶段的信号不会存在消失的问题。事实上,34层的 p l a i n plain 网络仍然具有不错的准确率(Table 3),这表明求解器在一定程度上也是有效的。我们推测,深层的 p l a i n plain 网络的收敛率是指数衰减的,这可能会影响训练错误率的降低。这种优化困难的原因我们将在未来的工作中进行探究。

Residual Networks 接下来我们对18层和34层的残差网络 R e s N e t s ResNets 进行评估。如Fig.3 (右)所示,残差网络的基本架构和上述 p l a i n plain 网络基本相同,不同的是多了一些 s h o r t c u t shortcut 连接,被添加到每对3x3的过滤器之间。在Table 2以及Fig.4(右)的比较中,所有的 s h o r t c u t s shortcuts 都是恒等映射,并且使用0对增加的维度进行填充(选项 A),因此它们并没有增加额外的参数。

我们从Table 2和Fig.4中观测到以下三点:

  1. p l a i n plain 网络相反,34层的残差网络比18层残差网络的结果更优(2.8%)。更重要的是,34层的残差网络在训练集和验证集上均展现出了更低的错误率。这表明在该设置中很好地解决了退化问题,并且我们设法从增加的深度获得准确度增益。

  2. 与对应的 p l a i n plain 网络相比,34层的残差网络在 t o p 1 top-1 错误率上降低了3.5% (Table 2),这得益于训练错误率的降低(Fig.4 右 vs 左)。这也验证了在极深的网络中残差学习的有效性。

  3. 我们也注意到,18层的普通和残差网络的准确率很接近 (Table 2),但18层残差网络的收敛速度更快(Fig.4 右 vs 左)。 当网络“ 不深 ”(如18层)的时候,现在的 S G D SGD 算法能够很好的对 p l a i n plain 网络进行求解,在这种情况下,残差网络能加速优化,提供更快的收敛速度。
    在这里插入图片描述
    Table 3. 在 I m a g e N e t ImageNet 验证集上的错误率 (%, 10 c r o p t e s t i n g 10-crop testing )。 V G G 16 VGG-16 是基于我们测试的网络。 R e s N e t 50 / 101 / 152 ResNet-50/101/152 使用了选项 B B ——利用映射来匹配增加的维度。

在这里插入图片描述
Table 4. 单一模型在 I m a g e N e t ImageNet 验证集上的错误率(%)(除了 + 是在验证集上的结果)。
在这里插入图片描述
Table 5. 组合模型在 I m a g e N e t ImageNet 测试集上的 t o p 5 top-5 错误率。
在这里插入图片描述
Fig.5. 对于 I m a g e N e t ImageNet 的一个更深的残差函数 F F 。左:对于 R e s N e t 34 ResNet-34 的如Fig.3描述的构建块。右:对于 R e s N e t 50 / 101 / 152 ResNet-50/101/152 的“瓶颈”构建块。

Identity vs. Projection Shortcuts 我们已经验证了无参数的恒等 s h o r t c u t s shortcuts 是有助于训练的。接下来我们研究映射 s h o r t c u t shortcut (Eq.2)。在Table 3中,我们比较了三个选项:

(A) 对增加的维度使用0填充,所有的shortcuts是无参数的(与Table 2 和 Fig.4 (右)相同);
(B) 对增加的维度使用映射 s h o r t c u t s shortcuts ,其它使用恒等 s h o r t c u t s shortcuts
(C) 所有的都是映射 s h o r t c u t s shortcuts

Table 3表明了三种选项的模型都比对应的 p l a i n plain 模型要好。B稍微比A好一点儿,我们认为这是因为A中的0填充并没有进行残差学习。C稍微比B好一点儿,我们把这个归结于更多的(13个)映射 s h o r t c u t s shortcuts 所引入的参数。但是A、B、C之间三个结果中细小的差距也表明了,映射 s h o r t c u t s shortcuts 对于解决退化问题并不是必需的。所以我们在后文的其他部分就再不用C方法了,为了减少复杂度和模型尺寸。恒等 s h o r t c u t s shortcuts 因其无额外复杂度而对以下介绍的瓶颈结构尤为重要。

Deeper Bottleneck Architectures 接下来我们介绍更深的模型。考虑到训练时间的限制,我们将构建块修改成 b o t t l e n e c k bottleneck 的设计。对于每个残差函数 F \mathcal{F} ,我们使用了三个叠加层而不是两个(Fig.5)。这三层分别是1×1、3×3和1×1的卷积层,其中1×1层主要负责先减少后增加(恢复)维度的,使剩下的3×3层来减少输入和输出的维度。Fig.5展示了一个例子,这两种设计都具有相似的时间复杂度。

无参数的恒等 s h o r t c u t s shortcuts 在瓶颈架构中非常的重要,如果使用映射 s h o r t c u t s shortcuts 来替代Fig.5(右)中的恒等 s h o r t c u t s shortcuts ,将会发现时间复杂度和模型尺寸都会增加一倍,因为shortcut连接了两个高维端,所以恒等shortcuts对于瓶颈设计是更加有效的。

50-layer ResNet 我们把34层网络中的2层的模块都替换成3层的瓶颈模块,整个模型也就变成了50层的残差网络 (Table 1)。我们用了 O p t i o n B OptionB 来增加维度,这个模型的基础计算量为38亿个 F L O P s FLOPs

101-layer and 152-layer ResNets 我们使用更多的3层模块来构建101层和152层的残差网络(Table 1)。值得注意的是,尽管深度是在很明显的增加,但是152层的残差网络的计算复杂度(113亿个 F L O P s FLOPs )仍然比 V G G 16 / 19 VGG16/19 (153 亿个 F L O P s FLOPs )和 V G G 19 VGG-19 (196亿个 F L O P s FLOPs )的小很多。

50/101/152层的残差网络比34层残差网络的准确率要高得多(Table 3 和4)。而且我们没有观测到退化问题,所有的指标都证实了深度带来的好处。 (Table 3 和4)。

Comparisons with State-of-the-art Methods 在Table 4中我们与目前最好的单模型结果进行了比较。我们的34层残差网络取得了非常有竞争力的准确度。我们的152层残差网络的单模型 t o p 5 top-5 验证错误率仅为4.49%,甚至比先前组合模型的结果还要好 (Table 5)。我们将6个不同深度的残差网络合成一个组合模型(在提交结果时只用到2个152层的模型),这在测试集上达成了 t o p 5 top-5 错误率仅为3.57% (Table 5),这个结果在 2015 I L S V R C 2015 ILSVRC 获得了第一名。

4.2 CIFAR-10 and Analysis

我们在包含5万张训练图像和1万张测试图像的10类 C I F A R 10 CIFAR-10 数据集上进行了更多的研究。我们在训练集上进行训练,在测试集上进行验证。我们关注的重点是极深网络的表现,而不是追求最好的结果,所以我们故意使用如下的简单的架构。

P l a i n Plain 网络和残差网络的框架如 Fig.3(中/右)所示。网络的输入是32x32的图像,预先减去每一个像素的均值。第一层是3×3卷积层。然后我们使用6n个3 * 3的卷积层的堆叠,卷积层对应的特征图有三种: 32 , 16 , 8 {32,16,8} ,每一种卷积层的数量为2n 个,对应的滤波器数量分别为 16 , 32 , 64 {16,32,64} 。降采样是通过步长为2的卷积进行的,网络以全局的平均 p o o l i n g pooling 层和一个10类的包含 s o f t m a x softmax 的全连接层为止。一共 6 n + 2 6n+2 个堆叠的加权层。具体的结构见下表:
在这里插入图片描述
使用 s h o r t c u t shortcut 连接3 * 3的卷积层对(共有 3n个 s h o r t c u t s shortcuts )。在该数据集上,我们所有的模型都使用恒等 s h o r t c u t s shortcuts (选项 A),所以我们的残差模型跟对应的 p l a i n plain 模型具有相同的深度、宽度和参数量。
在这里插入图片描述
Table 6. C I F A R 10 CIFAR-10 测试集上的分类错误率。我们对数据进行了增强。如 Srivastava2015Training 所述,对于 R e s N e t 110 ResNet-110 ,我们运行了5遍,然后展示了“(均值±方差)最优”的结果。

我们用的权重衰减参数为0.0001,动量为0.9,并采用论文 He2015Delving 提到的权重初始化, B a t c h n o r m a l i z a t i o n Batch-normalization ,不过不使用 d r o p o u t dropout 。这些模型训练时用了两个 g p u gpu m i n i b a t c h mini-batch 大小为128。我们的初始学习率为0.1,在第32000和48000次迭代时将其除以10,在64000次迭代时终止训练,这是由45000/5000的训练集/验证集分配所决定的。我们在训练阶段遵循 Lee2015deeply 中的数据增强法则:在图像的每条边上填充4个像素,然后在填充后的图像或者它的水平翻转图像上随机采样一个32 * 32 的 c r o p crop 。在测试阶段,我们只使用原始32 * 32的图像进行评估。

我们比较了 n = 3 , 5 , 7 , 9 n={3,5,7,9} ,分别对应20、32、44以及56层的网络。Fig.6(左) 展示了 p l a i n plain 网络的结果。深度 p l a i n plain 网络受深度影响,在深度增加时表现出了更高的训练错误率。这个现象与在 I m a g e N e t ImageNet (Fig.4, 左)和 M N I S T MNIST 上的结果很相似,表明了优化上的难度确实是一个很重要的问题。

Fig.6(中)展示了残差网络的表现。也和用 I m a g e n e t Imagenet (Fig.4, 右)做实验时表现的差不多,我们的残差网络就能够很好的克服优化难题,并且随着深度加深,准确率也得到了提升。

我们进一步地研究了n=18的情况,这个对应了110层的残差网络,在这个情况下,我们发现初始学习速率设成0.1有点太大了而不能很好的收敛。所以们用了0.01的初始学习速率来预热训练,直到训练误差低于80%的时候(大约400次迭代),然后再回到0.1的学习速率继续训练。接下来的训练方案是跟前文提到的一模一样。这个110层的残差网络收敛的很好 (Fig.6, 中)。它与其他的深层窄模型,如FitNet和 Highway (Table 6)相比,具有更少的参数,然而却达到了最好的结果 (6.43%, Table 6)。
在这里插入图片描述
Fig.6. C I F A R 10 CIFAR-10 上的训练效果。虚线表示训练错误率,实线表示测试错误率。左: p l a i n plain 网络。 p l a i n 110 plain-110 的错误率高达60% 以上,因此并没有展示出来。中: R e s N e t s ResNets 。右:110层和1202层的 R e s N e t s ResNets
在这里插入图片描述
Fig.7. 在 C I F A R 10 CIFAR-10 上层响应的标准方差( s t d std )。响应是每一个3 * 3卷积层的 B N BN 之后、非线性层之前的输出。顶部:层是按照它们原始的顺序。底部:响应按降序排列。
在这里插入图片描述
Table 7. 在 P A S C A L V O C 2007 / 2012 PASCAL VOC 2007/2012 测试集上使用 F a s t e r R C N N Faster R-CNN 的目标检测 m A P ( % ) mAP(\%)
在这里插入图片描述
Table 8. 在 C O C O COCO 验证集上使用 F a s t e r R C N N Faster R-CNN 的目标检测 m A P ( % ) mAP(\%)

Analysis of Layer Responses Fig.7展示了层响应的标准方差( s t d std )。 响应是指的每个3x3层的输出( B a t c h n o r m a l i z a t i o n Batch-normalization 后,其他非线性操作前( R e l u / a d d i t i o n Relu/addition ))。对于残差网络来说,这个分析结果也揭示了残差函数的响应强度。Fig.7表明了 R e s N e t s ResNets 的响应比它对应的 p l a i n plain 网络的响应要小。这些结果也验证了我们的基本动机(Sec3.1),即残差函数比非残差函数更接近于0。从Fig.7中 ResNet-20、56和110的结果,我们还注意到,更深的残差网络响应幅度越小。当有更多层的时候,单个的残差网络的层会修改的更少。

Exploring Over 1000 layers 我们探索了一个极其深的模型,有超过1000层。我们把n设成200,也就是对应了1202层的网络模型,按照前文一样的方法去训练。我们的方法对 1 0 3 10^{3} 层模型的优化并不难,并且可以获得训练误差 < 0.1 <0.1% 的训练错误率(Fig.6, 右),它的测试集错误率也相当低(7.93%, Table 6)。

不过对于这种极其深的网络模型同样存在很多问题,1202层的网络模型在测试集上的结果比110层的结果要差,尽管它们在训练集上的错误率表现的比较相近。我们认为这是因为过拟合。这样一个1202层的网络相对于这个小数据集来说,实在是规模大到有点没必要这么大(19.4M)。在这个数据集上应用了强大的正则化方法,诸如 m a x o u t maxout 或者 d r o p o u t dropout ,通常可以解决这个问题,以获得更好的结果。在此论文中,我们并没有使用 M a x o u t / d r o p o u t Maxout/dropout ,只是简单地通过设计深层窄模型来实施了正则化,而且不用担心优化的难度。但是通过强大的正则化或许能够提高实验的结果,我们将会在以后进行研究。

4.3 Object Detection on PASCAL and MS COCO

我们的方法在其他的识别任务上同样有着很好的泛化能力,Table 7和8展示了在 PASCAL VOC 2007 和 2012以及 COCO上的目标检测结果。我们采用了 F a s t e r R C N N Faster R-CNN 作为检测方法,在这里,我们重点关注的由 R e s N e t 101 ResNet-101 替换 V G G 16 VGG-16 所带来的性能的提升。使用这两种检测模型的实现是类似的(见附录),所以性能的增益只能归功于更好的网络结构。值得注意的是,在 C O C O COCO 数据集上,我们获得的结果比 C O C O COCO 的标准测试指标([email protected],.95)提升了6.0%,这相当于28%的相对提升。这个成就完全归功于本文描述的残差学习方法。

基于深度残差网络,我们 I L S V R C & C O C O 2015 ILSVRC \& COCO 2015 竞赛的 I m a g e N e t ImageNet 检测、 I m a g e N e t ImageNet 定位、 C O C O COCO 检测以及 C O C O COCO 分割上获得了第一名。

猜你喜欢

转载自blog.csdn.net/TeFuirnever/article/details/89362847