NAM: Normalization-based Attention Module,一种新的注意力计算方式,无需额外的参数...-程序员宅基地

技术标签: python  机器学习  计算机视觉  深度学习  人工智能  

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


导读

本文介绍了一种新的计算注意力的方式,相比于之前的注意力机制,无需额外的全连接,卷积等额外的计算和参数,直接使用BN中的缩放因此来计算注意力权重,并通过增加正则化项来进一步抑制不显著的特征。

代码:https://github.com/Christian-lyc/NAM

论文:https://arxiv.org/abs/2111.12419

摘要:本文提出一种基于归一化的注意力模块(NAM),可以降低不太显著的特征的权重,这种方式在注意力模块上应用了稀疏的权重惩罚,这使得这些权重在计算上更加高效,同时能够保持同样的性能。我们在ResNet和MobileNet上和其他的注意力方式进行了对比,我们的方法可以达到更高的准确率。

1、介绍

注意力机制在近年来大热,注意力机制可以帮助神经网络抑制通道中或者是空间中不太显著的特征。之前的很多的研究聚焦于如何通过注意力算子来获取显著性的特征。这些方法成功的发现了特征的不同维度之间的互信息量。但是,缺乏对权值的贡献因子的考虑,而这个贡献因子可以进一步的抑制不显著的特征。因此,我们瞄准了利用权值的贡献因子来提升注意力的效果。我们使用了Batch Normalization的缩放因子来表示权值的重要程度。这样可以避免如SE,BAM和CBAM一样增加全连接层和卷积层。这样,我们提出了一个新的注意力方式:基于归一化的注意力(NAM)。

2、方法

我们提出的NAM是一种轻量级的高效的注意力机制,我们采用了CBAM的模块集成方式,重新设计了通道注意力和空间注意力子模块,这样,NAM可以嵌入到每个网络block的最后。对于残差网络,可以嵌入到残差结构的最后。对于通道注意力子模块,我们使用了Batch Normalization中的缩放因子,如式子(1),缩放因子反映出各个通道的变化的大小,也表示了该通道的重要性。为什么这么说呢,可以这样理解,缩放因子即BN中的方差,方差越大表示该通道变化的越厉害,那么该通道中包含的信息会越丰富,重要性也越大,而那些变化不大的通道,信息单一,重要性小。

862af97451cbe433a22fad11a73d9b9b.png

因此,通道注意力子模块如图1,式(2),用表示最后得到的输出特征,γ是每个通道的缩放因子,因此,每个通道的权值可以得到,如果对空间中的每个像素使用同样的归一化方法,就可以得到空间注意力的权重,式(3),就叫做像素归一化。像素注意力见图2,输出为。

为了抑制不重要的特征,我们在损失函数中加入了一个正则化项,如(4)式,

3791fe0fa8ba31acb781bfb155e154b6.png

80bfb3a0e7e2a03aabe9d8a5d9777449.png

3、实验

我们将NAM和SE,BAM,CBAM,TAM在ResNet和MobileNet上,在CIFAR100数据集和ImageNet数据集上进行了对比,我们对每种注意力机制都使用了同样的预处理和训练方式,对比结果表示,在CIFAR100上,单独使用NAM的通道注意力或者空间注意力就可以达到超越其他方式的效果。在ImageNet上,同时使用NAM的通道注意力和空间注意力可以达到超越其他方法的效果。

531d287d06677e526ca52b8a4f4ae242.png

d0d8e6812c0c0c731a2dd36ea6ccac0d.png

—END—

df4d4eff1be89496c13b3618f3e36a7a.png

请长按或扫描二维码关注本公众号

喜欢的话,请给我个在看吧

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011984148/article/details/122053450

智能推荐

SQL盲注_sql盲注分别有几种类型-程序员宅基地

文章浏览阅读1.1k次。说明学习思路,源自《白帽子讲Web安全》,lcamry《MySQL注入天书》1、盲注注入漏洞不显示来自数据库的报错信息,报错信息中只包含通用的错误提示,此时SQL注入将不能通过报错信息直观获取注入语句的执行结果,既是盲注(Blind Injection)。盲注时不能直观获取结果,但可以通过基于逻辑真假的不同页面表现,来进行结果的判断,从而达到数据获取的目的。盲注的大致分类有三种1、基于布尔的SQL盲注2、基于时间的SQL盲注3、基于报错的SQL盲注2、基于布尔的MySQL盲注基本思路是对获_sql盲注分别有几种类型

Flutter状态管理4-flutter_bloc使用和原理学习总结-程序员宅基地

文章浏览阅读5.4k次,点赞2次,收藏10次。flutter_bloc今天发布了4.0.0版本,现关于其使用和原理做一个简单的总结。flutter_bloc官网:https://github.com/felangel/blochttps://bloclibrary.dev/#/flutterbloccoreconcepts?id=flutter-bloc-core-conceptspub.dev上的介绍,包括了多个Examples:...

视频监控安防平台-国标28181-2016(GB28181-2016)平台全项检测_怎么验证是否符合28181-2016标准-程序员宅基地

文章浏览阅读1w次,点赞4次,收藏18次。视频监控安防平台-国标28181 2016 GB28181 2016平台全项检测_怎么验证是否符合28181-2016标准

In Defense of Nearest-Neighbor Based Image Classification-程序员宅基地

文章浏览阅读1.4k次。OrenBoiman, Eli Shechtman, Michal Irani. In Defense of Nearest-Neighbor Based ImageClassification. IEEE Conference on Computer Vision & Pattern Recognition,2008, 69(4): 1~8这篇文章是我在做本科毕业设计《基于视频的运动目标检测_in defense of nearest-neighbor based image classification

史上最全量化交易资源整理_量化交易 交易费用 对比-程序员宅基地

文章浏览阅读2.5w次,点赞48次,收藏435次。开源量化交易框架整理: https://www.oschina.net/p/samaritan https://www.oschina.net/p/vn-py https://www.oschina.net/p/abu https://www.oschina.net/p/abuquant https://github.com/sun0x00/RedTorch ..._量化交易 交易费用 对比

随便推点

使用反射调用构造器创建对象_反射创建对象会调构造器吗-程序员宅基地

文章浏览阅读970次。构造器最大的作用:创建对象.为什么使用反射创建对象,为什么不直接来new呢?在框架中,提供给我们的都是字符串.-----------------------------------------------------------使用反射创建对象:步骤: 1);找到构造器所在类的字节码对象. 2):获取构造器对象. 3):使用反射,创建对象---_反射创建对象会调构造器吗

idea中 使用git 回退单个文件的版本_git回退单个文件到指定版本 idea-程序员宅基地

文章浏览阅读4.8k次,点赞3次,收藏15次。1.在要回退的文件右键查看历史版本2.找到要回退的版本复制版本号3打开终端输入一下命令,就看将文件退回到指定版本了git checkout git版本号 -- 文件名**文件路径获取方式:在文件点击鼠标右键->copy->copy path…->Path From Repository Root..._git回退单个文件到指定版本 idea

【Aurix系列学习】TC264D最小系统搭建—硬件配置引脚_vgate1n-程序员宅基地

文章浏览阅读10w+次,点赞17次,收藏97次。硬件配置作用硬件配置引脚是相对特殊的一组引脚,也是基本引脚配置的重点:单片机的启动,相信大家都配置过。像之前使用的STM32F103是通过三个启动引脚进行启动配置。而英飞凌的处理器XC系列的启动配置,一般是通过P10的一些引脚来完成。TC系列启动配置功能要更丰富,除了启动用到的,还有电源配置、引脚默认上下拉这些功能。启动意义是什么呢?一般单片机都会有一段启动代码,启动配置的是单片机开..._vgate1n

安装virtualbox失败 提示WinVerifyTrust failed_winverifytrust failed on stub executable:winverify-程序员宅基地

文章浏览阅读9.9k次。安装virtualbox失败 提示WinVerifyTrust failed 经过查询解决http://superuser.com/questions/942036/virtualbox-fails-to-start-on-windows-server-2003对应的导入了张数字证书就可以了For reasons I cannot disclose_winverifytrust failed on stub executable:winverifytrust failed withhrc=cert

了解layui框架_layui框架的特性-程序员宅基地

文章浏览阅读3.8k次。layui简介layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从核心代码到 API 的每一处细节都经过精心雕琢,非常适合界面的快速开发。layui 首个版本发布于 2016 年金秋,她区别于那些基于 MVVM 底层的 UI 框架,却并非逆道而行,而是信奉返璞归真之道。准确地说,她更多是为服务端程序员量身定做,你无需涉足各种前端工具的复杂配置,只需面对浏_layui框架的特性

滤波器的Q值与带宽、滤波器_滤波器q值-程序员宅基地

文章浏览阅读3.4k次。那么,_滤波器q值

推荐文章

热门文章

相关标签