ResNet50超详细解析!!! 您所在的位置:网站首页 250-50×3的积差是多少怎么做 ResNet50超详细解析!!!

ResNet50超详细解析!!!

2024-07-09 22:52| 来源: 网络整理| 查看: 265

一、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结构图来源 

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有