在机器视觉领域的深度神经网络中有一个概念叫做感受野,用来表示网络内部的不同位置的神经元对原图像的感受范围的大小。神经元之所以无法对原始图像的所有信息进行感知,是因为在这些网络结构中普遍使用卷积层和pooling层,在层与层之间均为局部相连(通过sliding filter)。神经元感受野的值越大表示其能接触到的原始图像范围就越大,也意味着他可能蕴含更为全局、语义层次更高的特征;而值越小则表示其所包含的特征越趋向于局部和细节。因此感受野的值可以大致用来判断每一层的抽象层次。

  那么这个感受野要如何计算呢?我们先看下面这个例子。

  可以看到在Conv1中的每一个单元所能看到的原始图像范围是3*3,而由于Conv2的每个单元都是由  范围的Conv1构成,因此回溯到原始图像,其实是能够看到  的原始图像范围的。因此我们说Conv1的感受野是3,Conv2的感受野是5. 输入图像的每个单元的感受野被定义为1,这应该很好理解,因为每个像素只能看到自己。

  通过上图这种图示的方式我们可以“目测”出每一层的感受野是多大,但对于层数过多、过于复杂的网络结构来说,用这种办法可能就不够聪明了。因此我们希望能够归纳出这其中的规律,并用公式来描述,这样就可以对任意复杂的网络结构计算其每一层的感受野了。那么我们下面看看这其中的规律为何。

  由于图像是二维的,具有空间信息,因此感受野的实质其实也是一个二维区域。但业界通常将感受野定义为一个正方形区域,因此也就使用边长来描述其大小了。在接下来的讨论中,本文也只考虑宽度一个方向。我们先按照下图所示对输入图像的像素进行编号。

  接下来我们使用一种并不常见的方式来展示CNN的层与层之间的关系(如下图,请将脑袋向左倒45°观看>_<),并且配上我们对原图像的编号。

  图中黑色的数字所构成的层为原图像或者是卷积层,数字表示某单元能够看到的原始图像像素。我们用  来表示第  个卷积层中,每个单元的感受野(即数字序列的长度);蓝色的部分表示卷积操作,用  和  分别表示第  个卷积层的kernel_size和stride。

  对Raw Image进行kernel_size=3, stride 2的卷积操作所得到的fmap1 (fmap为feature map的简称,为每一个conv层所产生的输出)的结果是显而易见的。序列[1 2 3]表示fmap1的第一个单元能看见原图像中的1,2,3这三个像素,而第二个单元则能看见3,4,5。这两个单元随后又被kernel_size=2,stride 1的Filter 2进行卷积,因而得到的fmap2的第一个单元能够看见原图像中的1,2,3,4,5共5个像素(即取[1 2 3]和[3 4 5]的并集)。

  接下来我们尝试一下如何用公式来表述上述过程。可以看到,[1 2 3]和[3 4 5]之间因为Filter 1的stride 2而错开(偏移)了两位,而3是重叠的。对于卷积两个感受野为3的上层单元,下一层最大能获得的感受野为  ,但因为有重叠,因此要减去(kernel_size - 1)个重叠部分,而重叠部分的计算方式则为感受野减去前面所说的偏移量,这里是2. 因此我们就得到 

  继续往下一层看,我们会发现[1 2 3 4 5]和[3 4 5 6 7]的偏移量仍为2,并不简单地等于上一层的  ,这是因为之前的stride对后续层的影响是永久性的,而且是累积相乘的关系(例如,在fmap3中,偏移量已经累积到4了),也就是说  应该这样求

以此类推,

于是我们就可以得到关于计算感受野的抽象公式了:

经过简单的代数变换之后,最终形式为:

转:知乎 蓝荣祎

转载于:https://www.cnblogs.com/Terrypython/p/10632618.html

神经网络中的感受野(Receptive Field)相关推荐

  1. 感受野-Receptive Field的理解

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

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

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

  3. 如何计算感受野(Receptive Field)——原理

    本文转载自知乎专栏:https://zhuanlan.zhihu.com/p/31004121 写这篇文章的初衷是自己需要计算感受野,但是在今天之前只对感受野有感性认识,并不知道如何定量计算.所以在网 ...

  4. 感受野(receptive field)

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

  5. 卷积神经网络中的感受野

    感受野 感受野百度百科定义 感受野在神经网络里面定义 感受野计算方式 感受野百度百科定义 感受野在百度百科里面定义为:感受野,感受器受刺激兴奋时,通过感受器官中的向心神经元将神经冲动(各种感觉信息)传 ...

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

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

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

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

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

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

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

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

最新文章

  1. js-ES6学习笔记-Iterator和for-of循环
  2. 【深度学习】基于Pytorch的softmax回归问题辨析和应用(二)
  3. P1083 [NOIP 2012]借教室
  4. STM32mini使用UCOSII信号量和邮箱实现任务挂起和恢复
  5. 新建虚拟机Ubuntu16.4安装搜狗输入法的问题
  6. Matlab | Matlab从入门到放弃(6)——数组
  7. SAP UI5里sap.m.shell的实现
  8. win 二进制门安装mysql_MySQL5.7 windows二进制安装
  9. .h和.cpp文件的区别 .
  10. 面向对象进阶 各种可以自定制的内置方法
  11. 微信小程序,标签云效果:自定义颜色,并随机显示不同颜色
  12. 论文查重 降重复度?
  13. R语言数据分析及可视化实战
  14. 无线网络经常掉线的12种情况
  15. 企业微信三方开发:注册企业微信服务商
  16. it人成功的六大步骤
  17. Dremel made simple with Parquet (Parquet 原理分析)
  18. cmd 更改计算机名
  19. 剧场版复活的f 剧情
  20. Knockout select 例子

热门文章

  1. Vue中条件判断 v-if 、v-show
  2. LeetCode 38外观数列
  3. ITU-T Technical Paper: QoS 的参数(非常的全,共计88个)
  4. 开源视频质量评价工具: Evalvid
  5. php 上传没生成文件,php-上传时无法创建临时文件
  6. Maven打jar包的三种方式
  7. properties加载的几种方式
  8. 洛谷P3369 【模板】普通平衡树(STL做法:vectormultiset)
  9. 【Codeforces 1344 A】Hilbert‘s Hotel,哈希表,set维护
  10. 【CCCC】L2-006 树的遍历 (25分),根据后序与中序遍历建立二叉树(我讨厌树,系列1)