logo头像

Welcome!May these help you.

ResNet

1 基本描述

原始论文: Deep Residual Learning for Image Recognition

论文复现:ResNet-TensorFlow

2 背景问题

ResNet的提出是为了解决深层网络难训练的问题

  • CNN在图像特征提取方面有非常好的拓展性,增加网络深度可以提取更多的特征,越深的层 提取的特征越抽象,越具有语义信息。
  • 直接增加网络的层数会导致梯度消失或梯度爆炸等问题是的模型训练失败。
  • 在模型中增加正则化和在模型中间增加BN(batch normalization)可避免梯度消失和梯度爆炸等问题,使得模型可训练。
  • 虽然增加正则和BN层的模型可训练,但是深层模型在训练时出现了收敛退化的问题,ResNet作者通过实验证明通过多次迭代训练是无法解决对话问题的。

3 网络结构

作者为了解决深层网络难以训练的问题,提出了残差学习,在深层的训练的时候,将输入的feature map加上浅层的feature map特征。ResNet的网络结构借鉴了VGG的网络结构,在第一层使用了7*7的大尺寸卷积核,在后面的卷积block中都使用了细小的卷积核。

3.1 残差函数

residual Learning
图3.1 残差学习block

残差函数$H(x)=F(x)+x$ F(x)可以用前向传播shortcut connection(shortcut connection)。shortcut connection就是如图所示跳过一层或多层的连接,在resnet中这个shortcut connection是简单的将恒等mapping加上当前层的输出。恒等的shortcut connection即没有增加额外的参数也没有增加计算复杂度,所以整个网络依然是可以端到端训练的。

3.2 shortcut connection

ResNet文章中作者提出shortcut connection的方式有三种

  • A:zero-padding,没有额外的参数。在mapping的四周填充0

  • B:使用$1\times1$的卷积投影增加shortcut维度,不需要改变尺寸和维度的恒等不变

  • C:全部shortcut使用$1\times1$的卷积投影

    A、B、C三种方式的优缺点主要体现在时间复杂度上,A的参数量 < B的参数量 < C的参数量。由于C对全部的shortcut都使用了$1\times1$的卷积投影,导致训练时间上近乎是B的两倍。作者通过实验分析得到C的效果略微优于A和B,这是优于C在$1\times1$的卷积上也学到了一些特征

3.3 bottleneck

考虑到更深的网络能够承受的训练时长,作者对深层网络将block改成了Bottleneck的设计对于残差函数F(x) ,使用堆叠的3层卷积网络替换block的2层,3层分别是$1\times1$,$3\times3$,$1\times1$。其中的$1\times1$的卷积是负责消减和扩展维度的。

  • non-Bottleneck和Bottleneck

    non-Bottleneck & Bottleneck
    图3.2 non-bottleneck和bottleneck结构

    图3.2左侧的是non-Bottleneck结构,shortcut connection跳过的是两个$3\times3$的卷积。右侧是bottleneck的结构。

  • 多层ResNet结构

    architecture
    表3.1 在ImageNet分类任务上的网络结构

    表3.1是基于ImageNet分类任务的ResNet网络结构,输入是$224\times224$放入图片。

    resnet

    图3.3 VGG19/普通深层网络/ResNet深层网络对比

    右侧是34层的ResNet网络结构图,图中的实线恒等连接,虚线是需要做维度变换的,用到的方法就是上面的A、B、C三种。

4 实现工作

4.1 数据预处理

ResNet在实验上对图片的处理借鉴了VGG的方法,将图片缩放到[256,480]之间的随机尺寸,然后在缩放的图片之间随机裁剪尺寸为$224\times224$的图片,这样也起到了数据增强的作用。在测试和预测的时候可以采用同样的方式随机裁剪多张图片,取预测结果的众数。

网络搭建

在卷积层之后添加BN层可以防止过拟合,每一个卷积block开始训练前保存输入,在block训练后做shortcut connection,在连接的时候考虑feature map和保存的输入维度是否一致,不一致使用上文的A、B、C三种方法做放缩。

4.2 在CIFAR-10的实验分析

数据预处理,网络的输入是$32\times32$,每个像素减去平均值。第一层是$3\times3$的卷积,然后一共使用堆叠6n层$3\times3$的卷积,feature map size分别为{32,16,8},每个feature map size堆叠2n层。卷积核的数量是{16,32,64},作者在实验中测试了n={3,5,7,9},结果error大概在7左右。

5 总结

总体上来说ResNet的网络结构并不复杂,但是提出残差学习这点,并且使得深层网络可训练简直是一次技术上的革命。ResNet基础网络大部分借鉴了VGG,其中的first convolution和后面block里的3*3的细小卷积核和使用随机裁剪的图像处理方法。ResNet的重点在于残差学习,这使得训练的深层网络在ImageNet等比赛中取得了冠军。

参考资料

微信打赏
扫码分享

感谢您的支持与分享