CNN高效感受野的惊奇发现

简介: 在这篇文章中,“高效感受野”(ERF)的理念和在卷积神经网络(CNN)上自然产生的视觉有着惊人的关系。

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud


感受野(receptive field)是怎样一个东西呢,从CNN可视化的角度来讲,就是输出featuremap某个节点的响应对应的输入图像的区域就是感受野。

卷积神经网络(CNN)的高效感受野是影响特定网络单元的输入空间的区域。请注意,这个输入区域不仅可以是网络,也可以是从网络中的其他单位的输出区域。因此,相对于我们所考虑的输入和作为这部分输入区域的“接收器”而言,这个感受野是能够计算的。通常,当提到感受野这个术语时,它考虑到的是与网络输入(即网络的输入图像)相关的最终输出单元(即一个二进制分类任务的单个单元)。

CNN上,我们很容易看到可以使用不同的方法增加感受野,如:堆积层,抽样、扩张等。在理论上,当你叠加更多层,你可以线性增加你的感受野,然而,在实践中,事情远比我们想的要难,就像罗,文杰等人在文章中向我们展示的一样。文章中,他们阐述了“高效感受野”概念;而概念背后的直觉是:并不是所有的感受野的像素有助于输出单元的响应。在进行前向传递时,我们可以看到正是因为中心感受野是多输出单元的计算,它们才可以使用许多不同的路径将其信息传送并且输出。

在下面的图中,我们可以看到左边的输入像素,之后我们有一个特征映射使用一个3×3卷积滤波器的输入像素,最后输出另一个3×3的过滤结果左图像中像素内部的数字表示这个像素是卷积步骤的一部分(滤波器的每个滑动步骤)。正如我们所看到的,一些中央的像素将通过网络中的许多不同路径传播它们的信息,而边界上的像素则沿着一条路径传播。

8464c926ed92e1009da8723481e9166257924ddf

1

通过观察上面的图像,高效感受野对最终输出计算的影响看起来更像是高斯分布而不是均匀分布,这并不令人惊讶。更有趣的是,这种感受野是动态的,而且在训练过程中会发生变化。这对反向传播的影响是,与边界像素相比,中央像素将具有更大的梯度大小。

在那篇文章中,他们做了一些实验,用多种不同的架构来可视化有效的感受野,我在这里复制了我发现的最有趣的东西

d7b36e4a6841a359d0e010745a4b79e3af2943f5

2

 

 

正如我们从图1中看到的,他们比较了层数、初始化方案和不同激活的效果,结果令人吃惊。我们可以很清楚地看到高斯分布,也可以看到相关的稀疏性。同样的,在图三中也做了一些比较。

e5bff121f6b5cfcc810ab8b2e6559175601bab93

3

 

  正如我们所看到的,大幅度增加训练后,高效感受野的大小是非常动态的,这意味着,正如作者所说的,在训练开始时,可以采用变化的方案增加感受野以达到更好的初始状态。他们实际上开发了一种不同的初始化方案,并能提高30%的训练速度,然而,这些结果并不一致。

d05ff0852461a6216a3d60b7144c090b3d0851d5

4

 

更有趣的是,高效感受野与人眼视觉的关系非常密切,它产生了敏锐的中央视觉,由锥细胞的高密度区域所产生。

 

fc4238745dc96981d0702710bfe9ee994abb23c3

5

我们的中心视野迅速衰减,就像一个与高斯分布非常相似的有效的接收场。令人惊奇的是,这一效应在CNN上自然呈现。

     PS:出于好奇,一些鸟类做复杂的空中运动,比如蜂鸟,它们有两个视网膜中央窝,而不是单个的,这意味着它们不仅在中央区域有敏锐的视觉,而且在两边有敏锐的视觉。




以上为译文

本文由阿里云云栖社区组织翻译。文章原标题《The effective receptive field on CNNs》,作者:Christian S. Perone,译者:黄小凡,审校:袁虎。

文章为简译,更为详细的内容,请查看原文

相关文章
|
弹性计算 运维 监控
ECS资源监控
ECS资源监控涉及CPU、内存、磁盘I/O、网络流量、系统负载和进程的关键指标,通过云服务商控制台、监控服务、API与SDK、运维工具进行实时监控和告警设置。支持历史数据查询、事件监控,以及使用Windows资源监视器和Linux系统工具进行操作系统层面监控。全面监控确保ECS实例稳定运行、资源有效利用和问题及时处理。如需特定云服务商的指导,请询问。
442 3
|
存储
模块加载失败请确保该二进制存储在指定路径中
模块加载失败请确保该二进制存储在指定路径中
2417 0
|
存储 C语言
【数据结构】顺序表(c语言实现)(附源码)
本文介绍了线性表和顺序表的基本概念及其实现。线性表是一种有限序列,常见的线性表有顺序表、链表、栈、队列等。顺序表是一种基于连续内存地址存储数据的数据结构,其底层逻辑是数组。文章详细讲解了静态顺序表和动态顺序表的区别,并重点介绍了动态顺序表的实现,包括初始化、销毁、打印、增删查改等操作。最后,文章总结了顺序表的时间复杂度和局限性,并预告了后续关于链表的内容。
509 3
|
人工智能 自然语言处理 架构师
Praison AI:LangChain危险了!这个低代码框架让AI智能体「自主协作」,1行代码搞定任务编排
Praison AI 是一个开源的多智能体框架,支持低代码创建和管理AI代理,提供多种流程类型和集成选项,适用于企业流程自动化、智能客服等场景。
605 18
|
Java
Java计算时间差
这段代码提供了两个方法来计算时间差。`timeDistance` 方法接收两个 `Date` 对象,计算并返回两者之间的天数、小时数和分钟数差异,格式为“X天Y小时Z分钟”。`hourDistance` 方法则接收两个时间字符串,解析后计算并返回两者之间相差的小时数(向上取整)。
650 4
|
人工智能 数据库 Python
LangChain之各类提示模板的使用
语言模型的提示是用户提供的一组指令或输入,用于指导模型的响应,帮助模型理解上下文并生成相关且连贯的基于语言的输出,例如回答问题、完成句子或参与某项活动、对话。
873 2
|
数据可视化 Python
PYTHON贝叶斯推断计算:用BETA先验分布推断概率和可视化案例
PYTHON贝叶斯推断计算:用BETA先验分布推断概率和可视化案例
HTTP报文格式概览
【6月更文挑战第21天】HTTP报文始于起始行:请求行(含方法如GET、POST,URL和HTTP版本)用于指示服务器执行操作;响应行(含HTTP版本、状态码,如200,和原因短语,如OK)告知客户端操作结果。
|
存储 Java C++
【python基础题】——知识点选择、填空、简答
【python基础题】——知识点选择、填空、简答

热门文章

最新文章