ResNet v1、v2

1、ResNet v1(CVPR2016最佳论文):

(1)网络结构

    ResNet的提出主要为了解决这个问题:当网络的层数增加时,网络训练时会出现梯度消散或者梯度爆炸的问题,导致网络无法收敛,这个问题已经被归一化的初始化和中间层的BN极大解决了。然而,虽然深层网络开始收敛了,又出现了另外一个问题,那就是网络性能衰退,即随着网络深度增加,准确率先饱和然后下降,而这个问题也不是由于过拟合而产生的,因为增加更多的网络层会导致更大的训练误差。衰退问题表明并不是所有的系统都容易优化的。让我们考虑一个浅层网络和它深层的对应版本,即在浅层上多增加几层。这里有一个构建深层网络的方法,那就是增加的网络层是恒等映射,都是从浅层模型直接复制而来。这种构建方法表明,深层的模型应该比浅层的模型产生更低的训练误差,但是实验表明,当前的方案不能找出一个比这种构建方法更好的方法。

    这篇论文就是为了解决这个问题而来,它不让每个网络层直接学习拟合我们所期望的潜在映射,而希望这些网络层去学习拟合一种残差映射。用公式来描述的话:假设潜在的映射为H(x),我们让网络层去学习拟合残差F(x) = H(x) - x,这样的话原始的映射变成了F(x) + x。我们假设优化残差映射比优化原始映射更容易。在极端的情况下,如果一个恒等映射就是最优的,那么比起用堆叠的网络层去拟合恒等变换,促使网络层学习到的参数为0会更加容易。在实际情况中,恒等映射不可能是最优的,那么比起用残差块学习这个新的映射,让残差块去学习一个相对于恒等映射的残差扰动将会更加容易。

    残差网络主要由多个残差块堆叠构成,论文中提出了两种残差结构,一种是两个卷积层,另一种是三个卷积层(1*1的用于降维和升维),并且带有skip连接,残差块的结构如下:

                        

    上面是两种不同的跳跃结构,主要就是使用了不同的卷积核。左边参数要比右边的多很多(快一倍)。所以当网络很深时,用右边的比较好。 对于跳跃结构,当输入与输出的维度一样时,不需要做其他处理,两者相加就可,但当两者维度不同时,输入要进行变换以后去匹配输出的维度,主要经过两种方式,1)用zero-padding去增加维度;2)用1x1卷积来增加维度,当分辨率减少时,卷积的步长设为2 。实验最后还是选择了第二种方案。

    整个网络的结构图如下:

       

    ResNet-18主要是参考VGG进行设计的,ResNet-50是将ResNet-34中的残差单元由两层变为三层。

(2)实验结果

    数据增强参照了AlexNet和VGG,随机采样、水平翻转、减去均值、以及颜色增强。在每个卷积之后和激活函数之前,我们使用BN进行归一化处理:Conv + BN + ReLU。使用SGD算法,batchsize为256。学习率初始为0.1,误差不变时,除以10进行衰减,总共训练了60万次迭代,权重衰减为0.0001,momentum=0.9。我们没有使用Dropout技术。测试时使用10-crop测试。对于最好的结果,我们采用全卷积网络而不用全连接层,图像等比例缩放的短边设置为{ 224, 256, 384, 480, 640 },多个尺度的得分取平均值得到最后的得分。下图为实验结果,第一个为单模型的结果(B表示跳跃连接维度不同时用1*1进行降维,相同时则为恒等;C表示跳跃连接全都采用1*1的卷积进行映射),第二个为模型融合后的结果(ResNet使用6个不同深度的模型融合):

      

(3)参考:

  ResNet v1官方源码:https://github.com/tensorflow/models/blob/master/research/slim/nets/resnet_v1.py

  预训练模型(50/101/151):https://github.com/tensorflow/models/tree/master/research/slim

  论文:《Deep Residual Learning for Image Recognition》

2、ResNet v2(ECCV2016):

(1)网络结构:

    ResNet v2主要做了两件事:证明恒等映射效果好提出新的残差单元。

    第一件是分析了残差网络的反向传播,表明当残差块中的跳跃连接使用恒等映射时,梯度反向传播效果最好。论文中进行了大量的ablation research,如下图所示,包括对跳跃连接和主干单元的常数缩放、跳跃连接和主干单元引入LSTM的门控机制、只有跳跃连接引入门控机制、跳跃连接使用1*1的卷积、跳跃连接使用Dropout技术。这些实验表明,还是原始的恒等映射效果最好,这时因为引入其他操作会导致梯度传播困难并导致优化问题。此外1*1的卷积和LSTM门控机制比原始残差单元具有更多的参数和表征能力,但是误差却很高,这表明模型的衰退不是因为模型拟合能力不够,而是因为优化问题。

                   

   论文做的第二件事是通过改变残差单元的BN、ReLU、Conv的位置,进行了大量的实验,进而提出一种新的残差单元,如下图所示,最后一个结构的效果最好。

     

    最后一种残差结构有两个优点:第一个是优化更加容易,因为主干单元和跳跃连接相加后为恒等映射,因此梯度传播更快。这种影响对于越深的网络的效果越明显,因为在原始的残差单元中,主干单元和跳跃连接相加后需要经过ReLU激活函数,输入中的某些负的元素就会受到影响,而当残差单元越多时,这种影响就越明显。第二个是在激活前使用BN使模型更具有正则化的能力。在原始的残差单元中,尽管BN对特征进行了归一化,但是结果需要再加上跳跃连接,因此融合后的特征就不再具有归一化的特性。而我们提出的新残差单元把BN放在卷积之前,这样的话卷积后的结果加上跳跃连接就是归一化的。

(2)实验结果:

         

(3)参考  

  ResNet v2官方源码:https://github.com/tensorflow/models/blob/master/research/slim/nets/resnet_v2.py

  预训练模型(50/101/152/200):https://github.com/tensorflow/models/tree/master/research/slim

  论文:《Identity Mappings in Deep Residual Networks》

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值