卷积的感受野计算及特征图尺寸计算

《卷积的感受野计算及特征图尺寸计算》

  从FPN开始,目标检测的精度大幅提升,各种特征融合方式层出不穷,多尺度的特征一大优势是解决了小目标的检测问题。核心思想是利用浅层特征预测小目标,深层特征预测大目标,那为什么浅层特征不能预测大目标呢?这就涉及到了感受野的概念,感受野太小的话是无法捕捉大目标的全部特征的,这样就会导致分类不准,进而导致模型不work,所以准确的对模型的感受野有把控是很必要的。本文会明确的告诉你如何计算卷积的不同层的感受野,包括膨胀卷积,各种步长的卷积。个人认为像ResNet、DenseNet这种我们在计算感受野的时候不不用在意short cut的感受野,因为计算的是最大感受野。

Key Words:Rreceptive field、FeatureMap shape


Beijing, 2020

作者:RaySue

Agile Pioneer  


卷积的感受野计算

   先给出计算感受野的公式,公式中可以看出感受野和前一层感受野、卷积核大小、及此层前的卷积步长有关系,和Padding一点关系没有,我看到网上经常有些公式会带Padding,不理解

R F n = R F n − 1 + ( f K − 1 ) ∏ i = 0 n − 1 S i RF_n = RF_{n-1} + (f_K - 1)\prod_{i=0}^{n-1}S_i RFn=RFn1+(fK1)i=0n1Si

  • R F n RF_n RFn 表示第 n 层的感受野,第 0 层的感受野就是 1
  • f K f_K fK 表示卷积核的大小
  • S i S_i Si 表示第 i 层的步长
带孔卷积

   在实际使用卷积的时候为了增大感受野,经常使用带孔卷积,比如典型的 ASPP就通过带孔卷积来增大感受野代替通过池化来增加感受野的方式,从而有效的避免的信息的损失,而且巧妙的利用带孔卷积获取多尺度的信息。

   上图是论文中的图,其中F0->F1->F2->F3表示卷积层,具体的感受野计算就是根据如下公式,在没有分辨率和覆盖范围损失的情况下指数级增加感受野。

f K ′ = ( f K − 1 ) ∗ D + 1 f^{'}_K = (f_K - 1) * D + 1 fK=(fK1)D+1

  • D 表示膨胀系数,默认为1,即不带空洞,D等于2的时候卷积核间出现一个空洞

卷积感受野计算实例

R F n = R F n − 1 + ( ( ( f K − 1 ) ∗ D + 1 ) − 1 ) ∏ i = 0 n − 1 S i RF_n = RF_{n-1} + (((f_K - 1) * D + 1) - 1)\prod_{i=0}^{n-1}S_i RFn=RFn1+(((fK1)D+1)1)i=0n1Si

  1. conv 3x3 stride=2 Dilation=2 Padding=2
  2. conv 5x5 stride=2 Dilation=2 Padding=0
  3. conv 3x3 stride=1 Dilation=1 Padding=1
  4. conv 3x3 stride=1 Dilation=3 Padding=1
  5. conv 7x7 stride=2 Dialtion=2 Padding=1

计算过程:

  • 第 0 层的感受野是 1
  • 第一层的感受野是 1 + ((3 - 1) * 2 + 1) - 1 = 5
  • 第二层的感受野是 5 + (((5 - 1) * 2 + 1) - 1) * 2 = 21
  • 第三层的感受野是 21 + (3 - 1) * 2 * 2 = 29
  • 第四层的感受野是 29 + (((3 - 1) * 3 + 1) - 1) * 2 * 2 = 53
  • 第五层的感受野是 53 + (((7 - 1) * 2 + 1) - 1) * 2 * 2 = 101

解析:

  1. 如果Dilation = 1,那么 f K f_K fK 是多少就是多少
  2. 如果Dilation > 1,那么就用 f K ′ = ( f K − 1 ) ∗ D + 1 f^{'}_K = (f_K - 1) * D + 1 fK=(fK1)D+1 替换之前的 f K f_K fK 即可
  3. 对前 n − 1 n-1 n1 层的步长累乘

如果怀疑我算的不对的话,自行利用卷积感受野计算器验证一下即可,如果哪里写的不清楚请留言,如果有帮助请三连。


卷积层特征图尺寸计算

   不同参数的卷积得到的特征图大小有时候也是很有用的,以方便你做特征融合或计算模型的FLOPs工作等。

n o u t = n i n + 2 ∗ P − K S + 1 n_{out} = \frac{n_{in} + 2 * P - K}{S} + 1 nout=Snin+2PK+1

  • n i n n_{in} nin 输入特征图的维度
  • n o u t n_{out} nout 输出特征图的维度
  • P P P Padding 的数量
  • K K K 卷积核的尺寸
  • S S S 卷积的步长

参考

http://shawnleezx.github.io/blog/2017/02/11/calculating-receptive-field-of-cnn/
https://www.cnblogs.com/makefile/p/receptive-field.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值