卷积神经网络(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中作者用的增加卷积层个数的方法来增加感受野,但是他用多阶段训练的方式并引入中间层监督的方法来解决梯度消失的问题。

相关推荐
米小虾2 分钟前
别再让 LLM 写「置信度:0.8」了:决策模型把判别从生成里拆了出来
人工智能
Dawson Zhu1 小时前
《Agentic Design Patterns》第 9 章导读:学习与适应(Learning and Adaptation)
人工智能·语言模型·架构·aigc·agi
IT研究所1 小时前
AI-ITR平台如何减少客户问题反复升级?
大数据·运维·人工智能·低代码·自然语言处理·安全架构·企微
SEO_juper1 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站
小易老师AI实战1 小时前
RLHF深度详解(超通俗+原理+工程+对比):大模型对齐的核心基石
人工智能·大模型·sft·rlhf·ppo·人类反馈强化学习·llm 对齐
资深电气设计1 小时前
高压直流母线系统测试是什么?宜迈思液冷直流负载方案技术说明
人工智能
数智工坊1 小时前
视觉SLAM第12讲|地图构建:单目稠密重建、RGB-D点云与八叉树地图全解析
人工智能·深度学习·矩阵·机器人
回眸&啤酒鸭1 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
博图光电2 小时前
Libra 27105相关技术参数
人工智能·数码相机
IT_陈寒2 小时前
SpringBoot自动配置差点让我加班到凌晨
前端·人工智能·后端