resnet结构_关于ResNet及其变体的总结(上)

ResNet作为卷积神经网络的一个里程碑式的模型一直在各个领域被应用,因此学习这样一个模型架构很有必要。网上也有很多关于这个网络的介绍,也从中衍生了很多改进的模型(无论改动幅度大小)。因此,有必要就ResNet的变体进行总结。

本篇文章涉及到的文章有:原始版本ResNet[1]、Wider ResNet[3]、ResNeXt[4]、DarkNet53[5],这几篇是我看到变化相对明显;还有一些则是改动相对小一点的,如Identity mapping[2]、Bag of Trick[6]、Dilated ResNet[7]以及torch框架下一个Blog[8],这些文章里也提及到对ResNet的改动,但是并没有整个Block地改,而是只改动了小部分。

下面就开始讲讲这些文章的改动。

原版的ResNet[1]指出一般认为,越深的网络通常会带来更好的表现,但实际上,普通的更深的网络性能不但没有提升,反而会出现下降。于是文章提出了一个假设,越深的网络应该带来至少和浅层网络一样的性能,那么如何保证这个效果呢?文章提出了skip connection,也就是一个简单的浅层特征与深层特征相加,这样保证了,即使中间的运算得到的特征没有任何作用,那么这个深层网络也可以保证和浅层有相同的性能。然而实际的效果则出乎意料地好,因为skip connection的存在,每一个特征与特征相加的Block中间的卷积只需要拟合“残差”,剩余的可以跳过“skip”给更前面的。文章中提出了两个Block,一个是BasicBlock,一个则是BottleNeck Block,如下图:

22cdfd30911198ed733783404b28c53f.png

其中,左边的是BasicBlock,用于少于50层的ResNet(通常是ResNet18、ResNet34);右边是BottleNeckBlock,用于大于等于50层ResNet(通常是ResNet50、ResNet101和ResNet152)。在较深的网络中BottleNeck会在参数上更加节约,然后还能保持性能的提升。值得注意的是在“add”操作前的卷积只需要在其后面加BN不需要Relu,而是在“add”后再Relu。整个网络结构如下图所示:

9e2b4f778ef52ddf245d523fcb31023b.png
网络左边两列采用BasicBlock,右边三列采用BottleNeck。

原始的ResNet对于训练卷积神经网路做出了很大的贡献,但是同样也有着许多可以改进的地方。首先,在[1]发表后,很多后续研究[],[]表示,残差连接并不高效,从[1]中的原文也可以看到从ResNet50到ResNet152,top5-error降低了1%(top1-error连1%都没),但是FLOPs却增加了3倍左右。

(注:在之后的文章[6]以及torch框架中的Blog[8]中,ResNet50的top1-error为24.7%的,而下图则是在arxiv上得到)

aab18ecf93c058048dd2668c73261c27.png

后续[3]提出,每一个Block中的卷积应该更宽,如下图(c):

619cc25b3209f4f808287f0b2e5eba2a.png

但是这个作为对比只能说宽模型有更好的作用,因为在拓宽了模型后参数也变得更多了。但是仍然比较快。

00724b905ca7f2d208d5f97d858d8308.png

总得来说这篇文章只是提出了一种可能性,说明了宽模型的作用。

ResNeXt[4]则同样由Kaiming组提出,在BottleNeck中的3x3 Conv用组卷积(Group Conv)的方式加入,并且提出了一个超参数“Cardinality”代表组卷积的组数。同时1x1 Conv的降维由原来的降成1/4变成降成1/2,再接3x3 Group Conv。这样保持了参数和浮点数的近似。

15d1aaa438bf5bc4eb01ef2d5055bc84.png

结果表明与原模型相比有1%提升:

e5f1bb8ed0f0614b3b82a9d9a41527ee.png

在[1]发表后,Kaiming组又发表了Identity mapping[2]文章来探讨更深的残差网络的优化问题,提出了“pre-activation”的顺序,即进入每一个Block时先进行BatchNorm+ReLU后接Conv,这样每一次相加都是直接相加而不用接BN+ReLU,实验证明这样会使更深的网络,ResNet-1001变得容易优化,而且不容易过拟合。

f92a6e399c884400165423b8070fb574.png

最终的结果表示,使用带pre-activation的ResNet-200性能达到了sota,即比InceptionV3更好。

43f69e3822bf77633fd5d0ab2b534f14.png

但是这一个现象只有很深的网络才有效果,哪怕是ResNet-164,pre-activation和普通的结构性能并没有相差多少。

第一部分就写到这里吧,下半部分会写一下DarkNet53以及其它一些关于ResNet的改动。

  1. Deep residual learning for image recognition
  2. Identity Mappings in Deep Residual Networks
  3. Wide Residual Networks
  4. Aggregated Residual Transformations for Deep Neural Networks
  5. YOLOv3: An Incremental Improvement
  6. Bag of Tricks for Image Classification with Convolutional Neural Networks
  7. Dilated Residual Networks
  8. Torch | Training and investigating Residual Nets
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值