BottleneckBlock的相关计算

BottleneckBlock的相关计算

1. 概念

BottleneckBlock - 残差块,应用在ResNet 50/101/102中

1.1 网络结构

bottleneck
瓶颈层即多个网络层的通道数像瓶颈一样,输入channel(通道)从大变小, 再从小变大。上图右侧的才是真正的BottleneckBlock,瓶颈层再加上右侧输入直达输出的shortcut connections。shortcut connections能解决网络训练的时候浅层网络层学习困难的问题。

2. 计算流程

假设输入数据格式为[batch, channel, height, weight]
输入Tensor shape为[64, 256, 13, 13]
流程图

右侧shortcut有两种情况

  • 输入和Conv_2的输出尺寸一致,尺寸与通道一致可直接进行Add运算来实现特征融合。
  • 输入大约是Conv_2的输出的两倍,在shortcut支路对输入进行1x1,步长为2的卷积运算,让输入的尺寸下降到与Conv_2的输出一致,然后再使用Batch Norm。因为使用Add做特征融合需要尺寸和通道数一致。这里尺寸缩减的问题主要在于Conv_2,进行了步长为二的卷积运算,特征图尺寸缩小约为原来的一半。
Conv_0

原图经过Conv_0后,由于进行的是1x1卷积,步长为1,所以输出尺寸不变,通道数下降

Conv_1

Conv_0 结果经过Conv_1,进行3x3卷积,感受野扩大,步长为2,尺寸缩小约为原来一般

Conv_2

Conv_1结果经过Conv_2,进行1x1卷积,输出同样尺寸的特征图,但通道数上升

Conv_shortcut

如果Conv_2尺寸和通道数与input一致,直接将input与Conv_2进行Add特征融合处理。否则调整步长为2,缩小特征图尺寸,与调整滤波器数量,对维度进行调整,保持与Conv_2输出结果Tensor shape一致,最后再进行Batch Norm处理

3. 参数量计算

假设输入格式为C x H x W。
输入尺寸为 192 x 28 x 28, 输出特征图通道为128,直接使用 3 x 3卷积,参数量为 3 x 3 x 192 x 128 = 221184。
当使用BottleneckBlock的时候,先用 1 x 1卷积下降到96个通道,再用3 x 3卷积升维到128个。参数量为1 x 1 x 192 x 96 + 3 x 3 x 96 x 128 = 129024。
能明显看到参数量下降。

4. 总结

该神经网络结构可复用,只需调整计算参数,如滤波器(卷积核)尺寸与数量, 还有滑动窗口的步长(stride),调整到适合你网络的尺寸即可复用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Alex-Leung

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

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

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

打赏作者

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

抵扣说明:

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

余额充值