感受野
什么是感受野?
The receptive field is defined as the region in the input space that a particular CNN’s feature is looking at (i.e. be affected by). —— Dang Ha The Hien
在卷积神经网络中,感受野的定义是卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小。 ——博客园
在机器视觉领域的深度神经网络中有一个概念叫做感受野,用来表示网络内部的不同位置的神经元对原图像的感受范围的大小。 ——蓝荣祎
卷积层滤波器的神经元和前一层输出数据体的局部神经元一一连接,其空间尺寸称为感受野(receptive field)大小
- 局部感受野大小:针对上一层输出数据体的空间尺寸
- 理论感受野大小:针对原始输入图像的局部空间尺寸
局部感受野计算
对于局部感受野来说,其计算公式如下:
符号
可视化

上图左右两列以不同的可视化方式显示了相同的结果。从底向上的卷积实现如下
- 输入图像大小为
,零填充为 ,卷积核大小为 ,步长为 - 输入图像大小为
,零填充为 ,卷积核大小为 ,步长为
从计算结果可知,第一层特征图的局部感受野大小为
那么对于输入图像和第二层特征图而言,其感受野计算如下:
- 输入图像大小为
,零填充为 ,卷积核大小为 ,步长为
所以理论感受野大小为
理论感受野计算
从上图右侧可知,感受野可通过中心位置(center location)和大小(size)来表示。其计算如下:
表示每个维度(宽/高)的特征数 表示零填充数 表示卷积核大小 表示步长 表示相邻特征点之间的距离(计算理论感受野的步长) 表示局部感受野的大小
上述4个公式分别用于计算局部特征图大小,理论感受野中的步长,理论感受野的大小以及第一个理论感受野的中心坐标
- 第一个式子根据输入特征图大小以及卷积参数计算输出特征图大小,前面已经说过。
- 第二个式子计算输出特征图的特征间的间隔
,其等于上一层的间隔值乘以卷积的步长,所以间隔值将是按照步长呈指数级增长。 - 第三个式子计算输出特征图的感受野大小,其等于前一层感受野大小加上
,所以感受野是呈指数级增加,并且还有一个因子 。 - 第四个式子计算输出特征图的第一个特征感受野的中心坐标,其等于第一层的中心坐标加上$(k-1)/2j_{in}
pj_{in}$ ,注意两项都要乘以前一层的间隔距离以得到实际距离。
对于输入图片而言,其

computeReceptiveField.py 实现了全网络的计算程序
另外,博客calculating-receptive-field-of-cnn推导了一个更简洁的计算各层理论感受野的公式:
$$
l_{k} = l_{k-1} + ((f_{k} -1) * \prod {i=1}^{k-1}s{i})
$$
表示第 层的理论感受野大小 表示各层滤波器大小 表示第 层的步长
有效感受野
从上节的计算中发现,理论感受野的大小甚至超过了输入图像。而论文Understanding the Effective Receptive Field in Deep Convolutional Neural Networks证明了理论感受野上的像素点对于输出特征的影响存在高斯分布的现象,从而提出了有效感受野(effective receptive field)的概念,其占据了理论感受野的一小部分(因为高斯分布通常从中心向四周迅速衰减)
论文的主要贡献如下:
- 并不是所有在感受野中的像素都对于输出单元具有相同的贡献:直观的来说,感受野中间的像素对于输出会有更大的影响(符合高斯分布)
- 前向传播中,感受野中间的像素能够传播信息到输出通过许多不同的路径,边缘的像素就相对较少。这就造成了,在反向传播中通过这些路径传来的梯度,使得中间像素有更大量级的梯度更新
- 和直接搭建多层卷积网络相比,下采样和扩张卷积( dilate conv)技术都可以增大有效感知野的大小