卷积神经网络(CNN)中感受野的计算问题

感受野

在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图(feature map)上每个像素点在原始图像上映射的区域大小,这里的原始图像是指网络的输入图像,是经过预处理(如resize,warp,crop)后的图像。

神经元之所以无法对原始图像的所有信息进行感知,是因为在卷积神经网络中普遍使用卷积层和pooling层,在层与层之间均为局部连接。

神经元感受野的值越大表示其能接触到的原始图像范围就越大,也意味着它可能蕴含更为全局,语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。因此感受野的值可以用来大致判断每一层的抽象层次.

总而言之,我们感受野就额是要求神经网络中间某一层的输出特征图上的一个元素所在原图上的覆盖大小.

感受野的计算

如下图所示的原始图像,经过kernel_size=3, stride=2的Conv1,kernel_size=2, stride=1的Conv2后,输出特征图大小为2×2,很明显,原始图像的每个单元的感受野为1,Conv1的每个单元的感受野为3,而由于Conv2的每个单元都是由范围的Conv1构成,因此回溯到原始图像,每个单元能够看到大小的区域范围。

那么卷积神经网络的每一层感受野应该如何计算呢?很明显,深层卷积层的感受野大小和它之前所有层的滤波器大小和步长有关系,而涉及到这两个参数的有卷积层和pooling层。我们用分别kn,sn,rn表示第n层的kernel_size,stride,receptive_field,通过对n-1层输出特征图的kn×kn个感受野为rn−1的特征单元卷积得到的n层输出特征单元最大的感受野为rn−1×kn,但在对n-1层输入特征图进行卷积时,经常会由于sn−1小于kn−1而存在重叠,因此要减去个重叠部分(kn=2存在一个重叠部分,kn=3存在两个重叠部分)。

重叠的部分怎么算呢?显然重叠的部分一定是与你的stride的有关的,如果你的stride很大,显然是不会有重合,所以,越小重合越多.(注意:这里计算的是在原图上的重合)

显然,kn−sn表示的是一次重合的多少。如果要计算在原图上的重合,则

(kn−sn)×rn−1

是不是很简单啊,由此我们可以知道要求第n层输出的感受野,就要知道前一层n-1的感受野,以及本层的kernel和stride大小,这是一个不断递推的过程.

对于卷积神经网络,其感受野计算有如下规律:

或者写为:

另一种计算卷积核的方法------逆向法

从当前层开始计算,慢慢往上计算:

RF=(RF−1)∗stride kernelsize

如何增加感受野

在深度学习中,对具体的任务有时需要增加感受野来提高性能,比如在人体姿态估计中,大的感受野对学习长距离的空间位置关系(long-range spatial relationship),建立内隐空间模型(implicit spatial model)有帮助,因此也要知道增大感受野的手段。

根据以上说的感受野的计算,也可以分析出,增加层数、增大strides,增加fsize即卷积滤波器的大小都可以增加感受野的大小。

在看CPM(Convolutional Pose Machines) 时,作者做了一个简单的总结:

Large receptive fields can be achieved either by pooling at the expense of precision, increasing the kernel size of the convolutional filters at the expense of increasing the number of parameters, or by increasing the number of convolutional layers at the risk often countering vanishing gradients during training.

总结一下共三种方法:

  • 增加pooling层,但是会降低准确性(pooling过程中造成了信息损失)
  • 增大卷积核的kernel size,但是会增加参数(卷积层的参数计算参考2
  • 增加卷积层的个数,但是会面临梯度消失的问题(梯度消失参考3

CPM中作者用的增加卷积层个数的方法来增加感受野,但是他用多阶段训练的方式并引入中间层监督的方法来解决梯度消失的问题。

相关推荐
KaMeidebaby10 小时前
卡梅德生物技术快报|原核表达系统工艺优化:包涵体重折叠 + 分子筛纯化实现功能 RBD 高效制备,附全参数配置
前端·人工智能·算法·数据挖掘·数据分析
龙腾AI白云10 小时前
智能体:你的私人数字助理
人工智能·virtualenv
PellyKoo10 小时前
【ubuntu 18.04】低版本容器安装 claude code 踩坑实录
人工智能
byte轻骑兵10 小时前
【LE Audio】CAP精讲[13]: Central侧LE连接建立全流程解析
人工智能·音视频·cap·le audio·低功耗音频
用户4816699749410 小时前
生成式AI时代,如何量化品牌在AI搜索中的可见性:一套可复测的评估框架
人工智能
CoCo的编程之路10 小时前
2026全栈演进:使用前端开发助手进行项目重构的最佳工具
大数据·前端·人工智能·ai编程·comate
Esaka_Forever10 小时前
Reinforcement Learning with Human Feedback(基于人类反馈的强化学习,简称 RLHF)
人工智能
宇擎智脑科技10 小时前
一个 agent 怎么做“中途打断“:steer / followUp / nextTurn
人工智能·agent
zhangfeng113310 小时前
Mamba transformer的颠覆者 论文技术解读与应用实践深度报告,
人工智能·深度学习·transformer
weixin_4462608511 小时前
Skill-RM:通过Agent技能统一异构评估标准
人工智能