首发于Deep Learning
感受野(Receptive Field)的理解与计算

感受野(Receptive Field)的理解与计算

一、定义

在卷积神经网络中,感受野(Receptive Field)是指特征图上的某个点能看到的输入图像的区域,即特征图上的点是由输入图像中感受野大小区域的计算得到的

图来自[1]

神经元感受野的值越大表示其能接触到的原始图像范围就越大,也意味着它可能蕴含更为全局,语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。因此感受野的值可以用来大致判断每一层的抽象层次.[1]

二、计算

卷积层(conv)和池化层(pooling)都会影响感受野,而激活函数层通常对于感受野没有影响,当前层的步长并不影响当前层的感受野,感受野和填补(padding)没有关系, 计算当层感受野的公式如下:

RF_{i+1} = RF_{i} + (k-1)\times S_{i}

其中, RF_{i+1} 表示当前层的感受野, RF_{i} 表示上一层的感受野, k 表示卷积核的大小,例如3*3的卷积核,则 k = 3 , S_{i} 表示之前所有层的步长的乘积(不包括本层),公式如下:

S_{i} = \prod_{i=1}^{i}Stride_{i}

下面来练练手,以AlexNet举个例子

AlexNet(图来自[1])

我的一部分计算过程:

Raw = 1

Conv1 = 1 + (11 - 1)\times 1 = 11

Pool1 = 11 + (3 - 1)\times4 = 19

Conv2 = 19 + (5-1)\times4\times2 = 51

...

三、拓展

通常上述公式求取的感受野通常很大,而实际的有效感受野(Effective Receptive Field)往往小于理论感受野,因为输入层中边缘点的使用次数明显比中间点要少,因此作出的贡献不同,所以经过多层的卷积堆叠后,输入层对于特征图点做出的贡献分布呈高斯分布形状

在使用Anchor作为强先验区域的物体检测算法中,如Faster RCNN和SSD,如何设置Anchor的大小,都应该考虑感受野,尤其是有效感受野,过大或过小都不好,来自[2]


reference

1、关于感受野的理解与计算:jianshu.com/p/9997c6f5c

2、书籍《深度学习之PyTorch物体检测实战》

编辑于 03-17

文章被以下专栏收录