Receptive fields。在神经网络中的定义是每一层输出的特征图(feature map)上的像素点在原始图像上映射的区域大小,用数学的语言是CNN中的某一层输出结果的一个元素对应输入层的一个映射。再通俗点的解释是,feature map上的一个点对应输入图上的区域。注意这里是输入图,不是原始图。好多博客写的都是原图上的区域,经过一番的资料查找,发现并不是原图。
举个例子,在maxpooling层中,如果它的kenerl size是2x2,输出结果中的每一个元素都是其对应输入的2x2的区域中的最大值,所以这一层的感受野大小就是2。其实感受野的大小是由kernel size和stride size一起决定的,公式是:
rfsize = f(out, stride, ksize) = (out - 1) * stride + ksize
计算时一般假定最后一层的感受野大小rfsize=1 ,以此倒推,以VGG16为例,从全连接层开始倒推,全连接层中一个元素的rfsize=1
pool5 : rfsize=f(1, 2, 2) = (1-1)*2+2=2
conv5_3: rfsize=f(2, 2, 2) = (2-1)*2+2=4
conv5_2: rfsize=f(4, 1, 3) = (4-1)*1+3=6
conv5_1: rfsize=f(6, 1, 3) = (6-1)*1+3=8
pool4 : rfsize=f(8, 2, 2) = (8-1)*2+2=16
其中out是指上一层感受野的大小。
感受野的计算:
参考文献:
https://zhuanlan.zhihu.com/p/22627224