详解CNN的感受野

article/2025/9/14 16:05:37

目录

前言

CNN特征图可视化

感受野计算公式

计算Receptive Field Size的小程序


前言

感受野(receptive field,RF)也许是CNN中最重要的概念之一,从文献上来看,它应当引起足够的重视。目前所有最好的图像识别方法都是在基于感受野理念来设计模型架构。然而,据我所知,目前并没有一个完整的教程来介绍如何计算并可视化一个CNN的感受野。这篇文章将填补这一空白,这里介绍CNN特征图可视化的一种新方法,可视化可以显示感受野信息,并且给出一个完整的感受野计算公式,它适用于任何CNN架构。我也实现了一个简单的程序来验证这个计算公式,任何人都可以利用该公式计算它们所设计的CNN的感受野,从而对所设计的架构有更多的认识。

要阅读这篇文章,你必须要熟悉CNN的核心概念,特别是卷积和池化操作。你可以通过阅读这篇论文(A guide to convolution arithmetic for deep learning)来复习CNN的基础知识。如果你对CNN有一定的了解,你将用不了半个小时来看完。这篇文章实际上是在这篇论文基础上完成的,使用相同的符号标记。

CNN特征图可视化

感受野指的是一个特定的CNN特征(特征图上的某个点)在输入空间所受影响的区域。一个感受野可以用中心位置(center location)和大小(size)来表征。然而,对于一个CNN特征来说,感受野中的每个像素值(pixel)并不是同等重要。一个像素点越接近感受野中心,它对输出特征的计算所起作用越大。这意味着某一个特征不仅仅是受限在输入图片中某个特定的区域(感受野),并且呈指数级聚焦在区域的中心。这个重要的发现会在下一篇文章中讲。现在,我们关注如何计算一个特定感受野的中心位置和大小。

图1为给出了某些感受野实例。其中输入特征图大小为 \large 5 \times 5 ,采用的卷积参数如下:卷积核大小  \large k = 3 \times 3,padding大小 \large p=1\times 1 ,步长 [公式] 。经过一次卷积之后,得到大小为 [公式] 的输出特征图(绿色)。在这个特征图上继续采用相同的卷积,得到一个 [公式] 的特征图(橙色)。输出特征图的大小可以通过如下公式计算(参考A guide to convolution arithmetic for deep learning):

为了简化讲解,这里假定CNN架构是对称的,并且输入图片是方形的。因此所有的卷积层的所有参数在两个维度上都是相同的。如果CNN架构或者输入图片是非对称的,你可以为各个维度单独计算特征图的属性。

图1 CNN特征图的两种可视化方法

 

我们发现,图1左栏,feature map的size在不断减小;但是,图1右栏,每个feature神经元感知到的原图的size即感受野却没有减小,相反还增大了(从1*1到3*3再到7*7)。

 图1的左栏给出了CNN特征图可视化最常用的方式。在这个可视化中,我们可以看到每个特征图所包含的特征数,但是很难知道每个特征的感受野的中心位置和大小,对于深度CNN,我们没有办法追踪到感受野信息。右栏给出的是固定大小的CNN可视化,所有的特征图固定大小并保持与输入特征图大小一致,这可以解决前面的问题。每个特征被标记在其感受野所在的中心(从而定位出感受野中心位置)。由于一个特征图中所有的特征都有相同大小的感受野,我们可以简单地在每个特征周围画出一个边界框,从而获得感受野的大小。我们也没有必要将这个边界框向下映射到输入层,因为特征图已经与输入层具有相同的大小。图2给出了另外一个实例,其中输入特征图更大,为 \large 7 \times 7 ,与前面例子采用相同的卷积。图的左栏和右栏分别给出了固定大小CNN特征图的3D和2D可视化。可以看出感受野大小增加迅速,以至于第二个特征层的中心特征的感受野已经覆盖了整个输入特征图。这在深度CNN中是一个很重要的设计理念以提升性能。

图2 7x7大小的输入特征图的可视化

 

感受野计算公式

为了计算CNN每一层的感受野,除了要知道特征图每个维度的特征数 \large n,还需要记录每一层的其他信息,这包括当前层的感受野大小 \large r ,两个相邻特征的距离(跳跃的距离,如前面可视化所示) [公式] ,和左上角特征(第一个特征)的中心坐标 [公式] 。注意感受野(其实是特征图第一个特征的感受野)的中心坐标就等于这个特征的中心坐标,就如前面可视化中所示。当采用的卷积其核大小为 [公式] ,padding大小为 [公式] ,步长为 [公式] ,输出特征图的感受野可以按照如下公式计算:

  • 第一个式子根据输入特征图大小以及卷积参数计算输出特征图大小,前面已经说过。
  • 第二个式子计算输出特征图的特征间的间隔 \large j ,其等于上一层的间隔值乘以卷积的步长,所以间隔值将是按照步长呈指数级增长。
  • 第三个式子计算输出特征图的感受野大小,其等于前一层感受野大小加上 \large (k-1)\times j_{in} ,所以感受野是呈指数级增加,并且还有一个因子 \large k-1 。
  • 第四个式子计算输出特征图的第一个特征感受野的中心坐标,其等于第一层的中心坐标加上 \large \frac{k-1}{2} \times j_{in},再减去\large p \times j_{in} ,注意两项都要乘以前一层的间隔距离以得到实际距离。

对于第一层,一般是输入图片,其各项值为:\large n=image\_size,r=1,j=1,start=0.5 。图3给出了一个如何计算感受野的实例,图中的坐标系统中,输入层的第一个特征中心位置记为\large 0.5 。通过利用上面公式迭代地进行计算,你可以计算出CNN中所有特征图的感受野信息。

 

图3 使用感受野公式计算图1中的感受野信息

 

计算Receptive Field Size的小程序

1)Tensorflow自带的rf函数

2) FOMORO AI

一个带有UI的程序


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

相关文章

感受野计算问题

我觉得以下两篇文章,在感受野的含义和计算上,说的是比较好的。 1、深度学习:VGG(Vision Geometrical Group)论文详细讲解_HanZee的博客-CSDN博客 2、关于感受野的总结 - 知乎 我们知道一个图片经过了一个7 * 7卷积…

目标检测中的感受野

一、定义 卷积神经网络输出特征图上的像素点 在原始图像上所能看到区域的大小,输出特征会受感受野区域内的像素点的影响 在卷积神经网络中,感受野(Receptive Field)是指特征图上的某个点能看到的输入图像的区域,即特征图上的点是由输入图像中感受野大小区域的计算…

感受野的理解与调研

问题来源 讲论文的时候,突然被别人问到感受野是个什么东东? 就百度查了一下: 重要知识链接总结 画深度学习的模型图方法:知网链接 神经网络模型图网站:画模型 感受野 一、感受野的概念 感受野(Receptive Field&am…

卷积的感受野

title: 卷积的感受野 date: 2022-06-14 19:52:38 tags: 深度学习基础 卷积的感受野 文章目录 title: 卷积的感受野 date: 2022-06-14 19:52:38 tags: 深度学习基础卷积的感受野什么是感受野为什么浅层特征预测小目标,深层特征预测大目标深层特征检测大目标&#xf…

感受野

感受野 先图解一下啥是感受野 感受野具体就是通过卷积核扫描原始图片之后一个feature map的格子代表原始图片的范围大小。 如上图,这是一个55的原始图片padding11,卷积核33,步距2。卷积扫描两次的示意图。 (2个33的卷积核扫描两次…

卷积神经网络中感受野的详细介绍

"微信公众号" 本文同步更新在我的微信公众号里面,地址:https://mp.weixin.qq.com/s/qMasyxRILzyEF3YyLvjzqQ 本文同步更新在我的知乎专栏里面,地址:https://zhuanlan.zhihu.com/p/39184237 1. 感受野的概念 在卷积神经…

感受野详解

目录 概念举例感受野的计算规律两种计算感受野的方法从前往后从后往前 推导VGG16网络的感受野结构从后往前从前往后 感受野大于图片为什么要增大感受野 概念 在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征…

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

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

感受野的含义及计算方法

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

感受野是什么?

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

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

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

【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…