关于感受野的总结

简介: SIGAI特邀作者:mileistone 原创声明:本文为SIGAI 原创文章,仅供个人学习使用,未经允许,不得转载,不能用于商业目的。 感受野是卷积神经网络里面最重要的概念之一,为了更好地理解卷积神经网络结构,甚至自己设计卷积神经网络,对于感受野的理解是必备的。

感受野是卷积神经网络里面最重要的概念之一,为了更好地理解卷积神经网络结构,甚至自己设计卷积神经网络,对于感受野的理解必不可少。

一、定义

感受野被定义为卷积神经网络特征所能看到输入图像的区域,换句话说特征输出受感受野区域内的像素点的影响。

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

感受野示例[1]


二、计算方式

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

其中 RF 表示特征感受野大小, l 表示层数, feature\_stride_l=\prod_{i=1}^{l}stride_il=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})

三、更上一层楼

上文所述的是理论感受野,而特征的有效感受野(实际起作用的感受野)实际上是远小于理论感受野的,如下图所示。具体数学分析比较复杂,不再赘述,感兴趣的话可以参考论文[2]。

有效感受野示例[2]

下面我从直观上解释一下有效感受野背后的原因。以一个两层 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 的影响却大不相同,输入中越靠感受野中间的元素对特征的贡献越大。

两层3x3 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

引用:

[1]convolutional nerual networks

[2]Understanding the Effective Receptive Field in Deep Convolutional Neural Networks


推荐阅读:

关注SIGAICN公众号,回复文章获取码,即可获得全文链接

[1] 机器学习-波澜壮阔40年 【获取码】SIGAI0413.

[2] 学好机器学习需要哪些数学知识?【获取码】SIGAI0417.

[3] 人脸识别算法演化史 【获取码】SIGAI0420.

[4] 基于深度学习的目标检测算法综述 【获取码】SIGAI0424.

[5] 卷积神经网络为什么能够称霸计算机视觉领域?【获取码】SIGAI0426.

[6] 用一张图理解SVM的脉络 【获取码】SIGAI0428.

[7] 人脸检测算法综述 【获取码】SIGAI0503.

[8] 理解神经网络的激活函数 【获取码】SIGAI0505.

[9] 深度卷积神经网络演化历史及结构改进脉络-40页长文全面解读 【获取码】SIGAI0508.

[10] 理解梯度下降法 【获取码】SIGAI0511.

[11] 循环神经网络综述—语音识别与自然语言处理的利器 【获取码】SIGAI0515.

[12] 理解凸优化 【获取码】SIGAI0518.

[13] 【实验】理解SVM的核函数和参数 【获取码】SIGAI0522.

[14] 【SIGAI综述】行人检测算法 【获取码】SIGAI0525.

[15] 机器学习在自动驾驶中的应用—以百度阿波罗平台为例(上)【获取码】SIGAI0529.

[16] 理解牛顿法 SIGAI 2018.5.31

[17] 【群话题精华】5月集锦—机器学习和深度学习中一些值得思考的问题 【获取码】SIGAI0601.

[18] 大话Adaboost算法 【获取码】SIGAI0602.

[19] FlowNet到FlowNet2.0:基于卷积神经网络的光流预测算法 【获取码】SIGAI0604.

[20] 理解主成分分析(PCA)【获取码】SIGAI0606.

[21] 人体骨骼关键点检测综述 【获取码】SIGAI0608.

[22] 理解决策树 【获取码】SIGAI0611.

[23] 用一句话总结常用的机器学习算法 【获取码】SIGAI0613.

[24] 目标检测算法之YOLO 【获取码】SIGAI0615.

[25] 理解过拟合 【获取码】SIGAI0618.

[26] 理解计算:从√2到AlphaGo ——第1季 从√2谈起 【获取码】SIGAI0620.

[27] 场景文本检测——CTPN算法介绍 【获取码】SIGAI0622.

[28] 卷积神经网络的压缩和加速 【获取码】SIGAI0625.

[29] k近邻算法 【获取码】SIGAI0627.

[30] 自然场景文本检测识别技术综述 【获取码】SIGAI0629.

[31] 理解计算:从√2到AlphaGo ——第2季 神经计算的历史背景 【获取码】SIGAI0702.

[32] 机器学习算法地图 【获取码】SIGAI0704.

[33]反向传播算法推导-全连接神经网络【获取码】SIGAI0706.

[34]生成式对抗网络模型综述【获取码】SIGAI0709.

[35]怎样成为一名优秀的算法工程师【获取码】SIGAI0711.

[36] 理解计算:从√2到AlphaGo ——第3季 神经网络的数学模型【获取码】SIGAI0702.

[37] 人脸检测算法之S3FD 【获取码】SIGAI6

[38]基于深度负相关学习的人群计数方法 【获取码】SIGAI0718

[39] 流形学习概述 【获取码】SIGAI0723

相关文章
|
10月前
|
缓存 API 网络架构
淘宝item_search_similar - 搜索相似的商品API接口,用python返回数据
淘宝联盟开放平台中,可通过“物料优选接口”(taobao.tbk.dg.optimus.material)实现“搜索相似商品”功能。该接口支持根据商品 ID 获取相似推荐商品,并返回商品信息、价格、优惠等数据,适用于商品推荐、比价等场景。本文提供基于 Python 的实现示例,包含接口调用、数据解析及结果展示。使用时需配置淘宝联盟的 appkey、appsecret 和 adzone_id,并注意接口调用频率限制和使用规范。
|
2月前
|
运维 监控 安全
基于 EvilTokens 工具集的微软设备码钓鱼攻击机理与防御研究
2026年4月爆发的EvilTokens攻击,利用OAuth 2.0设备码授权流程,通过仿冒邮件诱导用户在微软官方页面授权,窃取访问/刷新令牌,实现跨平台数据窃取与商业邮件欺诈。该攻击依托Cloudflare等可信PaaS,隐蔽性强、检测率低。本文系统解析攻击链路,提出融合令牌检测、UEBA建模、授权上下文增强与网关联动的多层防御体系,并提供可工程化检测代码。(239字)
192 3
|
JSON JavaScript 前端开发
在Vue3项目中,Vite起到的作用及其可以做的事情
Vite是Vue 3项目的关键快速开发服务器和高效的热模块替换(HMR)。它的亮点包括:使用ES模块实现快速启动和动态加载,模块级别HMR提升开发效率,Rollup打包优化生产构建。此外,Vite还支持插件系统、自定义配置、静态资源处理和现代JS特性。通过`npm create vite`可快速搭建Vue项目,配置文件`vite.config.js`可定制行为,`.env`文件管理环境变量。Vite优化了开发与构建流程,提高开发者效率并保证构建性能。
|
机器学习/深度学习 计算机视觉
YOLOv11改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力yolov11精度提升
YOLOv11改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力yolov11精度提升
407 0
YOLOv11改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力yolov11精度提升
|
机器学习/深度学习 编解码 算法
【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
《nnU-Net: 自适应框架用于基于U-Net的医学图像分割》是一篇2018年的论文,发表在Nature上。该研究提出了一种自适应的医学图像分割框架nnU-Net,能够自动调整模型的超参数以适应不同的数据集。通过2D和3D U-Net及级联U-Net的组合,nnU-Net在10个医学分割数据集上取得了卓越的性能,无需手动调整。该方法强调数据增强、预处理和训练策略等技巧,为医学图像分割提供了一个强大的解决方案。
973 0
【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课10 计算节点全毁, 灾难恢复
本文介绍了在PolarDB RAC一写多读集群中,当所有计算节点(主机)故障仅剩共享存储时的修复方法。实验基于Docker容器和loop设备模拟共享存储环境。通过重建计算节点、恢复PolarDB实例及配置相关参数,最终成功恢复RW和RO节点的功能,确保数据完整性和集群正常运行。视频回放可在B站和YouTube上查看。
391 0
|
机器学习/深度学习 计算机视觉
YOLOv8改进 | 2023 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)
YOLOv8改进 | 2023 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)
671 0
|
编解码
nnUNet 详细解读(一)论文技术要点归纳
nnUNet 详细解读(一)论文技术要点归纳
1464 0
|
缓存 前端开发 Java
2022 · 让我带你Jetpack架构组件从入门到精通 — Lifecycle
不是标题党!作者会尽力把文章写的更容易理解也更充满深度,本文也随作者的持续学习,持续更新,有问题欢迎在评论区提出~