1. Receptive field (RF) 是什么?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)上的像素点在原始图像上映射的区域大小。 ——博客园
在机器视觉领域的深度神经网络中有一个概念叫做感受野,用来表示网络内部的不同位置的神经元对原图像的感受范围的大小。 ——蓝荣祎
大家知道现在CNN深度学习越来越深
为了压缩计算量越到后面的层数往往feature size越来越小
但参与“决策”往往是最后几层网络(当然有FPN等神迹)
因此
如何保证小的网络仍然具有全局性是构建CNN网络的一个重要依据
RF便是一个考量feature map中每个神经元具有多少全局性的指标
2. Receptive field 可视化
下图显示了一个常见的CNN的三层(左下角,由下往上数)
第一层feature size 5x5
第二层feature size 3x3
第三层feature size 2x2计算每一层Feature size的公式
Feature size越来越小
但是Feature size减小
每个feature上神经元可以“感知”到的原图的size--即感受野却没有减小
第一层(输入层)RF size 1x1
第二层 RF size 3x3
第三层 RF size 7x7
没错。。比原图size还大。。
因此计算得出的只是理论RF
大于实际RF~
3. Receptive field size计算公式
注:以下公式不光计算了size,还计算了神经元中心坐标
它们都是以原图(input feature作为基准的)
4. 计算Receptive field size的小程序
1) Tensorlow自带求RF的函数
不光有程序,还写了UI
良心推荐!
3) [1]中作者自制,附Python源代码
输入任何feature map的名字和在map中的索引,返回对应感受野的size及location
参考文章: