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

news2025/1/22 13:11:22

论文前言

原理其实很简单,但是论文作者说得很抽象,时间紧的建议直接看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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7.java——异常

异常——error(资源耗尽,JVM内部系统错误,代码一般处理不了)和excption(数组越界,空指针访问,代码可以处理) java.lang.Throwable;异常体系的根父类 -------java.lang.Error:错误。…

20231231_小米音箱接入GPT

参考资料: GitHub - yihong0618/xiaogpt: Play ChatGPT and other LLM with Xiaomi AI Speaker *.设置运行脚本权限 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned *.配置小米音箱 ()pip install miservice_fork -i https://pypi.tuna.tsinghua.edu.cn/sim…

如何设置Android Studio绘制布局时的视图--新手建议收藏!

目录 前言 一、总体步骤 二、详细步骤 三、总结 四、更多资源 前言 在Android Studio中,你可以使用布局编辑器来绘制应用程序的用户界面。布局编辑器提供了一个可视化界面,可让你以所见即所得的方式布局和设计应用程序的视图。 一、总体步骤 打开…

Pytest 项目结合Jenkins

一、window安装centos7虚拟机 参考网上其他教程 二、Linux安装Jenkins 进入jenkins.io网址,点击download,选择CentOS版本 1、Linux中安装java环境和git Jenkins的运行需要java环境;安装git是为代码上传给仓库做准备; yum - y…

idea构建maven项目报错的解决

使用idea创建了一个新的spring项目,maven配置完毕后,报错,引用的依赖不存在。 控制台报错信息如下: 通过查询资料,发现是阿里云的maven仓库中没有这个版本的jar包,导入无法引用到对应的依赖。 解决方法就是…

vmware部署docker+springboot+MySQL(超详细)

一、前期准备 (一)安装jdk #docker search openjdk #docker pull openjdk:8 (二)确认网络 如果局域网其他终端(如手机访问),虚拟机网络连接需要选择《桥接》模式,而且,需要使用有线连接,不能使用Wi-Fi,切忌切忌! 并且要选择实际的那个有线连接。比如我这里是“R…

WorkPlus私有化即时通讯的标杆,助力企业实现信息管控与保障

在信息时代,保护企业的信息安全至关重要。而私有化即时通讯成为了企业提升信息安全的重要手段。作为私有化即时通讯的领先选择,WorkPlus以其卓越的性能和领先的技术,为企业提供了安全可靠的通信解决方案。 私有化即时通讯是企业保护信息安全的…

华为云Stack 8.X流量模型分析(五)

六、EIP流量模型分析 ​ 弹性公网IP(Elastic IP,简称EIP)提供独立的公网IP资源,包括公网IP地址与公网出口带宽服务。如果资源只配置了私网IP,则无法直接访问Internet,为资源配置弹性公网IP后,可…

普中STM32-PZ6806L开发板(HAL库函数实现-按键扫描)

简介 实现按键扫描, 实现四个按键按下控制灯的亮灭 电路原理图 按键电路原理图 按键与主芯片引脚原理图 其他知识 原理图分析 Key_UP按下会有高电平输入, 所以电路设置应该是默认低电平, 初始化为下拉输入 Key_Left/Right/Down按下会有低电平, 初始化为下拉输…

HTML教程(2)——基础标签

一、HTML的元数据 <meta>标签定义关于 HTML 文档的元数据。元数据是关于数据的数据&#xff08;信息&#xff09;,其始终位于<html>元素内&#xff0c;通常用于指定字符集、页面描述、关键词、文档作者和视口设置&#xff1b; 元数据不会显示在页面上&#xff0c…

redis—List列表

目录 前言 1.常见命令 2.使用场景 前言 列表类型是用来存储多个有序的字符串&#xff0c;如图2-19所示&#xff0c;a、b、C、d、e五个元素从左到右组成 了一个有序的列表&#xff0c;列表中的每个字符串称为元素(element) &#xff0c;一个列表最多可以存储2^32 - 1 个元素…

MySQL Too many connections报错

MySQL 时不时出现Too many connections报错&#xff0c;重启MySQL就好了 但是过段时间又出现 一、解决方案&#xff1a; 1.修改mysql最大连接数 set global max_connections500; 以上是修改立即生效的&#xff0c;重启MySQL就会还原回去 在MySQL配置文件修改 max_connection…

GAMES101:作业4记录

文章目录 总览算法编写代码&#xff1a;recursive_bezier()的实现Bezier()函数的实现提高部分&#xff1a;反走样 总览 Bzier 曲线是一种用于计算机图形学的参数曲线。在本次作业中,你需要实现 de Casteljau 算法来绘制由 4 个控制点表示的 Bzier 曲线 (当你正确实现该算法时,…

拒绝采样(算法)总结

先说说什么是拒绝采样算法&#xff1a;就类似于数学上的求阴影面积的方法&#xff0c;直接求求不出来&#xff0c;就用大面积 - 小面积 阴影面积的办法。 所谓拒绝 和 采样 &#xff1a;就像是撒豆子计个数&#xff0c;计算概率问题一样&#xff0c;大桶里面套小桶&#xff0c…

从0到1入门C++编程——01 C++基础知识

文章目录 一、工具安装二、新建项目三、设置字体、注释、行号四、C基础知识1.数据类型2.输入输出3.运算符4.选择、循环结构5.跳转语句6.数组7.函数8.指针9.结构体 一、工具安装 学习C使用到的工具是Visual Studio&#xff0c;Visual Studio 2010旗舰版下载链接&#xff1a;点此…

uni-app模版(扩展插件)

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

2023年终总结|回顾学习Tensorflow、Keras的历程

2023年4月&#xff0c;初探TensorFlow2.0&#xff0c;对比了1.0版本的差异。接着&#xff0c;学习了TensorFlow2.0的常量矩阵、四则运算以及常用函数。学习了数据切割、张量梯度计算、遍历元素、类别索引转换等技巧&#xff0c;并掌握了CNN输出特征图形状的计算方法。 在数据处…

【回溯】图的m着色问题Python实现

文章目录 [toc]问题描述图的 m m m可着色判定问题图的 m m m可着色优化问题四色猜想 回溯法时间复杂性Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;回溯法 问题描述 图的 m m m可着色判定问题 给定无向连通图 G G G和 m m m种不同的颜色&#xff0c;用这些颜…

SpringBoot实用篇

SpringBoot实用篇 1、热部署 什么是热部署&#xff1f; 所谓热部署&#xff0c;就是在应用正在运行的时候升级软件&#xff0c;却不需要重新启动应用。对于Java应用程序来说&#xff0c;热部署就是在运行时更新Java类文件。 热部署有什么用&#xff1f; 节约时间&#xff0c;热…

【python高级用法】迭代器、生成器、装饰器、闭包

迭代器 可迭代对象&#xff1a;可以使用for循环来遍历的&#xff0c;可以使用isinstance()来测试。 迭代器&#xff1a;同时实现了__iter__()方法和__next__()方法&#xff0c;可以使用isinstance()方法来测试是否是迭代器对象 from collections.abc import Iterable, Iterat…