《卷积的感受野计算及特征图尺寸计算》
从FPN开始,目标检测的精度大幅提升,各种特征融合方式层出不穷,多尺度的特征一大优势是解决了小目标的检测问题。核心思想是利用浅层特征预测小目标,深层特征预测大目标,那为什么浅层特征不能预测大目标呢?这就涉及到了感受野的概念,感受野太小的话是无法捕捉大目标的全部特征的,这样就会导致分类不准,进而导致模型不work,所以准确的对模型的感受野有把控是很必要的。本文会明确的告诉你如何计算卷积的不同层的感受野,包括膨胀卷积,各种步长的卷积。个人认为像ResNet、DenseNet这种我们在计算感受野的时候不不用在意short cut的感受野,因为计算的是最大感受野。
Key Words:Rreceptive field、FeatureMap shape
Beijing, 2020
作者:RaySue
卷积的感受野计算
先给出计算感受野的公式,公式中可以看出感受野和前一层感受野、卷积核大小、及此层前的卷积步长有关系,和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=RFn−1+(fK−1)i=0∏n−1Si
- 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′=(fK−1)∗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=RFn−1+(((fK−1)∗D+1)−1)i=0∏n−1Si
- conv 3x3 stride=2 Dilation=2 Padding=2
- conv 5x5 stride=2 Dilation=2 Padding=0
- conv 3x3 stride=1 Dilation=1 Padding=1
- conv 3x3 stride=1 Dilation=3 Padding=1
- 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
解析:
- 如果Dilation = 1,那么 f K f_K fK 是多少就是多少
- 如果Dilation > 1,那么就用 f K ′ = ( f K − 1 ) ∗ D + 1 f^{'}_K = (f_K - 1) * D + 1 fK′=(fK−1)∗D+1 替换之前的 f K f_K fK 即可
- 对前 n − 1 n-1 n−1 层的步长累乘
如果怀疑我算的不对的话,自行利用卷积感受野计算器验证一下即可,如果哪里写的不清楚请留言,如果有帮助请三连。
卷积层特征图尺寸计算
不同参数的卷积得到的特征图大小有时候也是很有用的,以方便你做特征融合或计算模型的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+2∗P−K+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