resnet论文阅读

论文阅读:Deep Residual Learning for Image Recognition

引言:

​ 残差网络是如今运用极为广泛的一种网络,它学习残差函数,而非学习原始函数。实验表明残差函数更容易优化,并且可以通过增加深度来提高准确度。它在ILSVRC2015分类任务中获得了第一名,在COCO目标检测数据集上获得了28%的相对改进,赢得了ImageNet检测、ImageNet本地化、可可检测和可可分割等任务的第1个位置。

resnet论文阅读

论文地址:https://arxiv.org/abs/1512.03385

Code:https://github.com/KaimingHe/deep-residual-networks

​ 该论文介绍了残差网络,主要分为3大块:

​ 一、残差块的介绍

​ 二、残差块的原理

​ 三、实验结果

一、残差块介绍:

resnet论文阅读

因为深度在很多视觉识别任务中具有非常核心的重要性,很多网络变得很深,随着深度的增加出现了一个新问题,梯度爆炸与梯度消失。

resnet论文阅读

利用归一初始化与中间初始化(Batch Normalization)可以解决这个问题,如图即为归一初始化与中间初始化,简而言之就是在输入前进行标准化,同时在每个输出层之后对输出进行标准化。

标准化:

1、x先经过Wh1的线性变换后得到s1

2、将s1再减去batch的平均值μB

3、将s2乘以γ调整数值大小,再加上β增加偏移后得到s3, γ与β是训练网络是学来的

resnet论文阅读

解决了梯度消失与梯度爆炸后,又出现了网络退化问题,由图可知56层网络比20层的网络错误率更高,这种退化并不是由过拟合造成的,并且在一个合理的深度模型中增加更多的层却导致了更高的错误率,基于这个问题,提出了残差网络。

二、残差块原理:

resnet论文阅读

左边为原始的网络模块,右边为残差块。

H(x)是底层映射

F(x)多层堆叠的非线性层来拟合的映射

x是原始映射

原始的网络直接拟合所需要的函数,而残差块则拟合残差函数,即:F(x)=H(x)−x,F(x)它拟合的是底层映射与输入的差值,最后通过把输入与残差相加求得底层映射,间接拟合所需要的函数,即:H(x)=F(x)+x。相加操作是通过一条shortcut来实现,Shortcut的作用是简单地执行恒等映射,将恒等映射的输入添加到堆层的输出。论文的作者认为:尽管这两种形式都应该能够逐渐地近似期望的函数,但学习的轻松度是不同的。

F(x)拟合残差函数,F(x)=H(x)−x=F(x;{wi}),这里残差块里的层数个数是两层,残差函数可以表示为:F=W2σ(W1x),数据输入先经历第一层卷积,然后标准化(Batch Normalization),进行非线性**,**函数是(ReLU),再把它输入到第二层卷积,再经历标准化(Batch Normalization),再进行非线性**,同样**函数为(ReLU)。

resnet论文阅读

在残差块中,卷积层不会对图片的尺寸进行改变,卷积中pad为1,卷积核为3*3,步幅为2,所以图片大小不会改变,在卷积中间插有几个池化层,通过这个进行图片尺寸的缩小。

resnet论文阅读

shortcut连接分为两种,一种是输入与输出维度相同,这种情况下,两者可以直接相加,如图中的BB1,第二种是输入与输出维度不同,这种情况下,两者不可直接相加,如图中BB2

在BB1中只有卷积层,图片大小没有改变,可以直接相加:y=F(x)+x

在BB2中,图片尺寸缩小了一半,,因此不可以直接相加:y=F(x)+Wsx.论文的作者给了两种解决方法:

1)shortcut仍然使用恒等映射,在增加的维度上使用0来填充,这样做不会增加额外的参数;

2)使用一个投影矩阵Ws来匹配维度(通过1×1卷积)

对于方法二作者提出了另外一种方法,不是仅仅对于维度不同的shortcut使用方法二,而是对于所有的shortcut使用方法二,但是由于为了减少计算量与复杂度,放弃了这种方法。

resnet论文阅读

残差块中的卷积层个数可以改变,(但是不可以是一层)这里把两层的卷积层改为3层:

第一个1*1的卷积64个是为了降低维度从256降到64个

第二个3*3的层来减少输入和输出的维度

第三个1*1的卷积256个是为了恢复维度,从64恢复到256个

作者这样做是为了减少计算量,使网络可以达到更深的程度

三、实验结果

ImageNet:

resnet论文阅读

论文的作者首先测试了18层与34层的plain网络与resnet网络(使用方法一来解决维度的不同),实验表明:

1)34层的plain网络比18plain层的网络具有更高的错误率

2)与plain网络相反,34层的ResNet比18层ResNet的结果更优(2.8%),错误率更低

resnet论文阅读

作者对于shortcut的三种方法做了实验进行比较:

A:对增加的维度使用0填充

B:对增加的维度使用映射shortcuts,其它使用恒等shortcuts

C:所有的都是映射shortcuts

实验表明:

1)三种选项的模型都比对于的plain模型要好

2)B略好于A

3)C略好于B

但是作者不考虑第三种方法,他为了减少复杂度和模型尺寸,并不使用选项C的模型

resnet论文阅读

作者把resnet网络与其他网络做了对比,结果他的ResNet取得了非常好的结果

在里ResNet-50/101/152是利用了三层结构代替残差块的二层结构,使网络达到了更深的程度,从实验中可以看出深度越深效果越好,错误率越低。

cifar-10

resnet论文阅读

作者首先用cifar-10针对20层、32层、44层、56层的plain网络与resnet网络(用方法一解决维度不同)做了实验,实验结果如图所示,结果与ImageNet的实验结果一样:深度plain网络随着层数的加深,训练错误率也变大;随着resnet网络深度加深,准确率也得到了提升。

但是实验也发现了resnet的一个缺点,当层数到达1202时,错误率比层数为110的高。

resnet论文阅读

作者还用cifar-10把resent与其他深层窄模型,如FitNet和 Highway做了对比(如图)

结果:具有更少的参数,然而却达到了最好的结果

PASCAL and MS COCO

resnet论文阅读

作者采取Faster R-CNN作为检测方法,用resnet-101替换VGG-16,实验结果都表明resnet-101的结果都比VGG-16来的好,特别是在COCO标准度量上获得了6%的增加([[email protected].5,.95])相对改进了28%。