- ResNet论文:Deep Residual Learning for Image Recognition
ResNet网络是在由提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。下图是ResNet34层模型的结构简图。

- 在34层的ResNet网络中,首先是一个的卷积层,然后接着池化层,然后堆叠一系列的残差结构。最后在通过平均池化下采样和全连接层得到最终的输出。
网络亮点
1),而AlexNet,VGG,GoogleNet它们的深度也就在10几层到20层之间,而ResNet最多突破1000层。
2) 3) 使用加速训练(丢弃dropout)
- 在ResNet网络提出之前,传统的卷积神经网络都是通过将一系列。但是当堆叠到一定网络深度时,就会出现两个问题。梯度消失或梯度爆炸。退化问题(degradation problem)。
- 在ResNet论文中说通过数据的预处理以及在网络中使用BN(Batch Normalization)层能够解决梯度消失或者梯度爆炸问题。如果不了解BN层可参考这个链接。但是对于退化问题(随着网络层数的加深,效果还会变差,如下图所示)并没有很好的解决办法。
上图就是通过简单的将卷积层和池化层进行堆叠搭建的网络结构,图中橙的是20层的网络结构,可以发现它最终的训练错误在左右;但的网络它的训练错误率在左右,很明显通过简单堆叠卷积层和最大池化下采样层去堆叠我们的网络,并不是说层数越深效果越好。明显56层的网络还没有20层网络效果好。那为什么效果会更差呢,论文作者提出2个原因。
1)随着网络层数的不断加深,梯度消失 和梯度爆炸会越来越明显(通过BN来解决)
2)退化问题(degradation problem)
所以ResNet论文提出了(残差结构)来问题。下图是使用residual结构的卷积网络,可以看到随着网络的不断加深,效果并没有变差,反而变的更好了。


residual 结构

- 有两种不同的残差结构,左边的残差结构是针对网络层数较少的网络所使用的残差结构,比如.而右边的残差结构是针对
- 左边的残差结构,它的主线是将我们特征矩阵通过2个的卷积层得到我们的结果,然后shortcut直接从输入链接到输出,然后两个分支的输出进行操作,相加之后在通过激活函数。注意相加的前提是,两个分支输出的特征矩阵shape要完全一样。
- 右边的残差结构:主分支首先通过卷积,再通过一个的卷积层,然后再通过的卷积层,然后shortcut直接从输入链接到输出,然后两个分支的输出进行操作,相加之后在通过激活函数。,。与左边的残差结构的区别为在输入和输出都加上了的卷积层。这两个卷积的作用分别起到的作用。
实线和虚线的残差结构

- 对于2层的残差结构而言,实线部分的输入特征矩阵和输出特征矩阵是一摸一样的,所以能够直接进行相加。但是对于我们虚线的残差结构,它的输入和输出shape可以发现其实是不一样的。并且虚线残差结构中主分支的第一个卷积对应的stride=2,通过将高宽压缩为原来的一半,同时shortcut分支加上了一个的卷积核,它同样是采用步距为2的卷积核进行卷积,通过卷积后它的特征矩阵高和宽缩减为原来的一半,同时调整输出的channel和输入的channel一样。这样的话主分支和捷径分支输出的特征矩阵是一模一样的,这样才可以相加。
- 同样对于更深层次的残差结构而言,实现的残差结构输入输出shape也是一样的。对于虚线的残差结构,输出输出shape不一样,利用shortcut分支的卷积调整channel和宽高,使得可以和主分支进行。
- 虚线残差结构,主分支的第一个卷积主要起到降维的作用将深度channel从256降为128.并没有改变特征矩阵的高和宽。但是第二个的卷积层它的步距为2,通过卷积层之后输出的特征矩阵高和宽就缩减为原来的一半,变成了,然后再通过卷积层增加它的channel,使得特征矩阵从变成 。对于捷径分支通过卷积进行处理,对应的stride步距为2,通过该卷积特征矩阵的高宽缩减为原来的一半,变为,channel为512. 这样就能与主分支的输出进行相加。
,通过卷积调整输出特征矩阵的宽高以及channel.
ResNet 网络结构

- 上图所对应的是原论文给出的网络参数列表,所对应的分别是18层的网络,34层的网络,50层的网络,101层的网络,152层的网络。
- 这几个网络的基本框架都是类似的,同样都是通过一个的卷积层,然后再通过一个的最大池化下采样,然后再通过一系列的残差结构,然后最后跟上平均池化下采样以及全连接层作为输出,并将输出通过转化为概率分布。
- 表中将残差结构,分为,,,等一系列残差结构,对于ResNet34网络来说,使用了3个残差结构,对应的一系列残差结构一共有4个残差结构;接下来有对应对应的一系列残差结构一共有6个残差结构,再接下来有对应对应的一系列残差结构一共有3个残差结构.
- 对于网络中的,,,它们所对应的一系类残差结构的都是,因为第一层必须要将它上一层的特征矩阵的高和宽以及channel调整为当前层所需要的高宽以及channel.所以通过,,,中的一系列残差结构的第一层来调整通道的大小或者特征图长宽的压缩
- 对于浅层网络他们所对应的一系列残差结构的输入输出特征矩阵shape是一样的,不需要虚线的残差;而对于更深层的网络resnet50/101/152,通过最大池化下采样之后它所得到的特征矩阵shape为,但是它们输出的特征矩阵是,所以对于resnet50/101/152它们对于的所对应的一系列残差结构,它们的第一层也是虚线的残差结构,但是它们的虚线结构只用来特征输出特征矩阵的channel,而对于,,它不仅调整了channel,还改变了特征矩阵的高和宽。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/201701.html