本文转载自知乎专栏:https://zhuanlan.zhihu.com/p/31004121

写这篇文章的初衷是自己需要计算感受野,但是在今天之前只对感受野有感性认识,并不知道如何定量计算。所以在网上搜关键词“感受野”、“Receptive field”,看了一下午,发现一些博客,或者是知乎文章给出的感受野计算公式不一样,也没有把公式的推导过程写出来。遂写此文章,推导计算Receptive Field的过程以及解释如何计算Receptive Field。

一、直观的了解 Receptive field (RF)

Receptive field 是啥?看看网上的大佬们怎么说。

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)上的像素点在原始图像上映射的区域大小。 ——博客园

在机器视觉领域的深度神经网络中有一个概念叫做感受野,用来表示网络内部的不同位置的神经元对原图像的感受范围的大小。 ——蓝荣祎

之所以列这么多感受野的定义,是想表明感受野的定义虽多,但大都是一个意思。通俗的说,感受野就是输入图像对这一层输出的神经元的影响有多大。形象的说,就是你的曾曾曾曾曾爷爷对他的后代们有多少影响这么一个概念。所以影响大不一定好,也许会带来用不着的糟粕。影响小也会阻碍后代学习传统知识。好了,扯回来,今天不讨论利弊,就讨论如何正确的计算感受野(RF)。

在学习计算感受野之前,先可视化一下感受野吧。举一个例子,原始图像为  ,卷积核(Kernel Size)为  ,padding 为  ,stride为  ,依照此卷积规则,连续做两次卷积。熟悉卷积过程的朋友都知道第一次卷积结果是  大小的feature map,第二次卷积结果是  大小的feature map。整个过程如图所示:

第一次卷积得到3*3的 feature map,RF为3*3 第二次卷积得到2*2的 feature map 黄色feature map对应的感受野是7*7大小

如图所示,第一层卷积结束后,感受野是3*3。在第二层卷积结束了,感受野是7*7

二、如何计算RF

公式一:这个算法从top往下层层迭代直到追溯回input image,从而计算出RF。

(N-1)_RF = f(N_RF, stride, kernel) = (N_RF - 1) * stride + kernel

其中,RF是感受野。N_RF和RF有点像,N代表 neighbour,指的是第n层的 a feature在n-1层的RF,记住N_RF只是一个中间变量,不要和RF混淆。 stride是步长,ksize是卷积核大小。

我来解释一下这个公式。(图片有点丑,不过不影响理解。)首先,我们的问题是右一的红叉叉映射到左一中,应该是什么size?自然思路就是右一的红叉叉映射到中间是什么size?因为卷积核是3*3,所以右一的红叉叉映射到中间是3*3. 那么接下来我们如果算出来中间3*3的红框框映射到左一是什么size,不就解决了我们的问题嘛。聪明的我们就发现了从中间映射到左边的size是kernel_size+stride*(3-1). 抽象一下就是kernel_size +stride*(N_RF-1)嘛。接下来就很简单了,一层又一层的迭代下去直到迭代到第一层,就求出了RF。Note: kernel_size和stride是左一的,而N_RF是中间的。

举一个小小的例子:

一个输入随意,第一层卷积核参数为ksize = 3, stride = 2,第二层ksize =3,stride=2,第三层ksize=3,stride=1.写一段代码计算RF,matlab代码如下:

ksize = 3;
strides = [1 2 2];
N_RF = 3;
for i = 1:3N_RF = (N_RF -1)*strides(i) + ksize;end
fprintf('The RF is: %d \n',N_RF)

结果:

公式二有时间再写。

三、检验你的RF

看到这里的,奖励你认真好学,送福利了。不知道自己RF算得对不对?看下面这个网站。

FOMORO AI

三个高级工程师搞的网站,可以简单的输入网络参数,就直接把你的感受野计算出来。界面如下。PS: 话说老外把科研成果转化成产品的能力简直不要太强,产品不要太大方,太漂亮。学习学习。

如何计算感受野(Receptive Field)——原理相关推荐

  1. 如何计算感受野(Receptive Field)

    一.感受野的概念 感受野指的是一个特定的 CNN 特征(特征图上的某个点)在输入空间所受影响的区域. 感受野计算时有下面的几个情况需要说明: a)第一层卷积层的输出特征图像素的感受野的大小等于滤波器的 ...

  2. 深度CNN感受野(Receptive Field)的计算

    参考 如何计算感受野(Receptive Field)--原理 FOMORO AI -> 可视化计算感受野的网站,可以用来验证自己计算的结果 Python代码 这里使用的是从后向前的计算方法,简 ...

  3. 深度学习之学习(1-2)感受野(receptive field)

    参见:原始图片中的ROI如何映射到到feature map? - 知乎 1 感受野的概念 在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(feature map)上的像素点在原始图像 ...

  4. 感受野(receptive field)

    学习RCNN系列论文时, 出现了感受野(receptive field)的名词, 感受野的尺寸大小是如何计算的,在网上没有搜到特别详细的介绍, 为了加深印象,记录下自己对这一感念的理解,希望对理解基于 ...

  5. 感受野-Receptive Field的理解

    之前在阅读yolov1的论文时,发现yolov1用到了Resnet,于是找到了Resnet论文,在研究Resnet的时候,发现自己对卷积的相关操作理解还不够深刻,于是研究卷积,发现其中一个比较重要的概 ...

  6. 什么是感受野 Receptive Field 感受野是什么意思

    有一个人写的很好,放上他写的文章 彻底搞懂感受野的含义与计算 - 知乎 然后嘞,如果你点进去不想看,那你就适合看我写的哈哈 比较浮躁,那就我来吧 首先我们得知道感受野的英文名字哈 洋气 感受野 Rec ...

  7. 深度学习笔记~感受野(receptive field)的计算

    以前对CNN中的感受野(receptive field)已经有了一些认识,基本上是从概念理解上得到的. 本篇文章给出了receptive field的计算过程和相应的python代码,对recepti ...

  8. 池化层(pooling layer) 感受野(Receptive Field) 神经网络的基本组成

    目录 (1)本文涉及的函数 (2)池化层 (3)感受野 (4)代码示例(含注释) 承接上两篇博客:卷积层(空洞卷积对比普通卷积).激活函数层 (1)本文涉及的函数 import torch impor ...

  9. 神经网络中的感受野(Receptive Field)

    在机器视觉领域的深度神经网络中有一个概念叫做感受野,用来表示网络内部的不同位置的神经元对原图像的感受范围的大小.神经元之所以无法对原始图像的所有信息进行感知,是因为在这些网络结构中普遍使用卷积层和po ...

最新文章

  1. 5 -- Hibernate的基本用法 -- 要点
  2. Elastic Stack 安装
  3. 如何在string.Format方法中输出大括号({})
  4. php 500 yii,yii2.0出现500错误怎么办
  5. 【Java】数组拷贝的四种方法
  6. 实现自动文本摘要(python,java)
  7. python编程是啥-学了Python编程之后,同是新手的他们做了什么?
  8. python分布式多进程框架 Ray
  9. 生成指定位数的坐标方法-2优化版本--建议使用的版本
  10. Idea中找不到Java Application 的xml配置文件问题研究
  11. 使用Loadrunner进行性能测试
  12. 在两台电脑之间通过网线、局域网快速传东西的几种方法
  13. 岑文初VS. 杨海朝
  14. 实现网页购物车功能,完成基本的商品价格计算等功能
  15. 网络攻防技术(郑大信安个人总结版)
  16. Spring入门实例
  17. python职业发展规划书范文_职业发展规划书精选范文
  18. 【观察】从最佳实践走向行业赋能,华为重构数字化办公新体验
  19. ominipeek 发包_omnipeek使用教程 OmniPeek无线抓包和修改数据包教程-站长资讯中心...
  20. 【UV打印机】电器之正泰交流接触器

热门文章

  1. solopi性能测试工具
  2. 斌酱归档---C语言实现Linux cp命令
  3. 一款非常好用的终端模拟器/免费ssh客户端
  4. 【ftp】ftp服务器无法登录的解决办法
  5. Vue 中调用 QQ官方的登录
  6. 我的Macbook pro使用体验
  7. 线程池ExecutorService中submit和execute区别
  8. 鸿蒙石之鉴流程,鸿蒙石之鉴完全攻略!
  9. 霍夫变换探测直线(HT最初版)
  10. re修改gpu频率_NVSMI监控GPU使用情况和更改GPU状态系列命令总结分享