CA:用于移动端的高效坐标注意力机制 | CVPR 2021
论文提出新颖的轻量级通道注意力机制coordinate attention,能够同时考虑通道间关系以及长距离的位置信息。通过实验发现,coordinate attention可有效地提升模型的准确率,而且仅带来少量的计算消耗,十分不错
来源:晓飞的算法工程笔记 公众号
论文: Coordinate Attention for Efficient Mobile Network Design

Introduction
目前,轻量级网络的注意力机制大都采用SE模块,仅考虑了通道间的信息,忽略了位置信息。尽管后来的BAM和CBAM尝试在降低通道数后通过卷积来提取位置注意力信息,但卷积只能提取局部关系,缺乏长距离关系提取的能力。为此,论文提出了新的高效注意力机制coordinate attention,能够将横向和纵向的位置信息编码到channel attention中,使得移动网络能够关注大范围的位置信息又不会带来过多的计算量。
coordinate attention的优势主要有以下几点:
- 不仅获取了通道间信息,还考虑了方向相关的位置信息,有助于模型更好地定位和识别目标。
- 足够灵活和轻量,能够简单地插入移动网络的核心结构中。
- 可以作为预训练模型用于多种任务中,如检测和分割,均有不错的性能提升。
Coordinate Attention
Coordinate Attention可看作增强移动网络特征表达能力的计算单元,接受中间特征\(X=[x_1,x_2,\cdots,x_C]\in\mathbb{R}^{C\times H\times W}\)作为输入,输出与\(X\)大小相同的增强特征\(Y=[y_1,y_2,\cdots,y_C]\)。

Coordinate Attention Blocks
Coordinate Attention基于coordinate information embedding和coordinate attention generation两个步骤来编码通道关系和长距离关系。
Coordinate Information Embedding
channel attention常用全局池化编码全局空间信息,将全局信息压缩成一个标量,难以保留重要的空间信息。为此,论文将全局池化改造成两个1维向量的编码操作。对于输入\(X\),使用池化核\((H,1)\)和\((1,W)\)来编码水平方向和垂直方向特征,即第\(c\)维特征的输出为:


上面的公式从不同的方向集成特征,输出一对方向可知的特征图。对比全局池化的压缩方式,这样能够允许attention block捕捉单方向上的长距离关系同时保留另一个方向上的空间信息,帮助网络更准确地定位目标。
Coordinate Attention Generation
为了更好地利用上述的coordinate infomation,论文提出了配套的coordinate attention generation操作,主要基于以下三点准则进行设计:
- 足够简单和轻量。
- 能完全利用提取的位置信息。
- 能同样高效地处理通道间的关系。
首先将公式4和公式5的输出concatenate起来,使用\(1\times 1\)卷积、BN和非线性激活进行特征转化:

\(f\in\mathbb{R}^{C/r\times(H+W)}\)为包含横向和纵向空间信息的中间特征,\(r\)为缩减因子。这里两个方向的特征没有做激烈的融合,concatenate的主要目的我觉得是进行统一的BN操作。随后将\(f\)分为两个独立的特征\(f^h\in\mathbb{R}^{C/r\times H}\)和\(f^w\in\mathbb{R}^{C/r\times W}\),使用另外两个\(1\times 1\)卷积和sigmoid函数进行特征转化,使其维度与输入\(X\)一致:

将输出\(g^h\)和\(g^w\)合并成权重矩阵,用于计算coordinate attention block输出:

coordinate attention block与se block的最大区别是,coordinate attention block的每个权重都包含了通道间信息、横向空间信息和纵向空间信息,能够帮助网络更准确地定位目标信息,增强识别能力。
Implementation

将coordinate attention block应用于MobileNetV2和MobileNeXt上,block结构如图3所示。
Experiment

基于MobileNetV2进行模块设置的对比实验。

不同注意力结构在不同主干网络上的性能对比。

对目标检测网络的性能对比。

对语义分割任务的性能对比。
Conclusion
论文提出新颖的轻量级通道注意力机制coordinate attention,能够同时考虑通道间关系以及长距离的位置信息。通过实验发现,coordinate attention可有效地提升模型的准确率,而且仅带来少量的计算消耗,十分不错。
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

CA:用于移动端的高效坐标注意力机制 | CVPR 2021的更多相关文章
- CVPR2021| 继SE,CBAM后的一种新的注意力机制Coordinate Attention
前言: 最近几年,注意力机制用来提升模型性能有比较好的表现,大家都用得很舒服.本文将介绍一种新提出的坐标注意力机制,这种机制解决了SE,CBAM上存在的一些问题,产生了更好的效果,而使用与SE,CBA ...
- Socket.IO介绍:支持WebSocket、用于WEB端的即时通讯的框架
一.基本介绍 WebSocket是HTML5的一种新通信协议,它实现了浏览器与服务器之间的双向通讯.而Socket.IO是一个完全由JavaScript实现.基于Node.js.支持WebSocket ...
- fastText一个库用于词表示的高效学习和句子分类
fastText fastText 是 Facebook 开发的一个用于高效学习单词呈现以及语句分类的开源库. 要求 fastText 使用 C++11 特性,因此需要一个对 C++11 支持良好的编 ...
- 深度学习教程 | Seq2Seq序列模型和注意力机制
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/35 本文地址:http://www.showmeai.tech/article-det ...
- CAP:多重注意力机制,有趣的细粒度分类方案 | AAAI 2021
论文提出细粒度分类解决方案CAP,通过上下文感知的注意力机制来帮助模型发现细微的特征变化.除了像素级别的注意力机制,还有区域级别的注意力机制以及局部特征编码方法,与以往的视觉方案很不同,值得一看 来源 ...
- TensorFlow从1到2(十)带注意力机制的神经网络机器翻译
基本概念 机器翻译和语音识别是最早开展的两项人工智能研究.今天也取得了最显著的商业成果. 早先的机器翻译实际脱胎于电子词典,能力更擅长于词或者短语的翻译.那时候的翻译通常会将一句话打断为一系列的片段, ...
- 机器学习(ML)十二之编码解码器、束搜索与注意力机制
编码器—解码器(seq2seq) 在自然语言处理的很多应用中,输入和输出都可以是不定长序列.以机器翻译为例,输入可以是一段不定长的英语文本序列,输出可以是一段不定长的法语文本序列,例如 英语输入:“T ...
- NLP教程(6) - 神经机器翻译、seq2seq与注意力机制
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...
- (转)注意力机制(Attention Mechanism)在自然语言处理中的应用
注意力机制(Attention Mechanism)在自然语言处理中的应用 本文转自:http://www.cnblogs.com/robert-dlut/p/5952032.html 近年来,深度 ...
- 注意力机制(Attention Mechanism)在自然语言处理中的应用
注意力机制(Attention Mechanism)在自然语言处理中的应用 近年来,深度学习的研究越来越深入,在各个领域也都获得了不少突破性的进展.基于注意力(attention)机制的神经网络成为了 ...
随机推荐
- 【framework】应用进程启动流程
1 前言 Activity启动流程 中介绍了从点击桌面上应用快捷方式到 Activity 的 onCreate() 方法调用流程,本将介绍应用进程的启动流程.由于应用进程启动流程复杂,本文按进程将其拆 ...
- MySQL 8.0.25从节点自动故障转移测试
从MySQL 8.0.23开始,复制结构中,增加了从节点自动故障转移功能.测试一下起功能: 用dbdeployer快速安装测试环境,我这边安装的是:dbdeployer1.8.5 -- 安装脚本 ...
- Oracle开发人员守则
以下为Oracle大师级语录: Oracle Database developers should follow is to do everything they can in SQL. What t ...
- golang常用库包:redis操作库go-redis使用(03)-高级数据结构和其它特性
Redis 高级数据结构操作和其它特性 第一篇:go-redis使用,介绍Redis基本数据结构和其他特性,以及 go-redis 连接到Redis https://www.cnblogs.com/j ...
- 【Android逆向】破解看雪9月算法破解第二题
1. apk安装到手机,一样的界面,随便输入一样的报错 2. apk拖入到jadx重看看 public native String sha1(String str); static { System. ...
- django的orm多表查询作业第五题答案
5.每个作者出版的所有书的最高价格以及最高价格的那本书的名称. 用django的模型类写不出来的,只能用原生sql写这题 关于第五题,mysql5.7及以上版本,使用下面的答案 set sql_mod ...
- 【Azure Developer】使用Python代码获取VM的IP地址 (Public IP + Private IP)【未解决问题标签】
记录使用以下的代码获取Azure VM中的IP地址 """Create and manage virtual machines. This script expects ...
- 高性能图计算系统 Plato 在 Nebula Graph 中的实践
本文首发于 Nebula Graph Community 公众号 1.图计算介绍 1.1 图数据库 vs 图计算 图数据库是面向 OLTP 场景,强调增删改查,并且一个查询往往只涉及到全图中的少量数据 ...
- [VueJsDev] 基础知识 - CommonJs VS ES Module
[VueJsDev] 目录列表 https://www.cnblogs.com/pengchenggang/p/17037320.html CommonJs VS ES Module ::: deta ...
- [非常重要] 通过ssh的方式提交github
通过ssh的方式提交github - 重要文章!!vscode提交github 原因: github的https的clone项目报错,所以改用ssh的方式 1 本地创建ssh秘钥 目录是 .ssh 我 ...