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

article/2025/9/14 17:11:44

感受野

  • 一、感受野
    • 1.全连接网络与卷积神经网络
    • 2.进一步体验“感受野”
    • 3.计算感受野通用方式
    • 4.综合实例
    • 5.总结

一、感受野

感受野:卷积神经网络中每个网络层输出的特征图中的单个元素映射回原始输入特征中的区域大小,网络层越深,其输出特征的元素对应感受野越大。可以这么去描述感受野:网络层输出特征图上的一个元素点,由原始输入中多大区域映射而来,其感受野就是多大。

1.全连接网络与卷积神经网络

对于全连接网络而言,其输出中的每一个元素都受到输入特征中所有元素的影响,而对于卷积神经网络而言,利用卷积核与输入特征之间的互相关操作提取特征,输出特征中的每一个元素由卷积核在输入特征上的一次移动得到,而卷积核的每次移动均是与输入中与之对应的局部区域进行运算,既输出中的每个元素只由输入中的局部区域影响,此处所说的局部区域的大小也就是网络层输出特征中元素的感受野。
此处对全连接网络与卷积神经网络进行实例对比(网络均只有一层):
1)全连接网络:可看到共输出5个元素,每个元素都受到输入中的所有元素影响。
在这里插入图片描述
2)卷积神经网络:可看到输出中的每个元素都由(3,3)的卷积核对应输入中(3,3)的局部区域“加权求和”得到,所以该输出的特征元素对应到输入中的区域大小就是3×3,既其感受野大小为3×3。
在这里插入图片描述

2.进一步体验“感受野”

下面的示例中所有卷积核大小均为:(3,3),图中的红线表示卷积层,如步长、填充等参数都保持默认:
1)原始输入(3,3),共经历1个卷积层:此时,唯一的卷积层输出结果为(1,1),输出特征仅含有一个元素,而该元素对应输入中的3×3区域,故其感受野为3×3。

在这里插入图片描述
2)原始输入(5,5),共经历2个卷积层:此时,第一个卷积层输出结果为(3,3),而第二个卷积层输出为(1,1)。第二层的输出仅有一个元素,该元素是由第一层输出结果中(3,3)特征得到;而对于第一层输出结果而言,其中的每一个元素的感受野是3×3,所有元素是通过原始输入中的(5,5)区域映射而来,所以对于第二层输出结果来说其元素的感受野为(5,5)。
在这里插入图片描述
3)原始输入O(7,7),共经历3个卷积层:此时三个卷积层的输出依次为A(5,5),B(3,3)和C(1,1)。对于C而言,仅有一个元素,是由B中3×3区域得到;对于B而言,每个元素由A中(3,3)区域得到,所有元素由A中(5,5)区域得到;对于A而言,每个元素由原始输入O中(3,3)区域得到,所有元素由O中(7,7)区域得到,A中一个(3,3)区域的特征由O中(5,5)特征映射而来,所以对于三个卷积层的输出结果A、B、C来说,感受野依次为(3,3)、(5,5)、(7,7)。
在这里插入图片描述
由上面的例子也可以看到通常情况下,网络越深,输出的结果所拥有的感受野越大。
所以对于当前层的输出结果,要看其感受野多大可通过以下方式从当前层的输出结果反向映射,直到映射回原始输入特征,此时即可得到对应的感受野大小。比如上图中的第三层结果C,C由中的元素由B中的3×3区域得到,B中的3×3区域需要A中的5×5区域得到,而A中的5×5区域由原始输入中的7×7区域得到,所以对于C中元素而言,其感受野大小为7×7。
看到这里大家对感受野的计算如果还没透彻,请不要着急,看一下下一节的感受野计算方式,再回过头来看我画的图,是不是一目了然。

3.计算感受野通用方式

我们知道在实际搭建卷积神经网络时可能用到大量的卷积层、池化层进行堆叠构成完整的网络结构,而这两种网络层均会改变特征图的大小,实现特征之间的映射,在这两种网络层中均涉及到卷积核(或池化核)kernel_size、步长stride等参数,这些参数共同决定了输出结果对应的感受野大小。
在计算感受野的过程中需要注意以下几点:
(1)计算感受野时不考虑padding和dilation的影响;
(2)当前网络层对于当前层输入来说,感受野大小等于当前卷积核大小。如上图中最后一层的输出C相对于B来说,感受野为(3,3);
(3)采用“从后往前”的计算方式计算感受野:从当前层开始反向映射直到原始输入,先计算当前层输出在前一网络层输出中的感受野大小,再依次传递到原始输入即可得到当前层所拥有的感受野大小;
(4)感受野计算通用公式:在这里插入图片描述此处RF、S、K分别表示感受野、步长、卷积核大小,计算第i层输出结果的感受野时,利用上面公式从RF(i)一直计算到RF(1)时,RF(1)即为第i层对应的感受野大小。

有没有看到计算感受野的这个公式特别熟悉,没错这和卷积层(其他参数保持默认)计算输出结果大小的公式一毛一样:
在这里插入图片描述
很好理解,卷积层输出和输入结果的指定大小区域之间遵循上面公式。以此可得到相邻网络层之间感受野大小的计算关系。

这里我再将上一节中最后的一个示例推导一波,以此验证感受野计算公式:
输入(7,7);输出(1,1)

网络层输入卷积核步长输出感受野
Conv1(7,7)(3,3)1(5,5)(3,3)
Conv2(5,5)(3,3)1(3,3)(5,5)
Conv3(3,3)(3,3)1(1,1)(7,7)

网络共包含三个卷积层,从前往后以此标记为1,2,3层,下面从后往前计算每层感受野,当前层感受野大小受到当前层卷积核大小、步长以及下一层的感受野共同影响:
计算Conv3的感受野大小:

  • Conv3在Conv2的(3,3)输出中感受野大小等于Conv3卷积核,既RF3=3×3;
  • 要想Conv2得到RF3=3×3大小的输出,输入需提供RF2=S2(RF3-1)+K2=1×(3-1)+3=5,既RF2=5×5;
  • 同理,要想Conv1得到RF2=5×5大小的输出,输入需提供RF1=S1(RF2-1)+K1=1×(5-1)+3=7,既RF1=7×7;

因此对于Conv3的输出来说,感受野大小为(7,7).
按照此方式,大家可以自行计算Conv2输出结果的感受野为(5,5)。

4.综合实例

举一个综合实例,依据“从后往前”原则计算最后一个网络层在原始输入上的感受野大小:

索引网络层类型卷积核尺寸步长
1Conv13×31
2Conv22×22
3Pool13×31
4Conv33×31
5Pool22×22
6Conv42×22

计算Conv4层输出结果的感受野:

  • RF6=2 ;
  • RF5=S5(RF6-1)+k5=2(2-1)+2=4 ;
  • RF4=S4(RF5-1)+k4=1(4-1)+3=6;
  • RF3=S3(RF4-1)+k3=1(6-1)+3=8 ;
  • RF2=S2(RF3-1)+k2=2(8-1)+2=16;
  • RF1=S1(RF2-1)+k1=1(16-1)+3=18;

因此对于Conv4层输出结果中的元素,其在原始输入上的感受野大小为18×18。

5.总结

1)输入结果感受野一致的前提下,使用连续的小卷积核替换单个大卷积核,第一可以有效降低网络训练的参数量,第二可以增加网络深度,第三可以引入更丰富的非线性变换,使得网络可以拟合更多的可能性,更好地缓解过拟合;
输入(C,7,7),对于最终的输出其感受野为(7,7),假设每个卷积层的输出通道数均为C,我们看一下各自的参数量:
(1)使用连续的3个(3,3)卷积,其参数量为:(3×3×C)×C×3=27×C×C
在这里插入图片描述
(2)使用一个(7,7)卷积,其参数量为:(7×7×C)×C=49×C×C
在这里插入图片描述
由此看到感受野一致的前提下,使用连续的小卷积核替换单个大卷积核,可以有效降低网络训练的参数量。
2)网络浅层提取的特征针对输入特征的局部区域进行,感受野较小;而网络深层对应的感受野更大,可以体现原始输入更多的全局信息;
3)在分类任务中,合理设计网络深度,可得更合理的感受野,保证网络性能。如此操作使最后的输出结果中,元素对应的感受野可以大于等于原始输入特征的大小,这样可确保分类所用特征可以包含原始输入所有的信息。比如在一个分类网络中,原始输入大小为(64,64),而输出结果中元素对应的感受野大小超过了64×64,那么可保证最后分类判断所用特征可以体现原始输入中所有的信息。


http://chatgpt.dhexx.cn/article/UR9DoNHD.shtml

相关文章

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

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

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

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

Kafka面试题总结

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

kafka面试题知识点整理

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

kafka面试题

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

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

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

32 道常见的 Kafka 面试题

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

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

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

2022 最新 Kafka 面试题

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

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

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

VS2017安装打包插件

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

VS2017安装CLR

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

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

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

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

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

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

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

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

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

VS2017安装插件SVN

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

C#开发环境配置-VS2017安装与卸载

安装 双击安装.exe(必须保证联网) 这三项要勾选 安装完成启动程序,需要登陆账户邮箱密码,不登陆也可以使用30天。 VS2017设置起始页 vs2017将打开起始页放到了文件菜单下:文件》起始页 将程序快捷方式放在桌面是紫色的图标&am…

VS2017安装(在线、离线)

VS2017安装(离线版) ------------------------------------------------------------------------------------- 此百度云链接有博客提及的所有东西哦!!! 链接:https://pan.baidu.com/s/1zKcdSQxUetYjs3roi…

vs2017安装libjpeg库

导语 libjpeg对jpeg的功能实在是太强大了,下面简单介绍一下怎么在VS2017下安装使用。看了其他好兄弟们的攻略,把自己踩的坑总结一哈。 下载 http://www.ijg.org/ windows平台选择zip即可 编译 我们是在windows平台下,所以要么使用cmake要…