感受野Receptive field (RF)的概念
卷积神经网络中每一层输出的特征图(feature map)中的每一个像素映射到原始输入图像的区域大小。
卷积输入输出的大小关系
根据感受野的概念,大家可以体会到感受野的计算应该与卷积的计算是相反的过程,所以先回顾下卷积输入输出的大小关系公式:(以高度为例) H e i g h t o u t = ( H e i g h t i n − F + 2 ∗ P ) / S + 1 Height_{out} = (Height_{in} - F+2*P)/S + 1 Heightout=(Heightin−F+2∗P)/S+1 其中F为滤波器的边长,P为padding的大小,S为步长
感受野的计算
上面说了感受野的计算是与卷积计算相反的过程,卷积是从低层慢慢一层层卷积到高层的,所以感受野的计算采用的是Top-Down方式,即从最高层向低层迭代计算。具体步骤为:
- 设要计算感受野的这层为第N层
- 第N层到第N-1层的感受野就是对第N-1层进行卷积时使用的滤波器大小,这里我们设为 R F N − 1 RF_{N-1} RFN−1。
- 接着计算第N层到第N-2层的感受野大小,公式是:
R
F
N
−
2
=
(
R
F
N
−
1
−
1
)
∗
s
t
r
i
d
e
+
k
e
r
n
e
l
s
i
z
e
RF_{N-2} = (RF_{N-1} - 1)*stride + kernel_size
RFN−2=(RFN−1−1)∗stride+kernelsize
(需要注意的是这里的stride和kernel_size是第N-2层的)
- 一直迭代第3步直至输入层,即可算出第N层的感受野。
这里大家注意下第3步中的公式,体会下是不是刚好与上面卷积输入输出的关系刚好反过来, R F N − 2 RF_{N-2} RFN−2对应 H e i g h t i n Height_{in} Heightin, R F N − 1 RF_{N-1} RFN−1对应 H e i g h t o u t Height_{out} Heightout。
唯一的区别是不需要管padding,这也说明了感受野其实是包括padding在内的,所以你会发现算出来的感受野大小可能会比原始图像的大小还要大。
如上一段所说,其实这样的计算方法是有一点问题的,没有考虑padding和pooling部分,要做修改。但这种方法还是可以应对面试时候的感受野计算问题的,若是研究过程中要计算非常准确的感受野大小的话,还是得再深入研究下,大家可以看看下面的两个参考资料如何计算感受野-原理、Calculate Receptive Field for VGG16。