DAY7:ResNet网络结构分析

一、ResNet

 resnet在2015年的ImageNet大规模视觉识别竞赛(ImageNet Large Scale Visual Recognition Challenge, ILSVRC)中获得了图像分类和物体识别的优胜。

残差网络的特点是容易优化,并且能够通过增加相当的深度来提高准确率。其内部的残差块使用了跳跃连接,缓解了在深度神经网络中增加深度带来的梯度消失问题。因此之后很多方法都建立在ResNet50或者ResNet101的基础上完成的。

二、残差模块

提出背景:对于许多视觉识别任务而言,表示的深度是至关重要的。但是发现随着网络深度的增加,准确率达到饱和然后迅速下降。而且这种退化不是由过拟合引起的,并且在适当的深度模型上添加更多的层会导致更高的训练误差。如下图所示:

 残差模块:为了解决加深网络的情况下解决梯度消失问题引入了残差模块,对于每层的输入x,学习形成残差函数F(x) = H(x) - x, 而不是学习一些没有x的函数。如果网络已经到达最优,继续加深网络,residual mapping将被push为0,只剩下identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。

 如图所示残差网络提出两种结构:一种是identity mapping(恒等映射层),一种是residual mapping。将x输入最后输出F(x)+x。

identity mapping:把当前输出直接传输给下一层网络(全部是1:1传输,不增加额外的参数),相当于走了一个捷径,跳过了本层运算,同时在后向传播过程中,也是将下一层网络的梯度直接传递给上一层网络,这样就解决了深层网络的梯度消失问题。(F(x) = 0)

residual mapping:F(x)=H(x)-x

 论文中的两种残差网络:building block

 这两种结构分别针对ResNet34(左图)和ResNet50/101/152(右图),一般称整个结构为一个”building block"(左图BasicBlock、右图BottleNeck)。其中右图,目的一目了然,就是为了降低参数的数目。看右图,输入是一个3×3×256的特征,第一个步骤用64个1x1的卷积把256维channel降到64维,然后在最后通过1x1卷积恢复到256个channel,整体上用的参数数目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,而不使用bottleneck的话参考左图,输入假设是3x3x256,第一步经过256个卷积核3×3×256,第二部再经过256个卷积核3×3×256。所以参数数目: 3x3x256x256x2 = 1179648,差了16.94倍。

三、结构分析

下图是VGG19、加深为34层网络、加深为34层网络并使用building block扩展结构:

 右图的building block当输入和输出具有相同的维度时(实线快捷连接)时,可以直接使用恒等快捷连接(identity mapping)。当维度增加(虚线快捷连接)时,我们考虑两个选项:一是快捷连接仍然执行恒等映射,额外填充零输入以增加维度(此选项不会引入额外的参数);二是将快捷连接通过1*1卷积进行匹配维度。

 如图是Resnet不同的结构,上表一共提出了5中深度的ResNet,分别是18,34,50,101和152,首先看表的最左侧,我们发现所有的网络都分成5部分,分别是:conv1,conv2_x,conv3_x,conv4_x,conv5_x,重点介绍resnet50和resnet101(后面代表卷积和全连接层数)。

[50层计算:conv1一个7*7*64,conv2三个building block,conv3四个building block,conv4六个building block,conv5三个building block,FC。一共1+3*3+4*3+6*3+3*3+1=50]

四、代码实现

https://github.com/pytorch/vision/blob/master/torchvision/models/resnet.py#L248

参考:

https://blog.csdn.net/yaochunchu/article/details/95527188

https://blog.csdn.net/dcrmg/article/details/79263415

https://blog.csdn.net/qq_41760767/article/details/97917419

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值