什么是感受野
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上的元素看到前面不同层上的区域范围是不同的,通常在不特殊指定的情况下,感受野指的是看到输入图像上的区域。
为了具体计算感受野,这里借鉴视觉系统中的概念,
准确计算感受野,需要回答两个子问,即视野中心在哪和视野范围多大。
- 只有看到”合适范围的信息”才可能做出正确的判断,否则就可能“盲人摸象”或者“一览众山小”;
- 目标识别问题中,我们需要知道神经元看到是哪个区域,才能合理推断物体在哪以及判断是什么物体。
但是,网络架构多种多样,每层的参数配置也不尽相同,感受野具体该怎么计算?
约定
在正式计算之前,先对数学符号做如下约定,
感受野大小
感受野大小的计算是个递推公式。
可视化如下图所示,
感受野中心
小结
将感受野的相关计算小结一下,
由上面的递推公式,就可以从前向后逐层计算感受野了,代码可参见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