(论文翻译)Coordinate Attention for Efficient Mobile Network Design(坐标注意力 CVPR2021)

Coordinate Attention for Efficient Mobile Network Design(CVPR2021)

文章目录

  • Coordinate Attention for Efficient Mobile Network Design(CVPR2021)
    • 摘要
    • 1.引言
    • 2.相关工作
    • 3.方法:Coordinate Attention
      • 3.1.Revisit Squeeze-and-Excitation Attention
      • 3.2.Coordinate Attention Blocks
        • 3.2.1.Coordinate Information Embedding
        • 3.2.2.Coordinate Attention Generation
      • 3.3.Implementation
    • 4.实验
    • 5.结论

实验部分详见原文,文章为原文翻译,如有错误请参照原文

摘要

  • 挑战:最近在移动网络设计的研究在通道注意力上(如SENet)表现出引人注意的效果,但是他们普遍忽略了位置信息,这对生成空间注意力特征映射是重要的

  • 方法

    • 在本文中,我们通过将位置信息嵌入到通道注意力中,提出一种新颖的移动网络注意力机制,名为“coordinate attention”
    • 不同于通道注意力将特征张量经过二维池化操作转换成单一特征向量,coordinate attention将通道注意力分解为两个一维特征,分别沿两个空间方向聚集特征
    • 这样可以在一个空间方向上捕获远程依赖关系,同时在另一个空间方向上保持精确的位置信息
    • 然后将得到的特征图分别编码为一对方向感知和位置敏感的注意映射,它们可以互补地应用于输入特征映射,以增强感兴趣目标的表示
    • 我们的coordinate attention 是简单的,可以灵活地插入经典的移动网络,如MobileNetV2, MobileNeXt,是几乎没有计算开销的高效率网络
  • 贡献

  • 大量的实验表明,我们的 coordinate attention 关注不仅有利于ImageNet分类,更有趣的是,在下游任务中,如目标检测和语义分割中表现更好

  • code:https://github.com/Andrew-Qibin/CoordAttention

1.引言

在这里插入图片描述

Figure 1. Performance of different attention methods on three classic vision tasks. The y-axis labels from left to right are top-1 accuracy, mean IoU, and AP, respectively. Clearly, our approach not only achieves the best result in ImageNet classification [33] against the SE block [18] and CBAM [44] but performs even better in down-stream tasks, like semantic segmentation [9] and COCO object detection [21]. Results are based on MobileNetV2 [34].

1st Para:

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

2st Para:

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

3st Para:

  • 在本文中,除了第一项工作之外,我们提出了一种新颖有效的注意机制,通过将位置信息嵌入到通道注意中,使移动网络能够关注大区域,同时避免产生显著的计算开销
  • 为了减轻二维全局池化造成的位置信息丢失,我们将通道注意分解为两个并行的一维特征编码过程,以有效地整合空间坐标信息到生成的注意力映射
  • 具体来说,我们的方法利用两个一维全局池化操作,分别将垂直和水平方向的输入特征聚合到两个独立的方向感知特征映射中
  • 这两个嵌入了特定方向信息的特征映射被分别编码成两个注意力映射,每个注意力映射可以沿一个空间方向捕获输入特征映射的远程依赖关系
  • 因此,位置信息可以保存在生成的注意力映射中
  • 然后,通过乘法将两个注意映射应用于输入特征映射,以强调感兴趣的表示
  • 我们将提出的注意方法命名为coordinate attention,因为它可以区分空间方向(即坐标)并生成坐标感知的注意力映射

4st Para:

  • 我们的coordinate attention 提供了以下优势
  • 首先,它不仅可以捕获跨通道信息,还可以捕获方向感知和位置敏感信息,这有助于模型更准确地定位和识别感兴趣的目标
  • 其次,我们的方法灵活且轻量级,可以很容易地插入到移动网络的经典构建块中,例如MobileNetV2中提出的residual块和MobileNeXt中提出的sandglass块,通过强调信息表示来增强特征
  • 第三,作为一个预训练模型,我们的coordinate attention 可以为移动网络的下游任务带来显著的性能提升,特别是对于那些密集预测的任务(例如,语义分割),我们将在我们的实验部分中展示

5st Para:

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

2.相关工作

在这里插入图片描述

Figure 2. Schematic comparison of the proposed coordinate attention block © to the classic SE channel attention block [18] (a) and CBAM [44] (b). Here, “GAP” and “GMP” refer to the global average pooling and global max pooling, respectively. ‘X Avg Pool’ and ’Y Avg Pool’ refer to 1D horizontal global pooling and 1D vertical global pooling, respectively.

3.方法:Coordinate Attention

  • coordinate attention block可以被看作是一个旨在增强移动网络学习特征的表达能力的计算单元
  • 它可以取任何中间特征张量 X = [ x 1 , x 2 , … , x C ] ∈ R C × H × W \mathbf{X} = [\mathbf{x}_1,\mathbf{x}_2,\ldots,\mathbf{x}_C] \in \mathbb{R}^{C\times H\times W} X=[x1,x2,,xC]RC×H×W 作为输入并输出具有增广表示的与 X \mathbf{X} X 尺寸相同的变换张量 Y = [ y 1 , y 2 , … , y C ] \mathbf{Y} = [\mathbf{y}_1,\mathbf{y}_2,\ldots,\mathbf{y}_C] Y=[y1,y2,,yC]
  • 为了清晰地描述所提出的coordinate attention,我们首先回顾在移动网络中广泛使用的SE注意

3.1.Revisit Squeeze-and-Excitation Attention

1st Para:

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

2st Para:

  • 在结构上,SE块可分解为squeeze和excitation两个步骤,分别用于全局信息嵌入和通道关系的自适应重新校准
  • 给定输入 X \mathbf{X} X ,对第 c c c 个通道的squeeze可以表示为:

z c = 1 H × W ∑ i = 1 H ∑ j = 1 W x c ( i , j ) , (1) z_c=\frac{1}{H\times W}\sum_{i=1}^{H}\sum_{j=1}^{W}x_c(i,j),\tag{1} zc=H×W1i=1Hj=1Wxc(i,j),(1)

  • 其中 z c z_c zc 是第 c c c 个通道的输出
  • 输入 X \mathbf{X} X 是直接来自一个卷积层与一个固定的核大小,因此可以视为一个集合的局部描述
  • squeeze操作使得收集全局信息成为可能

3st Para:

  • 第二步,excitation,旨在完全捕获通道关系,可以表示为:

X ^ = X ⋅ σ ( z ^ ) , (2) \hat{\mathbf{X}}=\mathbf{X}\cdot\sigma(\hat{\mathbf{z}}),\tag{2} X^=Xσ(z^),(2)

  • 其中, ⋅ \cdot 表示通道的乘法, σ \sigma σ 表示sigmoid, z ^ \hat{\mathbf{z}} z^ 是由转换函数生成的结果:

z ^ = T 2 ( ReLU ( T 1 ( z ) ) ) . (3) \hat{\mathbf{z}}=T_2(\text{ReLU}(T_1(\mathbf{z}))).\tag{3} z^=T2(ReLU(T1(z))).(3)

  • 其中, T 1 T_1 T1 T 2 T_2 T2​ 是两个线性变换,可以通过学习来捕捉每个通道的重要性

4st Para:

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

3.2.Coordinate Attention Blocks

  • 我们通过坐标信息嵌入和坐标注意生成两个步骤,对通道关系和远程依赖进行精确的位置信息编码
  • 所提出的坐标注意块示意图如Figure 2.右侧所示
  • 在下面,我们将详细描述它
3.2.1.Coordinate Information Embedding

1st Para:

  • 全局池化通常用于通道注意力中,以全局编码空间信息,但它将全局空间信息压缩成一个通道描述符,因此难以保留位置信息,而位置信息对于在视觉任务中捕捉空间结构是至关重要的
  • 为了鼓励注意力模块在空间上捕捉具有精确位置信息的长交互,我们将全局池化如公式(1)所示分解为一对一维特征编码操作
  • 具体来说,给定输入 $ X $,我们使用两种空间范围的池化核 ( H , 1 ) (H, 1) (H,1) ( 1 , W ) (1, W) (1,W),分别沿水平坐标和垂直坐标对每个通道进行编码
  • 因此,第 $ c $ 个通道在高度 $ h $ 处的输出可以表示为:

z c h ( h ) = 1 W ∑ 0 ≤ i < W x c ( h , i ) . (4) z_c^h(h)=\frac{1}{W}\sum_{0\leq i<W}x_c(h,i). \tag{4} zch(h)=W10i<Wxc(h,i).(4)

  • 类似地,第 $ c $ 个通道在宽度 $ w $ 处的输出可以表示为:

z c w ( w ) = 1 H ∑ 0 ≤ j < H x c ( j , w ) . (5) z_c^w(w)=\frac{1}{H}\sum_{0\leq j<H}x_c(j,w). \tag{5} zcw(w)=H10j<Hxc(j,w).(5)

2st Para:

  • 上述两种变换分别沿两个空间方向聚合特征,生成一对方向感知特征映射
  • 这与通道注意力方法中的压缩操作 Eq(1)产生单一特征向量的方式截然不同
  • 这两种变换还使我们的注意力模块能够沿一个空间方向捕捉长程依赖关系,并沿另一个空间方向保留精确的位置信息,从而帮助网络更准确地定位感兴趣的目标
3.2.2.Coordinate Attention Generation

1st Para:

  • 如上所述,Eq(4)和 Eq(5)实现了全局感受野并编码了精确的位置信息
  • 为了利用所得的表现力强的表示,我们提出了第二种变换,称为坐标注意力生成
  • 我们的设计遵循以下三个标准
  • 首先,新变换在移动环境中的应用应该尽可能简单和廉价
  • 其次,它可以充分利用捕获到的位置信息,以便准确突出感兴趣的区域
  • 最后但同样重要的是,它还应能够有效捕捉通道间的关系,这在现有研究中已被证明是至关重要的

2st Para:

  • 具体来说,给定由 Eq 4 和 Eq 5 生成的聚合特征图,我们首先将它们拼接起来,然后将它们发送到共享的 1 × 1 1 \times 1 1×1 卷积变换函数 $ F_1 $​,得到:

f = δ ( F 1 ( [ z h , z w ] ) ) , (6) \mathbf{f}=\delta(F_1([\mathbf{z}^h,\mathbf{z}^w])), \tag{6} f=δ(F1([zh,zw])),(6)

  • 这里, [ ⋅ , ⋅ ] [\cdot, \cdot] [,] 表示沿空间维度的连接操作,$ \delta $ 是非线性激活函数,$ f \in \mathbb{R}^{C/r \times (H+W)} $ 是中间特征图
  • 其中 $ r $​ 是减少比例,用于控制块大小,就像 SE 块中一样,它编码了水平方向和垂直方向的空间信息
  • 然后,我们沿着空间维度将 $ f $ 分割成两个单独的张量 $ f_h \in \mathbb{R}^{C/r \times H} $ 和 $ f_w \in \mathbb{R}^{C/r \times W} $
  • 再利用另外两个 1 × 1 1 \times 1 1×1 卷积变换 $ F_h $ 和 $ F_w $ 分别将 $ f_h $ 和 $ f_w $ 转换为与输入 $ X $​ 通道数相同的张量,得到:

g h = σ ( F h ( f h ) ) , (7) \mathbf{g}^h=\sigma(F_h(\mathbf{f}^h)), \tag{7} gh=σ(Fh(fh)),(7)

g w = σ ( F w ( f w ) ) . (8) \mathbf{g}^w=\sigma(F_w(\mathbf{f}^w)). \tag{8} gw=σ(Fw(fw)).(8)

  • 回想一下,$ \sigma $ 是 sigmoid 函数
  • 为了降低模型复杂度,我们通常使用适当的减少比例 $ r $(例如,32)来减少 $ f $ 的通道数
  • 我们将在实验部分讨论不同减少比例对性能的影响
  • 然后,输出 $ g_h $ 和 $ g_w $ 分别被扩展并用作注意力权重
  • 最后,我们的坐标注意力块的输出 $ Y $​ 可以写成:

y c ( i , j ) = x c ( i , j ) × g c h ( i ) × g c w ( j ) . (9) y_c(i,j)=x_c(i,j)\times g_c^h(i)\times g_c^w(j). \tag{9} yc(i,j)=xc(i,j)×gch(i)×gcw(j).(9)

3st Para: Discussion

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

3.3.Implementation

在这里插入图片描述

Figure 3. Network implementation for different network architectures. (a) Inverted residual block proposed in MobileNetV2;(b) Sandglass bottleneck block proposed in MobileNeXt.

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

4.实验

5.结论

  • 本文提出了一种新的移动网络轻量级注意机制——coordinate attention
  • 我们的coordinate attention继承了通道注意方法(例如,squeeze-and-excitation注意)的优势,这些方法可以模拟通道间的关系,同时通过精确的位置信息捕获远程依赖关系
  • 在ImageNet分类、目标检测和语义分割方面的实验证明了该方法的有效性

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

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

相关文章

【c++】哈希>unordered容器哈希表哈希桶哈希的应用详解

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;c_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1. unordered系列关联式容器 1.1 unordered_map 1.1.1 unordered_map的文档介绍 1.1.2 unordered_map的接口说明 1.1.2.1 unordered_m…

Java学习 - Maven - 常用命令(学习精选)

前言 在上一篇文章中&#xff0c;我们对 Maven 有了初步的了解&#xff0c;包括它的定义、安装步骤以及一些基本的配置方法。Maven 是一个强大的项目管理工具&#xff0c;它可以帮助开发者自动化构建过程&#xff0c;并且管理项目的依赖关系。 今天&#xff0c;我们将深入探讨…

上位机图像处理和嵌入式模块部署(f407 mcu和其他mcu品类的选择)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多朋友读书的时候学的是stm32&#xff0c;工作中用的也是stm32。这本来问题不大&#xff0c;但是过去两三年的经历告诉我们&#xff0c;mcu的使用…

【设计模式】行为型设计模式之 职责链模式,探究过滤器、拦截器、Mybatis插件的底层原理

一、介绍 职责链模式在开发场景中经常被用到&#xff0c;例如框架的过滤器、拦截器、还有 Netty 的编解码器等都是典型的职责链模式的应用。 标准定义 GOF 定义&#xff1a;将请求的发送和接收解耦&#xff0c;让多个接收对象都有机会处理这个请求&#xff0c;将这些接收对象…

k8s小型实验模拟

&#xff08;1&#xff09;Kubernetes 区域可采用 Kubeadm 方式进行安装。&#xff08;5分&#xff09; &#xff08;2&#xff09;要求在 Kubernetes 环境中&#xff0c;通过yaml文件的方式&#xff0c;创建2个Nginx Pod分别放置在两个不同的节点上&#xff0c;Pod使用hostPat…

Java | Leetcode Java题解之第139题单词拆分

题目&#xff1a; 题解&#xff1a; public class Solution {public boolean wordBreak(String s, List<String> wordDict) {Set<String> wordDictSet new HashSet(wordDict);boolean[] dp new boolean[s.length() 1];dp[0] true;for (int i 1; i < s.len…

JimuReport 积木报表 v1.7.52 版本发布,免费的低代码报表

项目介绍 一款免费的数据可视化报表工具&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完…

智能变电站网络报文记录及故障录波分析装置

是基于Intel X86、PowerPC、FPGA等技术的高度集成化的硬件平台&#xff0c;采用了高性能CPU无风扇散热、网络数据采集、高速数据压缩存储加密等多种技术&#xff0c;实现了高性能计算、多端口同步高速数据采集、数据实时分析、大容量数据存储等功能。 ● 在满足工业标准的同时&…

数据结构 -- 树状数组

前言 树状数组或二叉索引树&#xff08;Binary Indexed Tree&#xff09;&#xff0c;又以其发明者命名为 Fenwick 树。其初衷是解决数据压缩里的累积频率的计算问题&#xff0c;现多用于高效计算数列的前缀和、区间和。它可以以 O(logn) 的时间得到任意前缀和。并同时支持在 …

Kali Linux 2024.2 释出

渗透测试发行版 Kali Linux 释出了最新的 2024.2。 主要新特性包括&#xff1a;桌面环境更新到 GNOME 46&#xff0c;Xfce 环境加入 HiDPI 模式&#xff0c;更新了网络侦察工具 AutoRecon&#xff0c;监视 Linux 进程的命令行工具 pspy&#xff0c;提取和显示 CVE 信息的 Splo…

项目验收总体计划书(实际项目验收原件参考Word)

测试目标&#xff1a;确保项目的需求分析说明书中的所有功能需求都已实现&#xff0c;且能正常运行&#xff1b;确保项目的业务流程符合用户和产品设计要求&#xff1b;确保项目的界面美观、风格一致、易学习、易操作、易理解。 软件全套文档过去进主页。 一、 前言 &#xff0…

Unity 编辑器扩展,获取目录下所有的预制件

先看演示效果 实现方案 1创建几个用于测试的cube 2&#xff0c;创建一个Editor脚本 3&#xff0c;编写脚本内容 附上源码 using UnityEditor; using UnityEngine;public class GetPrefeb : EditorWindow {private string folderPath "Assets/Resources"; // 指定预…

[FSCTF 2023]Tea_apk

得到密文和密钥 import base64 from ctypes import c_uint32import libnumDELTA 0x9E3779B9def decrypt(v, n, k):rounds 6 int(52 / n)sum c_uint32(rounds * DELTA)y v[0].valuewhile rounds > 0:e (sum.value >> 2) & 3p n - 1while p > 0:z v[p …

Django 连接mysql数据库配置

1&#xff0c;提前创建注册的app1应用 Test/Test/settings.py python manage.py startapp app1 2&#xff0c;配置mysql数据库连接 Test/Test/settings.py DATABASES {default: {ENGINE: django.db.backends.mysql,# 数据库名字NAME: db1,# 连接mysql数据库用户名USER: ro…

Python 基于阿里云的OSS对象存储服务实现本地文件上云框架

Python 基于阿里云的OSS对象存储服务实现将文件上云框架 文章目录 Python 基于阿里云的OSS对象存储服务实现将文件上云框架一、前言二、阿里云配置1、获取用户AKEY和AKeySecret2、创建Bucket 三、Python 阿里云oss上云框架1、安装oss2依赖库2、阿里云oss python 一、前言 未来…

2024年CKA模拟系统制作 | step-by-step | 1、基础环境准备

目录 一、软件环境 二、虚拟网络环境准备 1、编辑虚拟网络 2、网络设置 三、新建虚拟主机 1、新建目录 2、新建虚拟主机 四、系统安装 1、装载系统镜像 2、开启虚拟机 3、选择语言 4、键盘选择 5、网络配置 6、代理设置 7、设置软件源 8、存储设置 9、名称设置 …

摆脱Jenkins - 使用google cloudbuild 部署 java service 到 compute engine VM

在之前 介绍 cloud build 的文章中 初探 Google 云原生的CICD - CloudBuild 已经介绍过&#xff0c; 用cloud build 去部署1个 spring boot service 到 cloud run 是很简单的&#xff0c; 因为部署cloud run 无非就是用gcloud 去部署1个 GAR 上的docker image 到cloud run 容…

42【Aseprite 作图】梅花盆栽——拆解

1 花盆 是高度比较低的盆&#xff0c;只有一个下2&#xff1b;上面分两个 1 2 盆边缘颜色深&#xff0c;上面靠近外面的颜色浅&#xff0c;正面颜色稍微深一点&#xff0c;画两条竖的浅色线&#xff0c;作为装饰 2 花盆中的沙石 沙子颜色深一点&#xff0c;中间有浅一点的线…

[office] excel工作表数据分级显示 #其他#笔记

excel工作表数据分级显示 如下图1所示的工作表数据&#xff0c;我们按东区、西区、南区、北区来建立分级显示。 图1 这里先利用“创建组”命令建立分级显示。选取单元格区域A3:E5&#xff0c;单击功能区“数据”选项卡“分级显示”组中的“创建组——创建组…”命令&#xff…

【c语言】qsort函数及泛型冒泡排序的模拟实现

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C语言 目录 一、qsort函数 1.回调函数 2.qsort函数 3.void* 指针 二、泛型冒泡排序的模拟实现 1.比较函数的编写 2.交换函数的编写 3.冒泡排序的编写 4…