(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记2015

Abstract

更深的网络更难去训练。我们提出了一种残差学习框架来使得网络训练更容易训练,并可以训练更加深的网络。我们使得网络层根据层的输入学习残差函数,而不是学习未知函数。**我们提出了可理解的经验证据证明这些残差网络更容易优化,并且可以从适当增加深度来获得准确率提升。**在ImageNet数据集上,我们评估的残差网络最多到152层,比VGG网络要深8倍,但是有着更低的复杂性。集合这些残差模型,在ImageNet测试集我们取得了3.57%的错误率。这个结果赢得了ILSVRC2015分类任务,我们同样在CIFAR-10上使用100和1000层网络进行分析。

对于许多视觉任务中,特征表示representation的深度至关重要。只使用我们的深度表示,我们就取得了相对28%的提升,在COCO目标检测数据集上。深度残差网络是我们对ILSVRC以及CPCP2015的提交网络的基础,我们在ImageNet检测以及定位,COCO的检测和分割上都获得了第一名。

1.Introduction

深度CNN为图像分类领域打来了一系列的突破。深度网络自然地整合了低中高等级的特征,然后使用端对端多层方式进行分类,而特征的“等级”可以通过堆叠更多的层来丰富。最近的证据表明,网络深度十分关键,ImageNet数据集上的挑战赛领先者使用的都是很深的模型,层数16-30。一些其他的不普通的视觉识别任务同样受益于深层模型。

随着深度越来越重要,也出现了一个问题:简单地不断堆叠更多的层就可以使网络学习的更好吗?回答这个问题的障碍就是著名的梯度消失和爆炸问题,会阻止模型收敛。然而这个问题通过归一化初始化以及中间的归一化层被很好的处理了,可以使得有着十多层的网络使用反向传播的SGD收敛。

当更深层的网络开始收敛,一个退化问题就出现了:随着网络深度增加,准确率慢慢饱和,然后迅速下降。然而这种退化不是由于过拟合引起的,对一个正合适的深层模型增加更多层会导致更高的训练错误,图1展示出一个例子。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

训练准确率的退化表明,不是所有的系统都一样容易优化。**让我们考虑一个更浅层的结构以及对它增加更多层的counterpart。通过构建更深层的模型,可以找到一种解决方案:添加的层使identity mapping,其他的层是从学习到的浅层模型中复制得到的。**这种构建方法的存在表明,更深层的万国应该比浅层的counterpart不产生更高的训练错误。但是实验表明,我们目前的求解器不能找到与这个构建方法相当或更好的解决方法了。

本文中,我们通过引入一种深度残差学习框架来解决退化问题。**与希望每个堆叠的层直接满足一个期望映射不同,我们直接让这些层满足残差映射。**也就是说,将希望得到的映射为H(x),我们使得堆叠的非线性层满足另一个映射F(x)=H(x)xF(x) = H(x)-x,原来的期望映射就是F(x)+xF(x)+x。我们假设相比于优化原来的映射,优化残差映射更加容易。极端情况下,如果x已经是最佳的了,那么使得残差趋向0,比通过堆叠网络来趋近期望映射容易得多。

公式F(x)+xF(x)+x可以通过带有快捷恒等映射的神经网络实现,如图2所示。快捷恒等映射可以跳过一个或者多个层,在我们的实验中,**快捷恒等映射直接表现identity mapping,它们的输出被增加到堆叠层的输出,既不增加额外参数,也不增加计算复杂度。**整个网络仍然可以使用端对端的SGD通过反向传播计算,可以在不修改求解器情况下应用到现有的计算框架中。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

我们在ImageNet上进行了实验来展示退化问题并且评估我们的方法。我们展示出:

  • 我们非常深的残差网络很容易优化,但是相比较的plain网络(仅仅是堆叠层)当深度增加,展现出更高的训练错误。
  • 我们的深度残差网络更容易获得来自深度提升带来的准确率提升,差生了比之前网络都要好的结果。

在CIFAR-10数据集上出现了相似的现象,表明优化的困难以及我们方法的有效不只是对特定的网络出现。在这个数据集上,我们训练了超过100层的网络,之后扩展到1000多层。

在ImageNet分类数据集上,我们取得了接触的效果。我们的152层残差网络是在ImageNet上提交的最深的网络,但是比VGG的复杂度还要低,我们的组合在测试集取得了3.57%的top-5错误率,取得了ILSVRC2015分类比赛第一名。非常深的表示同样对其他识别任务有着接触的表现,让我们进一步赢得了ImageNet的检测和定位任务,COCO的检测和分割比赛。这更突出了残差学习的强大,我们希望它可以进一步应用到其他视觉和非视觉任务中。

2. Related Work

**Residual Representations。**在图像识别中,VLAD是根据字典针对残差矢量进行编码的一种表示,Fisher Vector可以看做VLAD的一种形式。这两种都是浅层特征,对于矢量量化,对残差向量解码比对原始向量解码更有效率。

在低等级视觉和及计算机图形学中,对于解决偏微分方程(PDEs),广泛使用的Multigrid方法将系统重新构造为多个尺度的子问题,其中每个子问题负责在较粗和较细尺度之间的残差解。一种Multigrid的替代方法是hierarchical basis preconditioning,这依赖于代表两个尺度之间的残差向量的变量。研究已经表明,这些求解器的收敛速度比不知道解决方案残差性质的标准求解器快得多。这些方法表明,良好的重构或预处理可以简化优化过程。

**Shortcut Connections。**快捷链接的理论和尝试都已经研究了很久。早期的尝试时训练多层感知机是从网络输入到输出增加一个线性层。在一些论文中,一些中间层被直接连接到备用分类器,用来解决梯度消失与梯度爆炸。[39,38,31,47]的论文提出了通过快速连接实现的使响应,梯度和传播错误居中的方法。在[44]中,“Inception”层由快捷分支和一些更深的分支组成。

在我们工作的同时,“highway networks”提出了带有门函数的快捷连接,这些门依赖于数据,并且有参数,相反我们的快捷恒等映射没有参数。当一个gated shortcut关上时(接近0),highway网络的这一层就代表非残差函数。**相反,我们的模型总是学习残差函数,我们的快捷恒等映射从不关闭,所有的信息都被传过去,来学习另外的残差函数。**另外highway网络在网络深度增加很大时(超过100层)没有去的准确率提升。

3. Deep Residual Learning

3.1 Residual Learning

让我们认为H(x)H(x)是几层堆叠网络需要拟合到的映射,不一定是整个网络需要拟合到的,x表示这几层的第一层输入。**如果假设多个非线性层可以近似表示复杂的函数,那么也可以假设它们可以近似表示残差函数,即H(x)xH(x)-x,假设输入输出维度相同。**所以,相比于让这几层来近似达到H(x)H(x),我们让这几层来近似残差函数F(x)=H(x)xF(x)=H(x)-x。原来的函数因此就变成了F(x)+xF(x)+x。尽管两种形式都能近似表示需要的函数,但是学习的简单很重要。

我们的这种设置受到了图1左边这种反常的退化问题的启发,正如我们介绍的那样,如果增加的层可以通过identity mapping来构建,那么更深的网络的错误应该不高于原来的网络。这种退化问题就表明,求解器在近似这个identity mapping的过程上存在困难。使用残差学习形式,如果identity mapping已经达到了最佳,即H,求解器直接将参数置为0即可保证获得最佳情况。

现实情况中,不太存在identity mapping就是最佳的情况,但是我们的残差学习可以帮助来尽可能逼近这种情况。通过实验我们发现学习到的残差函数响应比较小,这表明identity mapping提供了较好的预处理。

3.2 Identity Mapping by Shortcuts

我们对每几层的堆叠网络使用残差学习。图2展示了一个building block。本文中,我们正式将building block定义为:(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

这里面x,y是这几层的输入和输出向量,**函数F代表需要学习的残差映射。对于图2,有两层,F=W2σ(W1x)F=W_2\sigma(W_1x)σ\sigma表示ReLU,为了简化符号,省略了偏置。**操作F+x通过一个快捷链接来完成,按元素相加。之后再加一个ReLU非线性,输出。

这个快捷链接既没有额外的参数也没有额外的计算复杂度。不仅在实际中有吸引力,同样在我们的plain和残差网络的对比中也很重要。我们使用有着相同数量参数、深度、宽度以及计算花费的plain和residual网络进行对比,唯一的差别就在于有没有快捷链接。

x与F的维度必须一致,如果不一致的话(当改变了输入或输出的通道),我们通过快捷链接使用一个线性投影WsW_s来进行维度匹配。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H57YGLQq-1590479528115)(…/…/…/Typora/upload/image-20200524203305758.png)]

**我们同样可以在式1中使用方阵WsW_s。**但是我们将通过实验表明,identity mapping足以解决退化问题,并且计算量可以接受,因此方阵WsW_s只用于维度匹配。

残差函数F的形式很灵活。本文的实验的F有两层或三层(图5),然而也可以使用更多的层。如果只使用一层的话,那么就与普通的线性层相似,没有提供额外的优点。

我们还注意到,尽管为简化起见,上述符号是关于全连接层的,但它们也适用于卷积层。函数F(x,Wi)F(x,{W_i})可以表示多个卷积层,快捷连接之后相加的操作就是两个特征图按通道相加。

3.3 Network Architectures

我们测试了多种plain/residual网络,观察到一致的现象。我们下面描述两种在ImageNet上的网络。

**Plain Network。**我们的plain网络(图3middle)遵循着VGG网络(图3left)的逻辑。卷积层大部分是3 * 3的,遵循着两个设计原则:

  • 对于相同尺寸的输出特征图,有着相同数量的卷积核
  • 如果特征图尺寸减半,卷积核数量范围,以便每层保持相同的时间复杂度。

我们使用步长为2的卷积来下采样,最后通过全局平均池化,然后FC层输出1000-way的softmax。图3middle的网络一共有34层。

值得注意的是,我们的模型比VGG有更少的卷积核以及更低的复杂度,我们的34层网络有大约3.6billion FLOPS(multiply-adds),仅仅是VGG-19的18%。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

**Residual Network。**在上面plain网络基础上,我们插入快捷链接来使得网络转换为残差版本。恒等映射当输入和输出同一维度时可以直接使用,当维度增加时,**我们考虑两个选项,一是快捷连接使用额外的0来进行padding,来增加维度。这个操作没有增加额外的参数。二是使用公式2中的线性投影来匹配维度。**这两种选项都使用步长2.

3.4 Implementation

为了尺度的增强,我们将图像随机resize到短边[256,480],随机采样一个224 * 224以及他的水平翻转,并且减去pixel mean。也使用了标准的颜色增强。我们使用batch normalization(BN)在每一层的卷积后,**前。我们从头训练网络,使用mini-batch为256的SGD。学习率初始为0.1,当不再提升除以10,模型训练60 * 10^4迭代,使用0.0001的权值衰减以及0.9的动量。我们没有使用dropout。

测试使用标准的10-crop测试,为了取得最好的结果,我们使用VGG中的FC层形式,再多尺度平均得分,尺度分别为(短边)224、256、384、480、640。

4. Experiments

4.1 ImageNet Classification

我们在有着1000类目标的ImageNet2012数据集上评估我们的方法,模型在1.28million训练集上训练,在50k验证集上评估。我们同样获得了在100k测试集上的结果,我们使用top-1和top-5来评估。

**Plain Networks。**我们首先评估18层和34层的plain版本。18层的网络结构见表1。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

表2的结果表明,34层比18层有着更高的验证错误。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

为了找出原因,图4(左)我们对比了训练流程中它们的训练/验证错误。我们观察到退化问题,34层在整个训练过程中都有着更高的错误。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

我们认为这种优化的困难不是由于梯度消失引起的。这些plain网络使用BN训练,这确保前向传播有着非0的方差。我们也验证了使用BN反向传播梯度也很好。所以前向和反向信号都没有消失。实际上34层的plain网络仍然可以得到不错的准确率(表3),这表明求解器在正常工作。我们推测深的plain网络可能有着指数地低收敛率,这会导致训练错误的减少,真正原因需要今后继续研究。

**Residual Networks。**接下来我们评估18层和34层的残差网络(ResNets)。**基础结构与上面一致,只不过对每对3 * 3的卷积核添加了一个快捷链接。**刚开始我们对所有的shortcut使用identity mapping,使用0-padding来增加维度(选项A),它们相比于plain网络没有参数增加。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

从表2和图4中我们有三个主要发现。首先,使用残差网络之后,情况翻转了,34层比18层效果好,更重要的是,34层ResNet展示出更低的训练误差和验证误差。这表明这种设置很好地解决了退化问题,我们可以通过增加深度获得更好的准确率。

第二,与plain版本相比,34层将top-1错误率降低了3.5%,这得益于降低了训练错误,这个对比更验证了残差学习在特别深网络的效率。

最后,我们也注意到,18层的两个版本有着相当的准确率,但是18层的ResNet收敛更快。**当网络不是很深时(18层),目前的SGD求解器仍然可以对plain net找到较好的解。**这种情况下ResNet主要提升在于更快的收敛。

Identity vs. Projection Shortcuts。我们已经展示了,没有参数的identity shortcuts对于训练有帮助,下面我们来调查式2中的投影shortcuts,在表3中,我们对比了三个选项。(A)表示使用0-padding来增加维度,所有的shortcuts都是没有参数的identity shortcuts。(B)表示投影shortcuts用于提升维度,其他的都是identity shortcuts。(C)表示所有的shortcuts都是投影的。

表3中表明,所有的三种形式都比plain形式的效果要好。B比A稍好一点,我们认为这是因为0-padding来提升维度实际上不含有残差学习。C比B好,我们认为是由于投影shortcuts之中含有额外的参数。但是ABC中的一些小的不同对于解决退化问题不是很关键,所以在下文中,我们不使用C选项,这有助于降低时间复杂度和模型尺寸。Identity shortcuts对于不提升网络复杂度来说很重要。

**Deeper Bottleneck Architectures。**接下来我们描述我们用于ImageNet的更深的网络。由于担心训练时间是否可以承担,我们将building block修正为瓶颈形式。对于每个残差函数F,我们使用堆叠的三层,而不是两层(见图5)。三层卷积层分为1 * 1、3 * 3、1 * 1卷积,1 * 1的卷积是用来降低和增加维度的,使得3 * 3层有着较小的输入输出维度,图5的两种设计时间复杂度一样。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

对于这种瓶颈的结构,没有参数的identity shortcuts就尤其重要。如果使用投影来代替identity shortcuts,时间复杂度和模型尺寸都会翻倍,因为shortcut连接在两个高纬度之间,增加了复杂度。

**50-layer ResNet:**我们使用三层的瓶颈结构却带了34层中的两层结构,得到了50层ResNet。我们使用选项B来增加维度,模型有3.8billion FLOPs。

**101-layer and 152-layer ResNets:**我们使用更多的三层blocks来得到101层和152层的ResNet。尽管深度增加了很多,152层仍比VGG16有着更低的复杂度。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

50/101/152层的ResNets比34层的更加准确。我们没有观察到退化问题,因此它们可以从深度增加中收获准确率提升。这种深度带来的收益在所有评估尺度中都有所展现。

**Comparisons with State-of-the-art Methods。**表4中,我们与之前的最好单模型进行了对比,我们的34-layer就可以取得相当的准确率。我们152层模型取得了top-5错误率4.49%,这甚至超过了之前所有的组合模型。我们组合了6个不同深度的模型,提交比赛时只使用了两个152进行组合,也取得了3.57%的错误率,获得了ILSVRC2015第一名。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

4.2 CIFAR-10 and Analysis

我们在CIFAR-10数据集上进一步研究,CIFAR-10包含10类,50k训练集以及10k测试集。我们在训练集上进行实验,在测试集评估。我们主要关注在非常深网络的表现上,而不是关注在提升最佳结果,因此我们特意使用下面的简单结构。

plain和residual结构遵循图3的形式,网络输入是32 * 32的图像,减去per-pixel mean。第一层是3 * 3卷积,然后堆叠了6n个3 * 3卷积,分布在32、18、8三种尺寸的特征图上,每种尺寸2n层,卷积核的数量分别为16、32、64。下采样使用步长为2的卷积完成,最后使用全局平均池化结束网络,送入一个10-way的FC层和softmax。一共只有6n+2堆叠的带有权重的层,结构总结如下表。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XUSqKjc1-1590479528123)(…/…/…/Typora/upload/image-20200526090223454.png)]

当使用shortcuts,它们被连接到每一对3 * 3卷积之间,在这个数据集,我们对所有的shortcuts都是用选项A(全都是identity shortcuts),所以我们的残差模型与plain对比模型有着相同的深度、宽度和参数(因为identity shortcuts没有参数)。

我们使用权重0.0001的权值衰减和0.9的动量,使用BN,没有使用dropout,mini-batch128。刚开始学习率为0.1,之后在第32k和48k迭代缩小10倍,最后结束在64k迭代。对于数据增强我们使用:对图像的每条边pad 4个像素,然后10-view,取32 * 32的crop以及翻转。测试时,我们只使用原来的32 * 32图像。

我们对比了n = 3、5、7、9,网络层数对应为20、32、44、56。图6(左)展示了plain网络的表现。深的网络随着深度增加,表现不佳,表现出更高的训练错误。这种现象与图4(左)一致。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

图6(中)展示了ResNets的表现,同样与图4相似,我们的网络可以克服这个优化问题,当深度提升,准确率也提升。

我们进一步将n=18,网络为110层,这种情况下,我们发现初始学习率0.1稍微有点大,不能开始收敛,所以我们使用0.01的初始学习率,到训练错误低于80%,再换成0.1继续。这个网络收敛的很好,它比其他深的网络比如FItNet、Highway有着更少的参数,但是取得了最好的结果。(见表6)(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

**Analysis of Layer Responses。**图7展示了每层响应值的标准偏差(std),**响应值是每个3 * 3层之后,通过BN,在ReLU之前的输出。**对于ResNets来说,这种分析也表现出残差函数的响应强大。图7显示出,ResNets相对于对应的plain网络有着更小的响应,这也证明了残差函数比非残差函数更容易收敛到0。我们同样注意到,更深的ResNets有着更小的响应值,当层数越来越深时,building block的修正能力逐渐减小。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

**Exploring Over 1000 layers。**我们将网络探索到1000层,设置n=200,1202层的网络。我们的方法仍然没有显示出优化问题,可以达到训练错误小于0.1%,测试错误率很好(7.93%,表6)。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

但是在如此深的模型上还是存在一些问题。测试结果比110层的差,主要是由于过拟合,对于这么一个小的数据集来说,网络太大了。为了获得更好的结果,很强的正则化,比如maxout和dropout使用了。上面的其他网络,我们都没有使用正则化,使用的话可能会提升效果,我们会进一步研究。

4.3 Object Detection on PASCAL and MS COCO

我们的方法在其他的识别任务上也有着很好的表现。表7和表8展示了在PASCAL VOC2007和2012以及COCO上的效果,我们使用Faster R-CNN作为检测方法,只是将backbone从VGG-16改为ResNet-101。除了网络之外,其他完全一样,所以效果的提升就是得益于我们的网络。(ResNet)Deep Residual Learning for Image Recognition论文阅读笔记

基于深度残差网络,我们在ILSVRC和COCO2015竞赛的几个任务中取得了第一名。