感受野 深度理解

article/2025/9/14 15:05:25

知乎是个好东西,深入理解一些理念,靠博客是不行的。

感受野计算和理解的内容参考自:https://zhuanlan.zhihu.com/p/44106492 / https://zhuanlan.zhihu.com/p/40267131

后两个卷积的内容参考自: https://www.zhihu.com/question/54149221

目录

一、卷积后特征图维度的公式

二:感受野介绍:

三、感受野的直观感受 和 作用

四、感受野大小计算方式

五、从 感受野 分析 典型网络(vgg、resnet、rpn结构)

六、 有效感受野

七、 论文中用法


一、卷积后特征图维度的公式

首先,补充下计算卷积后特征图维度的公式:

N = (W − F + 2P )/S+1 (原图大小-kenal+2pad)/步长 +1

  • 输出图片大小为 N×N
  • 输入图片大小 W×W
  • Filter大小 F×F
  • padding: P
  • 步长 S
  • padding = “value”,N = [(W-F+2P)/S]+1,这里表示的是向下取整再加1
  • padding = “same”,N = [W/S],这里表示向上取整

二:感受野介绍:

stride : 网络中的每一个层有一个strides,该strides是之前所有层stride的乘积,即:

stride\left( i\right) =stride(1)\ast stride(2)\ast ...\ast stride\left( i-1 \right)

感受野:cnn中的特征图上一点,相对于原图的大小。

三、感受野的直观感受 和 作用

下图(该图为了方便,将二维简化为一维),这个三层的神经卷积神经网络,每一层卷积核的 kernel\_size=3stride=1 ,那么最上层特征所对应的感受野就为如图所示的7x7。*(看箭头的时候从上往下反着看)

作用:这个重要的思想是在VGG的主要contribution( 3 个 3 x 3 的卷积层的叠加可以替代7*7的卷积,而这样的设计不仅可以大幅度的减少参数,其本身带有多次正则性质的 convolution map 能够更容易学一个 generlisable, expressive feature space。这也是现在绝大部分基于卷积的深层网络都在用小卷积核的原因。

  • 小卷积可以代替大卷积层
  • 密集预测task要求输出像素的感受野足够的大,确保做出决策时没有忽略重要信息,一般也是越深越好
  • 一般task要求感受野越大越好,如图像分类中最后卷积层的感受野要大于输入图像,网络深度越深感受野越大性能越好
  • 目标检测task中设置anchor要严格对应感受野,anchor太大或偏离感受野都会严重影响检测性能

用这种等效的思想从感受野上看:两个堆叠的conv3x3感受野可以等于一个conv5x5,推广之,一个多层卷积构成的FCN感受野等于一个conv r*r,即一个卷积核很大的单层卷积,其kernelsize=r,padding=P,stride=S。cnn从gap划开,看成是FCN (全卷积网络)+MLP (多层感知机),前面提取特征后面加个分类器,可以理解成sobel+svm呗~CNN是不是就没那么神秘了~

再来一个二维的图:

这里面有两个 3 x 3的的卷积,可以替代一个5*5的卷积。

四、感受野大小计算方式

RF_{l+1}=RF_{l}+(kernel\_size_{l+1}-1)\times feature\_stride_{l}

其中 RF 表示特征感受野大小, l 表示层数, feature\_stride_l=\prod_{i=1}^{l}stride_i,

输入层的: l=0, RF_{0}=1 , feature\_stride_0=1 。

  • 第一层特征,感受野为3

RF_{1}=RF_{0}+(kernel\_size_{1}-1)\times feature\_stride_{0}=1+(3-1)\times 1=3

第1层感受野[1]

  • 第二层特征,感受野为5

RF_{2}=RF_{1}+(kernel\_size_{2}-1)\times feature\_stride_{1}=3+(3-1)\times 1=5

第2层感受野[1]

  • 第三层特征,感受野为7

RF_{3}=RF_{2}+(kernel\_size_{3}-1)\times feature\_stride_{2}=5+(3-1)\times 1=7

第3层感受野[1]

如果有dilated conv的话,计算公式为

RF_{l+1}=RF_{l}+(kernel\_size_{l+1}-1)\times feature\_stride_{l}\times dilation_{l+1}

五、从 感受野 分析 典型网络(vgg、resnet、rpn结构)

计算Faster R-CNN(vgg16)中conv5-3+RPN的感受野,RPN的结构是一个conv3x3+两个并列conv1x1:

声明: 输入图片224*224, r表示感受野 , S表示stride,  P表示padding,  P的计算可以通过反推 N = (W − F + 2P )/S+1 
r = 1 +2 +2 )x2 +2+2 )x2 +2+2+2 )x2 +2+2+2 )x2 +2 = 156
S = 2x2x2x2 = 16
P = ((14-1)x16-224+228)/2 = 106

分布方式为在paddding=106的输入224x224图像上,大小为156x156的正方形感受野区域以stride=16平铺。

接下来是Faster R-CNN+++和R-FCN等采用的重要backbone的ResNet,常见ResNet-50和ResNet-101,结构特点是block由conv1x1+conv3x3+conv1x1构成,下采样block中conv3x3 s2影响感受野。先计算ResNet-50在conv4-6 + RPN的感受野 (为了写起来简单堆叠卷积层合并在一起):

r = 1 +2 +2x5 )x2+1 +2x3 )x2+1 +2x3 )x2+1 )x2+5 = 299
S = 2x2x2x2 = 16
P = ((14-1)x16-224+299)/2 = 141.5

P不是整数,表示conv7x7 s2卷积有多余部分。分布方式为在paddding=142的输入224x224图像上,大小为299x299的正方形感受野区域以stride=16平铺。

ResNet-101在conv4-23 + RPN的感受野:

r = 1 +2 +2x22 )x2+1 +2x3 )x2+1 +2x3 )x2+1 )x2+5 = 843
S = 2x2x2x2 = 16
P = ((14-1)x16-224+843)/2 = 413.5

分布方式为在paddding=414的输入224x224图像上,大小为843x843的正方形感受野区域以stride=16平铺。

以上结果都可以反推验证,并且与后一种方法结果一致。从以上计算可以发现一些的结论:

  • 步进1的卷积层线性增加感受野,深度网络可以通过堆叠多层卷积增加感受野
  • 步进2的下采样层乘性增加感受野,但受限于输入分辨率不能随意增加
  • 步进1的卷积层加在网络后面位置,会比加在前面位置增加更多感受野,如stage4加卷积层比stage3的感受野增加更多
  • 深度CNN的感受野往往是大于输入分辨率的,如上面ResNet-101的843比输入分辨率大3.7倍
  • 深度CNN为保持分辨率每个conv都要加padding,所以等效到输入图像的padding非常大

六、 有效感受野

NIPS 2016论文Understanding the Effective Receptive Field in Deep Convolutional Neural Networks提出了有效感受野(Effective Receptive Field, ERF)理论,论文发现并不是感受野内所有像素对输出向量的贡献相同,在很多情况下感受野区域内像素的影响分布是高斯,有效感受野仅占理论感受野的一部分,且高斯分布从中心到边缘快速衰减,下图第二个是训练后CNN的典型有效感受野。

下面我从直观上解释一下有效感受野背后的原因。以一个两层 kernel\_size=3, stride=1 的网络为例,该网络的理论感受野为5,计算流程可以参加下图。其中 x 为输入, w 为卷积权重, o 为经过卷积后的输出特征。

很容易可以发现, x_{1,1} 只影响第一层feature map中的 o_{1,1}^1 ;而 x_{3,3} 会影响第一层feature map中的所有特征,即 o_{1,1}^1,o_{1,2}^1,o_{1,3}^1,o_{2,1}^1,o_{2,2}^1,o_{2,3}^1,o_{3,1}^1,o_{3,2}^1,o_{3,3}^1 。

第一层的输出全部会影响第二层的 o_{1,1}^2 。

于是 x_{1,1} 只能通过 o_{1,1}^1 来影响 o_{1,1}^2 ;而 x_{3,3} 能通过 o_{1,1}^1,o_{1,2}^1,o_{1,3}^1,o_{2,1}^1,o_{2,2}^1,o_{2,3}^1,o_{3,1}^1,o_{3,2}^1,o_{3,3}^1 来影响 o_{1,1}^2 。显而易见,虽然 x_{1,1} 和 x_{3,3} 都位于第二层特征感受野内,但是二者对最后的特征 o_{1,1}^2 的影响却大不相同,输入中越靠感受野中间的元素对特征的贡献越大。

七、 论文中用法

ECCV2016的SSD论文指出更好的anchar的设置应该依据感受野:

ICCV2017的SFD依据有效感受野设置anchor并使其密集化,这一做法在RefineNet中延续:

DeepLab提出Atrous conv (带孔卷积)高效控制感受野,而不增加参数数量和计算量:

 

  • 分类

Xudong Cao写过一篇叫《A practical theory for designing very deep convolutional neural networks》的technical report,里面讲设计基于深度卷积神经网络的图像分类器时,为了保证得到不错的效果,需要满足两个条件:

Firstly, for each convolutional layer, its capacity of learning more complex patterns should be guaranteed; Secondly,  the receptive field of the top most layer should be no larger than the image region.

其中第二个条件就是对卷积神经网络最高层网络特征感受野大小的限制。

  • 目标检测

现在流行的目标检测网络大部分都是基于anchor的,比如SSD系列,v2以后的yolo,还有faster rcnn系列。

基于anchor的目标检测网络会预设一组大小不同的anchor,比如32x32、64x64、128x128、256x256,这么多anchor,我们应该放置在哪几层比较合适呢?这个时候感受野的大小是一个重要的考虑因素。

放置anchor层的特征感受野应该跟anchor大小相匹配,感受野比anchor大太多不好,小太多也不好。如果感受野比anchor小很多,就好比只给你一只脚,让你说出这是什么鸟一样。如果感受野比anchor大很多,则好比给你一张世界地图,让你指出故宫在哪儿一样。

《S3FD: Single Shot Scale-invariant Face Detector》这篇人脸检测器论文就是依据感受野来设计anchor的大小的一个例子,文中的原话是

we design anchor scales based on  the effective receptive field

《FaceBoxes: A CPU Real-time Face Detector with High Accuracy》这篇论文在设计多尺度anchor的时候,依据同样是感受野,文章的一个贡献为

We introduce the Multiple Scale Convolutional Layers
(MSCL) to handle various scales of face via  enriching
receptive fields and discretizing anchors over layers

 

 


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

相关文章

卷积神经网络感受野的计算

1 到底什么是“感受野”(接受野)?——Receptive Field “感受野”的概念来源于生物神经科学,比如当我们的“感受器”,比如我们的手受到刺激之后,会将刺激传输至中枢神经,但是并不是一个神经元就…

深度学习-感受野与有效感受野

文章目录 感受野增加感受野有效感受野与反卷积的区别总结 感受野 卷积核的大小(高度和宽度)定义了一个区域的空间范围,改区域可以被卷积核在每个卷积步骤中修改,因而卷积核的大小称为卷积核的“感受野”。 感受野(receptive field, RF),卷积…

3.3.2 感受野

3.3.2 感受野 1962年Hubel和Wiesel通过对猫视觉皮层细胞的研究,提出了感受野(receptive field)的概念,Fukushima基于感受野概念提出的神经认知机(neocognitron)可以看作是卷积神经网络的第一个实现网络。 3.3.6 卷积网络的感受野Receptive field (RF)以…

目标检测和感受野的总结

目录 1、感受野 2、理论感受野计算 2.1、自上而下感受野计算 2.2、自下而上的计算方法 3、作用 4、关系 5、总结 6、参考文献 经典目标检测和最新目标跟踪都用到了RPN(region proposal network),锚框(anchor)是RPN的基础,感受野(receptive field…

CNN中的感受野

CNN中有一个概念叫局部感受野(local receptive field),那什么是感受野呢?一般的CNN结构都是卷积-池化这样重复下去,比如下表: layers size stride input100*100*1---conv13*31pool12*22conv23*31pool22*2…

详解CNN的感受野

目录 前言 CNN特征图可视化 感受野计算公式 计算Receptive Field Size的小程序 前言 感受野(receptive field,RF)也许是CNN中最重要的概念之一,从文献上来看,它应当引起足够的重视。目前所有最好的图像识别方法都是…

感受野计算问题

我觉得以下两篇文章,在感受野的含义和计算上,说的是比较好的。 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…