ResNet:Deep Residual Learning for Image Recognition

ResNet:Deep Residual Learning for Image Recognition

文章目录

          • ResNet:Deep Residual Learning for Image Recognition
          • 参考
          • 网络退化问题
          • 残差结构
            • ResNet理论
          • 网络结构
            • 训练设置
            • 其他ResNet结构
          • ResNet的效果
          • ResNet的极限深度

参考
  • 1、你必须要知道CNN模型:ResNet
  • 2、ResNet论文详解
  • 3、Caffe Scale层解析
  • 4、深度学习网络结构中超参数momentum了解
网络退化问题
  • ResNet:Deep Residual Learning for Image Recognition_第1张图片
  • 卷积网络在深度堆叠(一定的深度后)的同时,其精度并没有随之上升。如上图所示,56-layer的网络的error比20-layer的高,training和testing都是如此,说明这个不是由过拟合导致的,而是网络的退化,并且在适当的深度模型上添加更多的层会导致更高的训练误差
  • 网络层数堆叠的缺点:
    • 1.网络难以收敛,梯度消失/爆炸在一开始就阻碍网络的收敛。
    • 2.当更深的网络能够开始收敛时,暴露了一个退化问题:随着网络深度的增加,准确率达到饱和然后迅速下降。
残差结构
  • 这是论文中的残差结构,其中H(x)为观察值,F(x)就是残差输出,F(x)=H(x)-x

    • ResNet:Deep Residual Learning for Image Recognition_第2张图片
  • 由于我这两天搞了个ResNet50版的R2CNN的模型,就以此为例

    • 用的卷积块一般由以下几部分组成:conv层、BN层、Scale层(参考链接3,在pytorch中属于BN的一部分,主要用于权重缩放和偏移)、ReLU
    • 其中卷积块的kernel size一般为131的组合,当kernel size=3的时候,pad=1,如此保持特征图前两维大小不变
    • 左路的卷积块为1x1卷积,在改变输出channel时候用于input的channel转换(如果channel数和输出一致,则不用这个,这个也就是残差的两种计算方式)
    • ResNet:Deep Residual Learning for Image Recognition_第3张图片
ResNet理论
  • 残差结构确实比其他结构更易学习

    • 如果添加的层可以被构建为恒等映射,更深模型的训练误差应该不大于它对应的更浅版本。退化问题表明求解器通过多个非线性层来近似恒等映射可能有困难。通过残差学习的重构,如果恒等映射是最优的,求解器可能简单地将多个非线性连接的权重推向零来接近恒等映射。

    • 在实际情况下,恒等映射不太可能是最优的,但是残差可能有助于对问题进行预处理。如果最优函数比零映射更接近于恒等映射,则求解器应该更容易找到关于恒等映射的抖动,而不是将该函数作为新函数来学习。

    • 对于不用channel变换的残差块,公式采用:

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

      • 这里的y就是上面的H(x),F就是残差,σ是ReLU函数,实际上也就是两个卷积层的运算,对于它为什么叫做残差运算,我个人目前的理解是:先残差结构整块看成黑盒,然后输出理论上就是几个卷积的正常输出,只不过占比不同了,由于还要加上input,F的占比从100%下降为50%,因此相对于整体输出(即H(x))是残差的
    • F = W 2 σ ( W 1 x ) F = W_2σ(W_1x) F=W2σ(W1x)

      • 对于需要channel变换残差块,公式采用:
  • y = F ( x , { W i } ) + W s x y = F(x,\{W_i\})+W_sx y=F(x,{Wi})+Wsx

    • 基本上就是把原来的x用1x1卷积变换下channel数,然后和残差输出相加
网络结构
  • ResNet整体参考了VGGnet(我觉得指的是参考了卷积层kernel为3这个设定),下图左侧是VGG19,右侧是resnet-34,中间是34层不带残差的网络
    • ResNet:Deep Residual Learning for Image Recognition_第4张图片
训练设置
  • 输入:224x224
  • 标准色彩增强
  • BN层
  • 优化器:SGD
  • 学习率从0.1开始,当误差稳定时除以10
  • 训练600000个iter
  • 权重衰减为0.0001,动量(momentum,见参考链接4)为0.9
其他ResNet结构
  • ResNet:Deep Residual Learning for Image Recognition_第5张图片

  • ResNet:Deep Residual Learning for Image Recognition_第6张图片

ResNet的效果
  • ResNet:Deep Residual Learning for Image Recognition_第7张图片
  • 从这张图中的对比可以知道,残差结构可以有效缓解网络退化的问题,是的更深的网络(34-layer)的错误率更低
ResNet的极限深度
  • 下图中的ResNet在层数达到1000层的时候还是出现了退化现象,根据作者的实验,152层已经接近该版本ResNet的极限层数了
  • ResNet:Deep Residual Learning for Image Recognition_第8张图片

你可能感兴趣的:(论文阅读杂记)