13-感受野如何计算?

感受野Receptive field (RF)的概念

卷及神经网络中每一层输出的特征图(feature map)中的每一个像素映射到原始输入图像的区域大小。

卷积输入输出的大小关系

根据感受野的概念,大家可以体会到感受野的计算应该与卷积的计算是相反的过程,所以先回顾下卷积输入输出的大小关系公式:(以高度为例)
$$
Height_{out} = (Height_{in} - F+2*P)/S + 1
$$
其中F为滤波器的边长,P为padding的大小,S为步长。

感受野的计算

上面说了感受野的计算是与卷积计算相反的过程,卷积是从低层慢慢一层层卷积到高层的,所以感受野的计算采用的是Top-Down方式,即从最高层向低层迭代计算。具体步骤为:

  1. 设要计算感受野的这层为第N层

  2. N层到第N-1层的感受野就是对第N-1层进行卷积时使用的滤波器大小,这里我们设为$RF_{N-1}$。

  3. 接着计算第N层到第N-2层的感受野大小,公式是:
    $$RF_{N-2} = (RF_{N-1} -1)*stride + kernel_size$$ (需要注意的是这里的stridekernel_size是第N-2层的)

相当于一个窗口长为2的滑窗,由后一个推出前一个。

  1. 一直迭代第3步直至输入层,即可算出第N层的感受野

这里大家注意下第3步中的公式,体会下是不是刚好与上面卷积输入输出的关系刚好反过来,$RF_{N-2}$对应$Height_{in}$,$RF_{N-1}$对应$Height_{out}$。

唯一的区别是不需要管padding,这也说明了感受野其实是包括padding在内的,所以你会发现算出来的感受野大小可能会比原始图像的大小还要大。

如上一段所说,其实这样的计算方法是有一点问题的,没有考虑padding和pooling部分,要做修改。但这种方法还是可以应对面试时候的感受野计算问题的,若是研究过程中要计算非常准确的感受野大小的话,还是得再深入研究下,大家可以看看下面的两个参考资料。

参考资料

如何计算感受野(Receptive Field)——原理
Calculate Receptive Field for VGG16


13-感受野如何计算?
https://kongyan66.github.io/2022/11/19/深度学习基础/13_弄明白感受野大小的计算问题/
作者
孔言
发布于
2022年11月19日
许可协议