深度理解感受野(一)什么是感受野?

article/2025/9/14 17:09:29

Introduction

经典目标检测和最新目标跟踪都用到了RPN(region proposal network),锚框(anchor)是RPN的基础,感受野(receptive field, RF)是anchor的基础。本文介绍感受野及其计算方法,和有效感受野概念

什么是感受野?

感受野与视觉

  • 感受野(receptive field)这一概念来自于生物神经科学,是指感觉系统中的任一神经元,其所受到的感受器神经元的支配范围。感受器神经元就是指接收感觉信号的最初级神经元
  • 视觉的产生来自于光在个体感受器上的投射,将客观世界的物理信息转换为人能感知的神经脉冲信号

感受野的定义

One of the basic concepts in deep CNNs is the receptive field, or field of view, of a unit in a certain layer in the network. Unlike in fully connected networks, where the value of each unit depends on the entire input to the network, a unit in convolutional networks only depends on a region of the input.
This region in the input is the receptive field for that unit.

  • 在卷积神经网络中,感受野(receptive field)不像输出由整个网络输入所决定的全连接网络那样,它是可以存在于网络中任意某层,输出仅由输入部分决定
  • 就是指输出feature map上某个元素受输入图像上影响的区域
    在这里插入图片描述

如图所示,共有3个feature map输出。该图说明了2个3*3的conv可以代替1个5*5的conv层

  1. Layer1中方格可看作是一个元素,3*3的绿色方格则是一个3*3的卷积核
  2. Layer2由一个3*3的卷积核经过卷积运算输出,输出尺寸是3*3(假设stride=1,padding=0)显而易见,layer2中的绿色方格是由layer1中3*3的绿色方格所决定的。那么这一位置的感受野就是layer1中的绿色方格区域
  3. Layer3由layer2经过3*3的conv层输出,只有一个

理论感受野

https://distill.pub/2019/computing-receptive-fields/

如何计算?

卷积层的理论感受野可以由递推公式计算出来。首先定义下参数意义, r r r代表感受野 l l l代表层数 k k k代表卷积核大小 s s s代表步长
r l = r l − 1 + ( k l − 1 ) ∗ ∏ i = 0 l − 1 s i r_l = r_{l-1}+(k_l - 1)*\prod_{i=0}^{l-1}{s_i} rl=rl1+(kl1)i=0l1si
最大池化层的理论感受野
r l = r l − 1 + ( k l − 1 ) r_l = r_{l-1}+(k_l - 1) rl=rl1+(kl1)
在这里插入图片描述

图中,由1个conv3*3(stride=1,pad=1),1个ReLu层,1个2*2MaxPooling层(k=2,s=2,p=0)组成。 f 0 f_0 f0为输入层, f 4 f_4 f4层 为输出层。很明显能够发现, f 4 f_4 f4层的感受野为6。推导过程如下

  1. f 1 f_1 f1默认感受野为1,即 r 0 = 1 r_0=1 r0=1
  2. f 2 f_2 f2层为3*3conv层, r 1 = r 0 + ( k 1 − 1 ) ∗ ∏ i = 0 0 s 0 r_1=r_0+(k_1-1)*\prod_{i=0}^{0}{s_0} r1=r0+(k11)i=00s0 r 1 = 1 + ( 3 − 1 ) ∗ 1 = 3 r_1=1+(3-1)*1=3 r1=1+(31)1=3
  3. f 3 f_3 f3层为激活函数层ReLu,不改变理论感受野大小(也不是没作用,有效感受野里面会提到它的作用) r 2 = 3 r_2=3 r2=3
  4. f 4 f_4 f4层为3*3conv层,和上一个conv层一样, r 3 = 3 + ( 3 − 1 ) ∗ 1 = 5 r_3=3+(3-1)*1=5 r3=3+(31)1=5
  5. f 5 f_5 f5层为2*2maxpooling层, r 4 = 5 + ( 2 − 1 ) ∗ 1 = 6 r_4=5+(2-1)*1=6 r4=5+(21)1=6

按照上述方法可以计算出主流的backbone理论感受野大小,如下图所示。 数据来自https://distill.pub/2019/computing-receptive-fields/
在这里插入图片描述
从感受野的计算公式很明显能够看出,stride kernel_size rf_size都会对其产生影响,其中srtide对感受野大小起决定性作用。

有效感受野

有效感受野是在NIPS2016中的Understanding the Effective Receptive Field in Deep Convolutional Neural Networks提出的。

  • 有效感受野是一种超参数,无法像理论感受野那样被精确计算。但是文献[2]中采用求偏导数的方法对每个图像上的像素点,计算出他们对输出特征图的贡献值,并可视化。
  • 有限感受野往往比理论感受野要小一些,关系大概是anchor<有效感受野<理论感受野
  • 有效感受野呈高斯分布,并不是所有像素点的贡献都相同。直观的来说,感受野中间的像素对于输出会有更大的影响

以下内容整理自:https://blog.csdn.net/DD_PP_JJ/article/details/104448825

Alt
采用不同初始化权重的方法和添加ReLU作为激活函数进行实验。Uniform初始化方法使卷积核的权重都为1,没有非线性性质。引入ReLU之后,网络中增加了非线性性,分布变得a bit less Gaussian

在这里插入图片描述

在这里插入图片描述
不同的激活函数对ERF的分布也有影响,这说明ERF的分布也取决于input。ReLU的高斯分布没有另外两个平滑,生成了一个较少的高斯分布,ReLU导致很大一部分梯度归零。上采样和空洞卷积可以增大感受野

在这里插入图片描述
文章中也给出了答案,见上图,随着网络层数的加深,实际有效的感受野是程 n \sqrt{n} n 级别增长。而右图展示了随着网络层数的加深,有效感受野占理论感受野的比例是按照 1 n \frac{1}{\sqrt{n}} n 1级别进行缩减的。其中需要注意的是实际感受野的计算方式:若像素值大于(1-96.45%)的中心像素值,就认为该像素处于实际感受野中

哪些操作可以改变感受野?

  • Convolution
  • DeConvolution
  • Pooling
  • Residential connection
  • Concatenation

参考文献

[1]A guide to convolution arithmetic for deep learning
[2]Understanding the Effective Receptive Field in Deep Convolutional Neural Networks


http://chatgpt.dhexx.cn/article/50utHwnP.shtml

相关文章

感受野的含义及计算方法

1 感受野(Receptive Field)的概念 感受野(Receptive Field)的概念&#xff1a;在卷积神经网络中&#xff0c;感受野的定义是 卷积神经网络每一层输出的特征图&#xff08;feature map&#xff09;上的像素点在原始输入图像上映射的区域大小。第一层卷积层的输出特征图像素的感…

感受野是什么?

在卷积神经网络中,感受野(Receptive Field)是指特征图上的某个点能看到的输入图像的区域,即特征图上的点是由输入图像中感受野大小区域的计算得到的。神经元感受野的值越大表示其能接触到的原始图像范围就越大&#xff0c;也意味着它可能蕴含更为全局&#xff0c;语义层次更高的…

细说卷积神经网络(CNN)中所谓的“感受野”(Receptive Field)

感受野 一、感受野1.全连接网络与卷积神经网络2.进一步体验“感受野”3.计算感受野通用方式4.综合实例5.总结 一、感受野 感受野&#xff1a;卷积神经网络中每个网络层输出的特征图中的单个元素映射回原始输入特征中的区域大小&#xff0c;网络层越深&#xff0c;其输出特征的元…

【Kafka】10道不得不会的 Kafka 面试题

博主介绍&#xff1a; &#x1f680;自媒体 JavaPub 独立维护人&#xff0c;全网粉丝15w&#xff0c;csdn博客专家、java领域优质创作者&#xff0c;51ctoTOP10博主&#xff0c;知乎/掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和副业。&#x1f680; 公众号&…

Java程序员必备的50道Kafka面试题及解析,面试再也不怕问Kafka了

前言 Apache Kafka的受欢迎程度很高&#xff0c;Kafka拥有充足的就业机会和职业前景。此外&#xff0c;在这个时代拥有kafka知识是一条快速增长的道路。所以&#xff0c;在这篇文章中&#xff0c;我们收集了Apache Kafka面试中常见的问题&#xff0c;并提供了答案。因此&#…

Kafka面试题总结

1、kafka是什么? 可以用来做什么? Kafka 是一个分布式的、高吞吐量的、可持久性的、自动负载均衡的消息队列。 它不仅可以实现传统意义上MQ功能&#xff0c;异步、解耦、削峰。 还可以作为大数据的流处理平台。 2、为什么kafka安装需要依赖Zookeeper? 配置中心&#xf…

kafka面试题知识点整理

kafka-面试题整理 刚刚学了kafka&#xff0c;整理一些面试题知识点&#xff0c;帮助记忆1、什么是kafka2、什么是消息队列3、kafka通信流程4、Leader选举流程5、副本及同步原理6、消费者消费数据的方式7、分区分配策略以及原理8、如何保证消息的可靠性9、数据有序/乱序10、幂等…

kafka面试题

1.Kafka数据积压如何处理&#xff1f; 1. 实时/消费任务挂掉导致的消费滞后 a. 任务重新启动后直接消费最新的消息&#xff0c;对于"滞后"的历史数据采用离线程序进行"补漏"。b. 任务启动从上次提交offset处开始消费处理 如果积压的数据量很大&#xff0c…

Kafka 面试题,看这一篇就够了

Kafka 基础 消息系统的作用 大部分小伙伴应该都清楚&#xff0c;这里用机油装箱举个例子&#xff1a; 所以消息系统就是如上图我们所说的仓库&#xff0c;能在中间过程作为缓存&#xff0c;并且实现解耦合的作用。 引入一个场景&#xff0c;我们知道中国移动&#xff0c;中国联…

32 道常见的 Kafka 面试题

最近很多粉丝后台留言问了一些大数据的面试题&#xff0c;其中包括了大量的 Kafka、Spark等相关的问题&#xff0c;所以我特意抽出时间整理了一些大数据相关面试题&#xff0c;本文是 Kafka 面试相关问题&#xff0c;其他系列面试题后面会陆续整理&#xff0c;欢迎关注过往记忆…

Kafka面试题及答案整理 110道 (持续更新)

最新Kafka面试题【附答案解析】Kafka面试题及答案&#xff0c;Kafka最新面试题及答案&#xff0c;Kafka面试题新答案已经全部更新完了&#xff0c;有些答案是自己总结的&#xff0c;也有些答案是在网上搜集整理的。这些答案难免会存在一些错误&#xff0c;仅供大家参考。如果发…

2022 最新 Kafka 面试题

Kafka 面试题 1、如何获取 topic 主题的列表2、生产者和消费者的命令行是什么&#xff1f;3、consumer 是推还是拉&#xff1f;4、讲讲 kafka 维护消费状态跟踪的方法5、讲一下主从同步\6、为什么需要消息系统&#xff0c;mysql 不能满足需求吗&#xff1f;1.解耦&#xff1a;2…

20道常见的kafka面试题以及答案

JAVA面试宝典&#xff0c;搞定JAVA面试&#xff0c;不再是难题&#xff0c;系列文章传送地址&#xff0c;请点击本链接。 目录 1、kafka的消费者是pull(拉)还是push(推)模式&#xff0c;这种模式有什么好处&#xff1f; 2、kafka维护消息状态的跟踪方法 3、zookeeper对于ka…

VS2017安装打包插件

1、打开VS2017&#xff1a;工具-》》扩展和更新-》》 2、搜索Microsoft Visual Studio 2017 Installer Projects 3、点击下载&#xff0c;下载完成 4、按照提示&#xff0c;关闭所有VS后&#xff0c;自动安装 5、选择修改 6、安装完成

VS2017安装CLR

打开Visual Studio Community 2017&#xff0c;选择更改&#xff0c;然后在右侧安装详细信息将C/CLI支持打上勾&#xff0c;然后更新就可以了。 在VS里面新建项目就可以看见已经有CLR了。

VS2017安装成功后,无MFC选项解决办法

在安装VS2017时&#xff0c;勾选了安装MFC工作负载&#xff0c;但是新建项目时没有MFC选项。解决办法如下&#xff1a; 首先打开VS INSTALLER&#xff0c;点击修改 发现已经勾选MFC工作负载&#xff0c;点击右侧“安装详细信息”栏中的“使用C的桌面开发” 勾选“用于X86和X6…

vs2017安装勾选哪些_vs2017安装以编写c语言

安装这两个插件就行了 创建第一个项目 注意&#xff1a;C 是在 C 语言的基础上进行的扩展&#xff0c;所有在本质上&#xff0c;C 已经包含了 C 语言的所有内容&#xff0c;所以大部分 IDE 会默认创建后缀名为 .cpp 的C 源文件。为了大家养成良好的规范&#xff0c;写 C 语言代…

VS2017安装qt插件失败(已解决)

VS2017安装qt插件失败(已解决&#xff09; 试过很多方法没有解决此问题&#xff0c;偶然间删除一个文件夹&#xff0c;重新安装就成功了。 解决方法&#xff1a;删除红色框中的文件夹即可。&#xff08;该文件路径在C盘的用户文件夹中查找&#xff0c;勾选隐藏的项目即可看到隐…

vs2017 安装Qt VS Tools ,新建项目没有Qt GUI Application选项 ,解决方法

一、查看测试栏有没有该选项 二、如果也没有&#xff0c;就是Qt GUI Application版本太高 1、已知Qt VS Tools 2.4.0和Qt VS Tools 2.1.2是有的&#xff0c; 分享一个Qt VS Tools 2.1.2 链接&#xff1a;https://pan.baidu.com/s/18AmBnxQHqmVspsPlQmbPBw 提取码&#xff1a;1…

VS2017安装插件SVN

材料 VS安装程序。VisualSVN安装程序。 前期准备 在代码管理的服务器上安装SVN server。 在本机安装TortoiseSVN&#xff08;也就是SVN的客户端&#xff0c;可在文件库中查看代码以及文档&#xff09;。 Visual Studio安装SVN插件 安装VisualSVN&#xff0c;按照软件提示一…