一、 定义
在卷积神经网络中,感受野(Receptive Field)是指特征图上的某个点能看到的输入图像的区域,即特征图上的点是由输入图像中感受野大小区域的计算得到的。
神经元感受野的值越大表示其能接触到的原始图像范围就越大,也以为这它可能蕴含更为全局,语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。因此感受野的值可以用来大致判断每一层的抽象层次。
二、计算
卷积层(conv)和池化层(pooling)都会影响感受野,而激活函数层通常对于感受野没有影响,当前层的步长并不影响当前层的感受野,感受野和填补(padding)没有关心,计算当前层感受野的公式如下:
其中 RF_i+1 表示当前层的感受野,RF_i 表示上一层的感受野,k表示卷积核的大小,例如3*3的卷积核,则k=3,S_i 表示之前所有层的步长的乘积(不包括本层),公式如下:
下面来练练手,以AlexNet举个例子:
我的一部分计算过程:
Raw = 1
Conv1 = 1+(11 - 1) x 1 = 11
Pool1 = 11+(3 - 1) x 4 = 19
Conv2 = 19+(5 - 1) x 4 x 2 = 51
·······
三、拓展
通常上述公式求取的感受野通常很大,而实际的有效感受野(Effective Receptive Field)往往小于理论感受野,因为输入层中边缘点的使用次数明显比中间点要少,因此做出的贡献不同,所以经过多层的卷积堆叠后,输入层对于特征图点做出的贡献分布呈高斯分布形状。
在使用Anchor作为强先验区域的物体检测算法中,如Faster RCNN 和 SDD,如何设置Anchor的大小,都应该考虑感受野,尤其是有效感受野,过大或过小都不好。