ResNet——Deep Residual Learning for Image Recognition

1. 摘要

更深的神经网络通常更难训练,作者提出了一个残差学习的框架,使得比过去深许多的的网络训连起来也很容易。

在 ImageNet 数据集上,作者设计的网络达到了 152 层,是 VGG-19 的 8 倍,但却有着更低的复杂性。通过集成学习模型最终取得了 3.57% 的错误率,获得了 ILSVRC 2015 比赛的第一名。

表示的深度对于许多视觉识别任务而言至关重要,仅仅由于特别深的表示,作者在 COCO 物体检测数据集上获得了 28% 的相对改进。

2. 介绍

深度神经网络通常集成了低层、中层和高层特征,特征的 “层级” 可以通过叠加网络层(深度)来丰富。过去几年,图像分类以及其它视觉识别领域的成功都是通过设计更深的模型来获得的。

但是,这就产生了一个问题:学习更好的网络就像堆叠更多层一样简单吗?其中一个障碍就是众人皆知的梯度消失/爆炸问题,这会阻碍网络的收敛。但是,这个问题已经被 Xavier 等参数初始化方法以及 BN 解决了。

当深层网络的收敛不成问题时,一个退化问题出现了:随着网络深度的增加,准确率达到饱和然后迅速降低。这并不是由于过拟合导致的,而且增加更多层的话,就会有更高的训练错误率。

针对一个浅的网络结构和一个相应的增添更多层后的深的网络结构,如果新增添的层是一个恒等映射而前面的网络一样,那么这个深的网络应该不会产生比浅的网络更高的错误率。然而实验表明,当前的优化方法却不能让深的网络取得和浅的网络一样好或者更好的结果。

因此,在文章中,作者提出了一个深度残差学习的框架。我们让叠加的非线性网络层学习这样一个映射 \(F(x): =H(x)-x\),而不是直接学习一个底层映射 \(H(x)\)。原始的映射则可以表示为 \(F(x) +x\),作者假设这个残差映射相对于原始无参考的映射更容易优化。在极端情况下,如果恒等映射是最优的,那么相对于让叠加的非线性网络层学习一个恒等映射,让残差映射变为零是比较容易的。

作者通过跳跃连接来实现残差学习,这个跳跃连接就是一个简单的恒等映射,而且不引入额外的参数和计算复杂性。

实验结果表明,引入残差学习后,深层的网络更容易优化并且不会产生更高的训练错误率,并且层数增加后准确率也会有所提升。此外,在不同的数据集和不同的任务上残差学习都展现了其优越性,说明这个方法是通用的可扩展的。

3. 残差学习

我们规定几个叠加的非线性层学习到了这样的一个映射,\(x \to H(x)\)。如果假设多个非线性层可以渐进逼近复杂函数 \(H(x)\),那么它们也可以渐进逼近残差函数 \(H(x)-x\)(假设输入输出维度相同)。

尽管直接学习底层映射和先学习一个残差映射最终形式上都是一样的,但学习的难易程度却可能不同。深层网络的退化现象说明直接让叠加的非线性层学习一个恒等映射可能是非常困难的,但如果是残差学习的话,我们直接让所有层的参数趋向于零就可以学习一个恒等映射。

作者针对每几个叠加的网络层采用残差学习,一个残差块定义为:

上式第一项是待学习的残差映射,第二项是输入。针对两层网络的情况,我们有:

其中 \(\sigma\) 代表 ReLU,为了简化省略了偏置参数。通过引入跳跃连接来实现一个逐元素的相加操作 \(F+x\),之后再经过一个非线性激活函数。上述形式没有引入额外的参数和计算复杂性,这在实际中不仅非常有吸引力而且很重要,这样作者就可以直接对未引入/引入残差学习的网络进行横向比较。

如果 \(x\) 和 \(F\) 的维度不一样,那么我们对跳跃连接进行一个线性投影来匹配维度:

尽管维度相同的时候我们也可以引入一个方阵,但实验表明,恒等映射足够解决退化问题并且非常经济实用,因此作者只在维度匹配的时候才引入投影。

需要注意的是,本文中学习的 \(F\) 涉及到两层或三层网络,当然更多层也是可以的。但是,如果只有一层的话,就变成了线性的:

作者没有发现这种情况的优点。

4. 网络架构

普通的网络结构主要是受到 VGG 网络的启发,其中,卷积层大部分都是 3×3 的卷积核,并且:1)特征图大小相同时,卷积核的数量也相同;2)特征图大小减半时,卷积核的数量变为两倍。下采样通过步长为 2 的卷积来实现,最后是一个平均池化层和一个有 1000 个神经元的全连接层。其网络结构如下图中间部分所示。

在普通的网络结构插入跳跃连接后,就得到了相应的残差网络。其中,相同维度的特征图直接利用恒等映射,如下图右边实线箭头所示。如果特征维度不同,那么有两种考虑:A)在恒等映射时对特征图填充额外的 0 来增加维度,这种情况没有额外参数;B)利用投影进行维度匹配(利用 1×1 的卷积),如下图右边虚线箭头所示。这两种情况下,特征维度大小不一样,步长都为 2。

5. 实验结果

5.1. ImageNet 分类

可以看到,在普通的网络结构下,34 层的网络整个训练过程中的训练误差都要比 18 层的网络要高,而在残差网络结构下,更深的网络则具有更小的误差。

5.2. Identity vs. Projection Shortcuts

其中, A 代表维度不同时我们采用填充零的方式来增加维度,这没有引入额外的参数;B 代表维度不同时我们采用引入投影矩阵的方式来增加维度,而维度相同时采用恒等映射;C 代表维所有的跳跃连接都引入投影矩阵。

可以看到,B 稍微比 A 好,C 略好于 B,这可能是引入了很多的额外参数导致的。但是 A/B/C 之间的差别很小,说明投影矩阵对于解决退化问题不是必要的。为了减少空间时间复杂度和模型大小,恒等映射是最佳的选择。

5.3. 瓶颈结构

在设计更深的网络的时候,考虑到可以接受的训练时间,作者对之前的残差块进行了改进。通过引入三层分别为 1×1, 3×3, 和 1×1 的卷积,先对通道数进行降低,最后再对通道数进行恢复,从而让中间的 3×3 卷积有较小的维度。

通过替换 ResNet-34 中每个两层的块为上述三层的瓶颈结构,我们得到了一个 50 层的 ResNet。同时,引入更多瓶颈块的话,我们分别可以得到 101 层和 152 层的 ResNet。详细结构如下图所示:

这些单个模型在 ImageNet 数据集上的错误率对比情况如下所示。

集成模型在 ImageNet 数据集上的错误率对比情况如下所示。

5.4. CIFAR-10 数据集上的分析

结果表明,残差网络的激活值通常更接近于零,而且网络越深其激活值越小。

获取更多精彩,请关注「seniusen」!

原文地址:https://www.cnblogs.com/seniusen/p/10749623.html

时间: 2024-07-30 16:11:28

ResNet——Deep Residual Learning for Image Recognition的相关文章

Deep Residual Learning for Image Recognition (ResNet)

目录 主要内容 代码 He K, Zhang X, Ren S, et al. Deep Residual Learning for Image Recognition[C]. computer vision and pattern recognition, 2016: 770-778. @article{he2016deep, title={Deep Residual Learning for Image Recognition}, author={He, Kaiming and Zhang,

论文学习:Deep residual learning for image recognition

目录 I. Overview II. Degradation III. Solution & Deep residual learning IV. Implementation & Shortcut connections Home page https://github.com/KaimingHe/deep-residual-networks TensorFlow实现: https://github.com/tensorpack/tensorpack/tree/master/exampl

Deep Residual Learning for Image Recognition(MSRA-深度残差学习)

ABSTRACT: 1.Deeper neural networks are more difficult to train. 2.We present a residual learning framework to ease the training of networks that are substantially deeper than those used previously. 3.We explicitly reformulate the layers as learning r

Deep Residual Learning for Image Recognition

Kaiming HeXiangyu ZhangShaoqing RenMicrosoft Research {kahe, v-xiangz, v-shren, jiansun}@microsoft.com Abstract Deeper neural networks are more difficult to train. Wepresent a residual learning framework to ease the trainingof networks that are subst

Paper | Deep Residual Learning for Image Recognition

目录 1. 故事 2. 残差学习网络 2.1 残差块 2.2 ResNet 2.3 细节 3. 实验 3.1 短连接网络与plain网络 3.2 Projection解决短连接维度不匹配问题 3.3 更深的bottleneck结构 ResNet的意义已经不需要我在这里赘述.该文发表在2016 CVPR,至今(2019.10)已有3万+引用.由于ResNet已经成为大多数论文的baseline,因此我们着重看其训练细节.测试细节以及bottleneck等思想. 核心: We explicitly

Deep Residual Learning for Image Recognition(残差网络)

深度在神经网络中有及其重要的作用,但越深的网络越难训练. 随着深度的增加,从训练一开始,梯度消失或梯度爆炸就会阻止收敛,normalized initialization和intermediate normalization能够解决这个问题.但依旧会出现degradation problem:随着深度的增加,准确率会达到饱和,再持续增加深度则会导致准确率下降.这个问题不是由于过拟合造成的,因为训练误差也会随着深度增加而增大. 假定输入是x,期望输出是H(x),如果我们直接把输入x传到输出作为初始

Deep Residual Learning

最近在做一个分类的任务,输入为3通道车型图片,输出要求将这些图片对车型进行分类,最后分类类别总共是30个. 开始是试用了实验室师姐的方法采用了VGGNet的模型对车型进行分类,据之前得实验结果是训练后最高能达到92%的正确率,在采用了ImageNet训练过的DataLayer之后,可以达到97%的正确率,由于我没有进行长时间的运行测试,运行了十几个小时最高达到了92%的样子. 后来是尝试使用Deep Residual Learning的ImageNet(以后简称ResNet)的实现方法,十几个小

关于深度残差网络(Deep residual network, ResNet)

题外话: From <白话深度学习与TensorFlow> 深度残差网络: 深度残差网络的设计就是为了克服这种由于网络深度加深而产生的学习效率变低,准确率无法有效提升的问题(也称为网络退化). 甚至在一些场景下,网络层数的增加反而会降低正确率.这种本质问题是由于出现了信息丢失而产生的过拟合问题(overfitting,所建的机器学习模型或者是深度学习模型在训练样本中表现的过于优越,导致在验证数据集及测试数据集中表现不佳,即为了得到一致假设而使假设变得过度复杂).解决思路是尝试着使他们引入这些刺

2016-03-09-阅读笔记: dump text + report on MS ResNet + Deep feeling about DL

1, 2014年的短文,今日看来无趣: link = here 2,  关于ultra-deep network,a newsletter to KaiMing He's 152 layers ResNet on ImageNet LINK = here 之前理解就是在imagenet上的分类准确率事最高的,但是现在看到新的描述: “Microsoft's new neural network is as good as the other networks at spotting what's