彻底搞懂感受野的含义与计算

2020-04-26 15:05:37 浏览数 (1)

什么是感受野

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). —— A guide to receptive field arithmetic for Convolutional Neural Networks

感受野(Receptive Field),指的是神经网络中神经元“看到的”输入区域,在卷积神经网络中,feature map上某个元素的计算受输入图像上某个区域的影响,这个区域即该元素的感受野。

所以,感受野是个相对概念,某层feature map上的元素看到前面不同层上的区域范围是不同的,通常在不特殊指定的情况下,感受野指的是看到输入图像上的区域。

为了具体计算感受野,这里借鉴视觉系统中的概念,

receptive field = center surround

准确计算感受野,需要回答两个子问,即视野中心在哪和视野范围多大

  • 只有看到”合适范围的信息”才可能做出正确的判断,否则就可能“盲人摸象”或者“一览众山小”;
  • 目标识别问题中,我们需要知道神经元看到是哪个区域,才能合理推断物体在哪以及判断是什么物体。

但是,网络架构多种多样,每层的参数配置也不尽相同,感受野具体该怎么计算?

约定

在正式计算之前,先对数学符号做如下约定,

感受野大小

感受野大小的计算是个递推公式。

可视化如下图所示,

感受野中心

小结

将感受野的相关计算小结一下,

begin{aligned}j_{l} &= j_{l-1} times s_{l} \j_l &= prod_{i=1}^{l} s_{i}\r_{l} &= r_{l-1} left(k_{l}-1right) * j_{l-1} \&= r_{l-1} left(left(k_{l}-1right) * prod_{i=1}^{l-1} s_{i}right) \start_{l} &= start_{l-1} (frac{k_l - 1}{2} - p_l) * j_{l-1}end{aligned}

由上面的递推公式,就可以从前向后逐层计算感受野了,代码可参见computeReceptiveField.py,在线可视化计算可参见Receptive Field Calculator

以上。

参考

  • wiki-Receptive field
  • wiki-Receptive Field Calculator
  • arXiv-Understanding the Effective Receptive Field in Deep Convolutional Neural Networks
  • medium-A guide to receptive field arithmetic for Convolutional Neural Networks
  • medium-Topic DL03: Receptive Field in CNN and the Math behind it
  • ppt-Convolutional Feature Maps: Elements of Efficient (and Accurate) CNN-based Object Detection
  • SIGAI-关于感受野的总结
  • Calculating Receptive Field of CNN

0 人点赞