ResNet50超详细解析!!!

本文详细介绍了ResNet50的结构,包括stage0的卷积-BN-ReLU-Pooling过程,BINK1和BINK2的设计,以及残差结构和Bottleneck层如何减少参数并防止梯度消失。重点讨论了梯度消失问题及其解决策略。
摘要由CSDN通过智能技术生成

一、ResNet50的总体结构

如图所示,resnet50网络从input->stage0->stage1->stage2->stage3->stage4->output

stage0比较简单,输入由(3,224,224)经过64个大小为(7,7)、步长为2的卷积核,

此时输出通道数为64(卷积层输出的特征图数目等于卷积核的数量 )。

接着经过BN层(Batch Normalization),批量归一化层是一种常用于深度神经网络中的正则化技术,BN层可以加速神经网络的训练过程,可以使得网络中的梯度在反向传播过程中更加稳定。RELU是激活函数。

最后经过最大池化层,其中kernel大小为3×3,步长为2。最后输出的尺寸为224/2/2=56。

总体来说,经过stage0,形状由(3,224,224)->(64,56,56)。

BINK1、BINK2的结构 :

BINK2:

BINK2有两个参数:C,W

C:代表输入通道数。W:代表输入尺寸。

BINK2左侧经过三个卷积快(包括BN,RELU),设其输出为F(x),将F和x相加再经过Relu激活函数得到BINK2的输出。至于为什么将F和x相加后再输出后面将会介绍。 

BINK1:

BINK1有四个参数:C,W,C1,S。

S:代表卷积层中的步长,当S为1时,输入尺寸和输出尺寸相同,代表没有进行下采样。

C1:代表卷积层输出的特征图数目,即输出通道数。

C:代表输入通道数。C和C1相等说明左侧1×1的卷积层没有减少通道数,后三个stage中C=2*C1说明左侧1×1的卷积层减少了通道数。

W:代表输入尺寸,即长和宽。

BINK1相对于BINK2是输入通道和输出通道不一致的情况,BINK1右侧先经过一个卷积层,改变其输出通道数,设其输出为G(x),G函数起到了和左侧输出通道数匹配的作用,这样将F和G相加再经过Relu激活函数得到BINK1的输出。

理解了BINK1和BINK2的结构,后面的stage自然就明白,剩下就不用我讲啦。 

二、什么是残差结构?

左图所示便是残差结构。 

所谓的残差结构是在正常网络的结构中,增加一个分支结构,这样网络的输出便不再是F\left ( x \right ),而是F\left ( x \right )+x

ResNet50中在残差结构中引入了Bottleneck结构(瓶颈层),目的是降低参数的数目(多个小尺寸卷积代替一个大尺寸卷积)。

1、直接使用 3x3 的卷积核。256 维的输入直接经过一个 3×3×256 的卷积层,输出一个256维的 feature map,那么参数量为:256×3×3×256 = 589824 。

2、先经过 1x1 的卷积核,再经过 3x3 卷积核,最后经过一个 1x1 卷积核。 256 维的输入先经过一个 1×1×64 的卷积层,再经过一个 3x3x64 的卷积层,最后经过 1x1x256 的卷积层,则总参数量为:256×1×1×64 + 64×3×3×64 + 64×1×1×256 = 69632

通过对比,可以看出第二种的参数量远少于第一种的参数量。

三、梯度消失问题

 随着网络层数的增加,梯度将以指数的形式缩减,无限接近于0。  

四、残差网络为什么可以防止梯度消失?

数学推导式如下: 

引用:

梯度消失问题详解

ResNet50结构图来源 

欢迎留言交流,转载请标明出处。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wuqitong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值