论文解读: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

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

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

相关文章

java中file类常用方法举例说明

java中file类常用方法举例说明 当使用 java.io.File 类时,以下是一些常用方法的举例说明: 创建文件或目录: // 使用路径名创建File实例 File file new File("C:\\Users\\UserName\\Documents\\example.txt");// 使用父路径和子路…

JAVA-ArrayList的相关坑

ArrayList的asList()方法 Arrays.asList()方法,本质是调用了Arrays的一个静态内部类,实现了AbstractList接口,这个方法是重写了AbstractList的方法,但是这个asList()大小是固定的,当我们使用add方法时会调用父类Abstr…

roslaunch格式

The roslaunch package comes with roslaunch tool as well as several support tools to assist in the process of launching ROS Nodes. 目录 roslaunch Launch syntaxPassing in argsNon-launch optionsInternal-use only optionsEnvironment Variables (advanced users)…

23. 一维数组

写在前面: 今天是2023年12月31日,也是整个2023年的最后一天。我在CSDN上只有短短几个月的时光,但非常感谢大家的支持,作为一名刚刚大一的大学生呢,学习编程,学习写博客是很重要的事,所以在新的…

翻页的电子画册如何制作

​在过去,一本精美的画册往往需要大量的人力物力去印刷、装帧、运输。而现在,只需一台电脑、一个网址和一个创意,就可以轻松制作出一本电子画册。这种变化不仅降低了成本,还带来了更多的便利性和灵活性。 首先,你需要选…

网络故障排查和流量分析利器-Tcpdump命令

Tcpdump是一个在Unix/Linux系统上广泛使用的命令行网络抓包工具。它能够捕获经过网络接口的数据包,并将其以可读的格式输出到终端或文件中。Tcpdump是一个强大的命令行工具,能够捕获和分析网络数据包,为网络管理员和安全专业人员提供了深入了…

【网络面试(6)】IP协议对网络包的转发

在前面的博客中,我们提到过,网络传输的报文是有真实的数据包和一些头部组成,目前我们了解的头部就有TCP头、IP头、MAC头,而且这三个头部信息都是在应用程序委托给协议栈之后,被写入的相关信息,这些头部都是…

Leetcode4-唯一元素的和(1748)

1、题目 (1748)给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。 请你返回 nums 中唯一元素的 和 。 示例 1: 输入:nums [1,2,3,2] 输出:4 解释:唯一元素为 [1,3] ,…

修改jenkins的目录(JENKINS_HOME)

默认JENKINS_HOME是/var/lib/jenkins/ 现要修改为/home/jenkins_data/jenkins 最开始 sudo cp -a /var/lib/jenkins/ /home/jenkins_data/ 然后如下操作: 1、首先 /etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKIN…

9、python-闭包

简介 1.闭包,又称闭包函数或者闭合函数,其实和嵌套函数类似 2.不同之处在于,闭包中外部函数返回的不是一个具体的值,而是一个函数 3.一般情况下,返回的函数会赋值给一个变量,这个变量可以在后面被继续执行…

yolov8知识蒸馏代码详解:支持logit和feature-based蒸馏

文章目录 1. 知识蒸馏理论2. yolov8 蒸馏代码应用2.1 环境配置2.2 训练模型(1) 训练教师模型(2) 训练学生模型baseline(3) 蒸馏训练3. 知识蒸馏代码详解3.1 蒸馏参数设置3.2 蒸馏损失代码讲解3.2.1 Feature based loss3.2.1 Logit loss3.3 获取蒸馏的feature map及channels

08-接口文档管理工具-项目集成knife4j__ev

2、knife4j快速入门 2.1 knife4j介绍 knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍! gitee地址:knife4j: Knife4j是一个集Swagger2 和 OpenAPI3为一体的增…

第二十六周:学习笔记

第二十六周:学习笔记 摘要Abstract全卷积网络 FCN1. CNN 与 FCN2. 全连接层 --> 成卷积层3. FCN的缺点 摘要 全卷积神经网络(Fully Convolutional Network,FCN)是一种用于图像分割和语义分割任务的深度学习模型。与传统的卷积…

使用python快速开发与PDF文档对话的Gemini聊天机器人

检索增强生成(Retrieval-augmented generation,RAG)使得我们可以让大型语言模型(LLMs)访问外部知识库数据(如pdf,word、text等),从而让人们可以更加方便的通过LLM来学习外部数据的知识。今天我们将利用之前学习到的RAG方法,谷歌Gemini模型和l…

费曼学习法应用:谈自私和教育的引导

今天这个还是来源于我和九迁的对话,起因是中午吃饭的时候,九迁在学校与班主任老师和数学老师对话中带来的思考。 先听音频: 对话内容(以下内容可以边听边看,属于语音转换过来的文字,最后有个总结&#xff0…

U4_3 语法分析-自底向上分析-LR0/LR1/SLR分析

文章目录 一、LR分析法1、概念2、流程3、LR分析器结构及分析表构造1)结构2)一些概念 二、LR(0)分析法1、流程2、分析动作1)移近2)归约(reduce) 3、总结1)LR分析器2)构造DFA3)构造LR(0)的方法(三…

基于Vite创建简单Vue3工程

首先安装node.js环境,没有node.js环境,便没有npm命令。 1、Vue3创建执行命令 D:\TABLE\test>npm create vuelatestVue.js - The Progressive JavaScript Framework√ 请输入项目名称: ... vue_test √ 是否使用 TypeScript 语法&#xff…

UntiyShader(五)属性、内置文件和变量

目录 一、如何使用属性 例子 ShaderLab中的属性的类型和Cg中的变量的类型之间的匹配关系

网络安全-真实ip获取伪造与隐藏挖掘

目录 真实ip获取应用层网络层网络连接TOAproxy protocol ip伪造应用层网络层TOA攻击proxy protocol 隐藏代理 挖掘代理多地ping历史DNS解析记录国外主机解析域名网站RSS订阅网络空间搜索引擎 总结参考 本篇文章学习一下如何服务如何获取真实ip,隐藏自己的ip&#xf…

yolov8 tracking编码为web 和 rtsp流输出

1 基础工作 打开cmd 输入 conda env list 输入 conda activate py38 查看 nvidia-smi 查看 nvcc,如下图所示 cuda为11.7 ,为确认可以查看program files 下面的cuda 安装,看到11.7 就行了,读者可以自行确认自己的版本。 查看nvid…