论文解读:Coordinate Attention for Efficient Mobile Network Design(CVPR2021)

论文前言

原理其实很简单,但是论文作者说得很抽象,时间紧的建议直接看3.1中原理简述CBMA、原理简述CBMA以及3.2中原理简述coordinate attention block即可。

Abstract

最近关于mobile network设计的研究已经证明了通道注意(例如,the Squeeze-and-Excitation attention)对于提高模型性能的显着有效性,但它们通常忽略了位置信息,而位置信息对于生成空间选择性注意图非常重要。在本文中,我们提出了一种新的移动网络注意机制,将位置信息嵌入到通道注意中,我们称之为“坐标注意(coordinate attention)”。与通过二维全局池化将特征张量转换为单个特征向量的通道注意不同,坐标注意将通道注意分解为两个一维特征编码过程,分别沿着两个空间方向聚合特征。这样可以在一个空间方向上捕获远程依赖关系,同时在另一个空间方向上保持精确的位置信息。然后将得到的特征图分别编码为一对方向感知和位置敏感的注意图,它们可以互补地应用于输入特征图,以增强感兴趣对象的表示。

1. Introduction

注意力机制用于告诉模型“参加什么”和“去哪里”(a model “what” and“where” to attend),已经被广泛研究,并被广泛应用于提高现代深度神经网络的性能。然而,它们在移动网络中的应用(模型大小有限)明显落后于大型网络。这主要是因为大多数注意力机制带来的计算开销对于移动网络来说是无法承受的。

考虑到移动网络有限的计算能力,迄今为止,移动网络中最流行的注意力机制仍然是sse (squeeze -and - dexcitation)注意力。它在2D全局池化的帮助下计算通道注意力,并以相当低的计算成本提供显著的性能提升。然而,SE注意力只考虑编码通道间信息,而忽略了位置信息的重要性,而位置信息对于视觉任务中捕获目标结构至关重要。后来的作品,如BAM和CBAM,试图通过降低输入张量的通道维数,然后使用卷积计算空间注意力来利用位置信息,如图2(b)所示。然而,卷积只能捕获局部关系,而无法建模视觉任务所必需的远程依赖关系。

在本文中,除了第一项工作之外,我们提出了一种新颖有效的注意机制,通过将位置信息嵌入到通道注意中,使移动网络能够关注大区域,同时避免产生显著的计算开销。为了减轻二维全局池化造成的位置信息丢失,我们将信道注意力分解为两个平行的一维特征编码过程,以有效地将空间坐标信息整合到生成的注意图中。

具体来说,我们的方法利用两个一维全局池化操作,分别将垂直和水平方向的输入特征聚合到两个独立的方向感知特征映射中。这两个嵌入了特定方向信息的特征图被分别编码成两个注意图,每个注意图捕获输入特征图沿一个空间方向的远程依赖关系。因此,位置信息可以保存在生成的注意图中。然后,通过乘法将两个注意图应用于输入特征图,以强调感兴趣的表示。我们将提出的注意方法命名为坐标注意(coordinate attention),因为它的操作区分空间方向(即坐标)并生成坐标感知的注意图。

我们的坐标注意机制提供了以下优势。

首先,它不仅可以捕获跨通道信息,还可以捕获方向感知和位置敏感信息,这有助于模型更准确地定位和识别感兴趣的对象。

其次,我们的方法灵活且轻量级,可以很容易地插入到移动网络的经典构建块中,例如MobileNetV2[34]中提出的倒残差块和MobileNeXt[49]中提出的沙漏块,通过强调信息表示来增强特征。

第三,作为一个预训练模型,我们的坐标关注可以为移动网络的下游任务带来显著的性能提升,特别是对于那些具有密集预测的任务(例如,语义分割),我们将在我们的实验部分中展示。

为了证明本文提出的方法相对于以往移动网络关注方法的优势,我们在ImageNet分类和流行的下游任务(包括目标检测和语义分割)中进行了大量实验。通过相当数量的可学习参数和计算,我们的网络在ImageNet上的前1名分类准确率中实现了0.8%的性能提升。在目标检测和语义分割方面,我们也观察到与其他注意机制的模型相比有了显著的改进,如图1所示。我们希望我们简单高效的设计能够促进未来移动网络注意力机制的发展。

图1所示。不同注意方法在三种经典视觉任务中的表现。y轴标签从左到右分别是top-1精度、平均IoU和AP。显然,我们的方法不仅在针对SE块和CBAM(SE块和CBAM会在2.2. Attention Mechanisms中介绍)的ImageNet分类中取得了最好的结果,而且在语义分割[9]和COCO对象检测等下游任务中表现更好。结果基于MobileNetV2。

2. Related Work

2.1. Mobile Network Architectures(略)

2.2. Attention Mechanisms

注意力机制已被证明有助于各种计算机视觉任务,如图像分类和图像分割。

SENet是一个成功的例子,它简单地挤压每个2D特征图,以有效地建立通道之间的相互依赖关系。

CBAM通过引入具有大尺寸核的卷积的空间信息编码进一步推进了这一想法。后来的研究如GENet、GALA、AA和TA通过采用不同的空间注意机制或设计高级注意块扩展了这一思想。

非本地/自注意网络由于其建立空间或渠道性注意的能力而非常受欢迎。典型的例子包括NLNet、GCNet、A2Net、SCNet、gsp - net或CCNet,它们都利用非局部机制捕获不同类型的空间信息。然而,由于自关注模块内部的计算量很大,因此他们通常在大型模型中采用,而不适用于移动网络。

与这些利用昂贵且沉重的非本地或自关注块的方法不同,我们的方法考虑了一种更有效的方法来捕获位置信息和通道智能关系,以增强移动网络的特征表示。通过将2D全局池化操作分解为两个一维编码过程,我们的方法比其他具有轻量级属性的注意力方法(例如SENet, CBAM和TA)表现得更好。

3. Coordinate Attention

3.1. 重新回顾 Squeeze-and-Excitation Attention

原理简述SE net

总的来说,SE Block首先对卷积得到的特征图进行Squeeze操作,得到channel级的全局特征,然后对全局特征进行Excitation操作,学习各个channel间的关系,得到不同channel的权重。总的来说,就是通过大小为H*W的全局池化,将C个通道的H*W个特征点转换成C个权重数,每个数代表着这个通道在所有通道占的权重。最后进行Scale操作,即将得到的不同channel的权重乘以原来的特征图得到最终特征。

这种注意力机制让模型可以更加关注信息量最大的channel特征,而抑制那些不重要的channel特征。

SE Block在Inception Module和ResNet Module上的应用

参考文章:【注意力机制】SENet(Squeeze-and-Excitation Networks)详解_注意力机制senet-CSDN博客

原理简述CBMA

CBAM(Convolutional Block Attention Module)是轻量级的卷积注意力模块,它结合了通道和空间的注意力机制模块。

CBAM包含CAM(Channel Attention Module)和SAM(Spartial Attention Module)两个子模块,分别进行通道和空间上的Attention。

(1)Channel attention module(CAM)

CAM与SEnet的不同之处是加了一个并行的最大池化层,提取到的高层特征更全面,更丰富。

将输入的feature map F经过两个并行的MaxPool层和AvgPool层(SE net只有AvgPool层),将特征图从C*H*W变为C*1*1的大小,然后经过Share MLP模块,在该模块中,它先将通道数压缩为原来的1/r(Reduction,减少率)倍,再扩张到原通道数,经过ReLU激活函数得到两个激活后的结果。将这两个输出结果进行逐元素相加,再通过一个sigmoid激活函数得到Channel Attention的输出结果,再将这个输出结果乘原图,变回C*H*W的大小。

(2)Spatial attention module(SAM)

将Channel Attention的输出结果通过最大池化和平均池化得到两个1*H*W的特征图,然后经过Concat操作对两个特征图进行拼接通过7*7卷积变为1通道的特征图(实验证明7*7效果比3*3好),再经过一个sigmoid得到Spatial Attention的特征图,最后将输出结果乘原图变回C*H*W大小

参考文章CBAM——即插即用的注意力模块(附代码)_cbam模块-CSDN博客

论文内容

标准卷积本身很难对通道关系进行建模。显式地构建通道相互依赖关系可以提高模型对对最终分类决策贡献更大的信息通道的敏感性。此外,使用全局平均池化还可以帮助模型捕获全局信息,这是卷积所缺乏的

在结构上,SE块可分解为压缩和激励两个步骤,分别用于全局信息嵌入和信道关系的自适应重新校准。给定输入X,第c通道的挤压步长可表示为:

其中z_{c}是与第c个通道相关的输出。输入X直接来自具有固定核大小的卷积层,因此可以看作是局部描述符的集合。挤压操作使得收集全局信息成为可能。

第二步,激励,旨在完全捕获通道相关关系,可以表示为

其中,·为通道方向乘法,σ为sigmoid函数,\widehat{z}为变换函数生成的结果,其表达式如下:

这里,T1和T2是两个线性变换,可以通过学习来捕捉每个通道的重要性。

SE模块已广泛应用于最近的移动网络,并被证明是实现最先进性能的关键组件。然而,它只考虑通过建模通道关系来重新权衡每个通道的重要性,而忽略了位置信息,正如我们将在第4节中通过实验证明的那样,位置信息对于生成空间选择性注意图是重要的。

3.2. Coordinate Attention Blocks

原理简述coordinate attention block

concat拼接,通过卷积来使得C × H × 1和C × 1 × W,即横向与列向的特征建立关系(而CBMA中7×7 Conv是关注局部的横向与列向的特征)。

之后又split分开(是先让横向与列向的特征两者建立完关系之后再分开),再进行Sigmoid归一化。

最后与C × H × W作乘法,即给每个通道上的每个像素点授予权重值。

论文内容

我们通过坐标信息嵌入和坐标注意生成两个步骤,对通道关系和远程依赖进行精确的位置信息编码。所提出的坐标注意块示意图如图2的右侧所示。

3.2.1 Coordinate Information Embedding

全局池化通常用于通道注意的全局空间信息编码,但它将全局空间信息压缩到通道描述符中,难以保留位置信息,而这对于视觉任务中空间结构的捕获至关重要。为了鼓励注意块在空间上用精确的位置信息捕获远程交互,我们将全局池化分解为Eqn中所表述的。

具体来说,给定输入X,我们使用池化核的两个空间范围(H,1)或(1,W)分别沿横坐标和纵坐标对每个通道进行编码。因此,c-th通道在高度h处的输出可以表示为

类似地,宽度为w的第c通道的输出可以写成

上述两种变换分别沿着两个空间方向聚合特征,产生一对方向感知特征映射。在产生单个特征向量的通道关注方法中,这与挤压操作(Eqn)相当不同。这两种转换还允许我们的注意力块沿着一个空间方向捕获远程依赖关系,并沿着另一个空间方向保留精确的位置信息,这有助于网络更准确地定位感兴趣的对象。

3.2.2 Coordinate Attention Generation

为了利用全局接受野并编码精确的位置信息,我们提出了第二种转换,称为坐标注意力生成。我们的设计参考了以下三个标准。首先,对于移动环境中的应用程序,新的转换应该尽可能简单和廉价。其次,它可以充分利用捕获的位置信息,从而准确地突出显示感兴趣的区域。最后但并非最不重要的是,它还应该能够有效地捕捉渠道间关系,这在现有研究中已被证明是必不可少的。

具体来说,给定由公式4和公式5生成的聚合特征映射,我们首先将它们连接起来,然后将它们发送到共享的1 × 1卷积变换函数F1,得到

在[·;·]表示沿空间维度的拼接操作,δ为非线性激活函数,f\in{R^{(C/r)*(H+W)}}为水平方向和垂直方向编码空间信息的中间特征图。这里,r是在SE块中控制块大小的缩减比。然后我们沿着空间维度把f分成两个张量f^{h}\in{R^{(C/r)*H}},f^{w}\in{R^{(C/r)*W}}。利用另外两个1 × 1卷积变换Fh和Fw分别将f h和f w变换为与输入X具有相同通道号的张量,得到

回想一下σ是sigmoid型函数。为了减少开销模型的复杂性,我们经常以适当的减少比率r(例如,32)来减少f的通道数。我们将在实验部分讨论不同的还原比对性能的影响。然后将输出gh和g w分别展开并用作注意力权重。最后,我们的坐标注意块Y的输出可以写成

讨论:不同于通道注意只关注于重新权衡不同通道的重要性,我们的坐标注意块还考虑了空间信息的编码。如上所述,水平方向和垂直方向的注意力同时被施加到输入张量上。两个注意图中的每个元素反映了感兴趣的对象是否存在于相应的行和列中。这个编码过程可以让我们的坐标注意力更准确地定位感兴趣对象的确切位置,从而帮助整个模型更好地识别。我们将在实验部分详细地演示这一点。

3.3. Implementation

由于本文的目标是研究一种更好的方法来增强移动网络的卷积特征,在这里,我们以两种具有不同类型残差块的经典轻量级架构(即MobileNetV2[34]和MobileNeXt[49])为例来展示所提出的坐标注意块相对于其他著名的轻量级注意力块的优势。图3显示了我们如何将注意力块插入MobileNetV2中的反向残余块和MobileNeXt中的沙漏块。

表1。不同实验设置下所提出的坐标注意的结果比较。这里,r是减少比,基线结果是基于MobileNetV2模型。可以看出,添加水平(X)注意或垂直(Y)注意的模型与添加SE注意的模型具有相同的性能。然而,当考虑到水平和垂直注意力(坐标注意力)时,我们的方法产生了最好的结果。延迟是在谷歌Pixel 4设备上测试的。

4. Experiments

表2。以MobileNetV2为基准,不同权重乘数下不同注意方法的比较

表3。以MobileNeXt[49]为基准,不同权重乘数下不同注意方法的比较

表4。配备不同注意力块的模型在不同减少比下的比较。基线结果基于MobileNetV2模型。显然,当还原比减小时,我们的方法仍然产生最好的结果

表5所示。以功能强大的EfficientNet-b0[38]为基准的实验结果。我们还与其他参数和计算与EfficientNet-b0相似的方法进行了比较。

图4。在最后一个构建块中使用不同关注方法的模型生成的特征图的可视化。我们使用Grad-CAM[35]作为可视化工具。每个注意块前后的特征图都是可视化的。显然,与其他注意方法相比,我们的坐标注意(CA)可以更精确地定位感兴趣的对象。

额,实验做了很多对比实验,这里不一一列举了,估计作者也知道自己的创新点不多,所以想通过大量的实验把整个论文的篇幅量撑大。

参考资料

论文下载

https://arxiv.org/abs/2103.02907

📎Coordinate Attention for Efficient Mobile Network Design.pdf

https://arxiv.org/pdf/1709.01507v2.pdf

📎Squeeze-and-Excitation Networks.pdf

https://arxiv.org/pdf/1807.06521.pdf

📎CBAM Convolutional Block Attention Module.pdf

论文代码

GitHub - houqb/CoordAttention: Code for our CVPR2021 paper coordinate attention

参考文章

[ 注意力机制 ] 经典网络模型1——SENet 详解与复现_senet模型-CSDN博客

📎[ 注意力机制 ] 经典网络模型1——SENet 详解与复现_senet模型-CSDN博客 (2023_12_24 21_23_10).html

【注意力机制】SENet(Squeeze-and-Excitation Networks)详解_注意力机制senet-CSDN博客

CBAM——即插即用的注意力模块(附代码)_cbam模块-CSDN博客

2021CVPR-Coordinate Attention for Efficient Mobile Network Design 坐标注意力机制-CSDN博客

用于改写yoloV5的代码

📎common.py

📎yolo.py

📎yolov5s_Coordinate_attention.yaml

📎源码实现.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/282820.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【解决复杂链式任务打造全能助手】大模型思维链 CoT 应用:langchain 大模型 结合 做 AutoGPT

大模型思维链 CoT 应用:langchain 大模型 结合 做 AutoGPT,解决复杂链式任务打造全能助手 思维链 CoTlangchainlangchain 大模型结合打造 AutoGPT 思维链 CoT 最初的语言模型都是基于经验的,只能根据词汇之间的相关性输出答案,根…

现阶段SDH,MPLS-VPN,MSTP等广域网几种互联技术介绍

广域网也称远程网,通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。广域网可以分为公共传输网络、专用传输网络和无线传输网…

学习SpringCloud微服务

SpringCloud 微服务单体框架微服务框架SpringCloud微服务拆分微服务差分原则拆分商品服务拆分购物车服务拆分用户服务拆分交易服务拆分支付服务服务调用RestTemplate远程调用 微服务拆分总结 服务治理注册中心Nacos注册中心服务注册服务发现 OpenFeign实现远程调用快速入门引入…

面向对象基础-类与对象-封装

1、类与对象 1.1 概念 类:类是一个抽象的概念,用于描述一类对象的特点。 对象:根据类的概念所创造的实体。 【思考】一个对象可以没有对应的类嘛? 不可以,因为必须现有类才能创建对象。 1.2 类的内容 类中最基础的内容…

【SD】一致性角色 - 同一人物 不同姿势 - 2

首先生成4张不同姿势的图片 masterpiece,high quality,(white background:1.6),(simple background:1.4),1gril,solo,black footwear,black hair,brown eyes,closed mouth,full body,glasses,jacket,long hair,long sleeves,lookig at viewer,plaid,plaid skirt,pleated shirt,…

12.31_黑马数据结构与算法笔记Java

目录 345 设计跳表 Leetcode 1206 346 设计最小栈 Leetcode 155 347 设计端网址 Leetcode 355 348 设计推特 Leetcode 355 349 股票系列问题 Leetcode 121 350 股票系列问题 Leetcode 122 351 股票系列问题 Leetcode 714 352 股票系列问题 Leetcode 309 353 股票系列问…

接入Cloudflare后Nginx和Django获取用户真实IP的办法

可以用Nginx的real_ip的相关命令来实现这个需求。 01-real_ip命令集详解 real_ip命令的使用分为两个步骤: 01-1-设置从哪些代理IP获取真实IP 第1个步骤:通过set_real_ip_from命令设置从哪些代理IP请求获取真实的IP,比如下面的命令: set_real_ip_from…

Visual Studio 2015 中 SDL2 开发环境的搭建

Visual Studio 2015 中 SDL2 开发环境的搭建 Visual Studio 2015 中 SDL2 开发环境的搭建新建控制台工程拷贝并配置 SDL2 开发文件拷贝 SDL2 开发文件配置 SDL2 开发文件 测试SDL2 开发文件的下载链接 Visual Studio 2015 中 SDL2 开发环境的搭建 新建控制台工程 新建 Win32 …

Vue.js和Node.js的关系--类比Java系列

首先我们看一张图 这里我们类比了Java的jvm和JavaScript的node.js。 可以看到,node.js是基础,提供了基础的编译执行的能力。vue,js是实际上定义了一种他自己的代码格式,以加速开发。

CDH 6.3.2集成flink 1.18 zookeeper版本不匹配Flink-yarn启动失败

CDH 6.3.2集成flink 1.18 zookeeper版本不匹配Flink-yarn不能正常启动,而在CHD Web页面,flink日志报错提示不明确,不能定位具体错误。CM WEB启动失败错误日志如下图所示: CM查看完成错误日志 [31/Dec/2023 10:45:09 0000] 26000…

Java设计模式实战:从If-Else到策略+工厂方法的演变

引言 可能很多开发者,虽然理解了设计模式的概念,但在实际工作中应用却是另一回事。本篇文章旨在用一个具体的案例来展示如何将设计模式应用到工作的编程问题中。正所谓:“纸上得来终觉浅,绝知此事要躬行。”理论的学习固然重要&a…

若依generator模块解读,Java小白入门(七)

模块基本内容 若依的核心模块基本除了安全那一块,现在还是剩下一个比较重要的章节,是ruoyi-generator,就是代码根据模板来生成,这一块很有必要进行深入了解,本章节我们弄清楚基本框架,以后,我们会在这一块…

回顾 2023,展望 2024

by zhengkai.blog.csdn.net 项目与心得 今年最大的项目和心得,非GCP莫属,作为全球顶尖的云平台, GCP有他的优势,也有很多难用的地方。但是作为当时的一个strategic solution,我们的印度本地化项目必须使用GCP&#xf…

丰田「退股」电装,传统汽车供应链体系走到十字路口

就在中国市场热衷于车企与零部件厂商的合纵连横之际,本周,传统汽车巨头丰田公司宣布,将出售部分电装(Denso)公司股份,资金用于投入电动化、智能驾驶等新技术研发。 按照计划,丰田汽车拟出售超过…

OpenCV-11颜色通道的分离与合并

本次我们使用两个比较重要的API split(mat)将图像的通道进行分割。 merge((ch1,ch2,ch3))将多个通道进行融合。 示例代码如下: import cv2 import numpy as npimg np.zeros((480, 640, 3),…

【python 的各种模块】(8) 在python使用matplotlib和wordcloud库来画wordcloud词云图

目录 目标:用python画出,网上流行的wordcloud词云图 1 准备工作 1.1环境准备 1.1.1安装步骤 1.2 资源准备 1.2.1 文本文件内容如下 1.2.2 图片资源 2 代码测试 2.1 第一版代码和效果 2.1.1 代码和效果 2.1.2 一般plt里解决中文乱码问题 2.1…

【网络面试(4)】协议栈和套接字及连接阶段的三次握手原理

1. 协议栈 一直对操作系统系统的内核协议栈理解的比较模糊,借着这一篇博客做一下简单梳理, 我觉得最直白的理解就是,内核协议栈就是操作系统中的一个网络控制软件,就是一段程序代码,它负责和网卡驱动程序交互&#xff…

Python玫瑰花完整代码

文章目录 环境需求完整代码普通玫瑰花三维玫瑰花多彩玫瑰花环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want…

文献阅读:LoRA: Low-Rank Adaptation of Large Language Models

文献阅读:LoRA: Low-Rank Adaptation of Large Language Models 1. 文章简介2. 方法介绍3. 实验 & 结论 1. 基础实验 1. Bert系列模型2. GPT系列模型 2. 消解实验 1. 作用矩阵考察2. 中间维度考察3. 扰动程度分析 4. 总结 & 思考 文献链接:htt…

骑砍战团MOD开发(29)-module_scenes.py游戏场景

骑砍1战团mod开发-场景制作方法_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Cw411N7G4/ 一.骑砍游戏场景 骑砍战团中进入城堡,乡村,战斗地图都被定义为场景,由module_scenes.py进行管理。 scene(游戏场景) 天空盒(Skyboxes.py) 地形(terrain code) 场景物(scene_…