【论文阅读】ELA: Efficient Local Attention for Deep Convolutional Neural Networks

(ELA)Efficient Local Attention for Deep Convolutional Neural Networks

论文链接:ELA: Efficient Local Attention for Deep Convolutional Neural Networks (arxiv.org)

作者:Wei Xu, Yi Wan

单位:兰州大学信息科学与工程学院,青海省物联网重点实验室,青海师范大学

引用:Xu W, Wan Y. ELA: Efficient Local Attention for Deep Convolutional Neural Networks[J]. arXiv preprint arXiv:2403.01123, 2024.

摘要

请参阅标题

众所周知,图像的空间维度包含关键的位置信息,而现有的注意力机制要么无法有效利用这种空间信息,要么以降低通道维数为代价。为了解决这些局限性,本文提出了一种高效局部注意力(Efficient Local Attention,ELA)方法,通过分析Coordinate Attention(CA) method的局限性,确定了Batch Normalization中泛化能力的缺乏、降维对通道注意力的不利影响以及注意力生成过程的复杂性。为了克服这些挑战,提出了结合一维卷积和Group Normalization特征增强技术。这种方法通过有效地编码两个一维位置特征图,无需降维即可精确定位感兴趣区域,同时允许轻量级实现。与2D卷积相比,1D卷积更适合处理序列信号,并且更轻量、更快。GN与BN相比,展现出可比较的性能和更好的泛化能力。
在这里插入图片描述

与 CA 类似,ELA 采用strip pooling在空间维度上获取水平和垂直方向的特征向量,保持窄核形状以捕获长程依赖关系,防止不相关区域影响标签预测,从而在各自方向上产生丰富的目标位置特征。ELA 针对每个方向独立处理上述特征向量以获得注意力预测,然后使用点乘操作将其组合在一起,从而确保感兴趣区域的准确位置信息。

Method

Coordinate Attention

CA包括两个主要步骤:坐标信息嵌入和坐标注意力生成。在第一步中,通过使用strip pooling而不是spatial global pooling来捕捉长距离的空间依赖性。

考虑一个卷积块的输出为 R H × W × C R ^{H \times W \times C} RH×W×C ,分别H,W,C代表高度、宽度和通道维度(即卷积核的数量)。第一步中,为了应用strip pooling,分别在两个空间范围内对每个通道执行平均池化: ( H , 1 ) (H,1) (H,1) 在水平方向上和 ( 1 , W ) (1,W) (1,W) 在垂直方向上,数学表示如下:

z c h ( h ) = 1 H ∑ 0 ≤ i < H x c ( h , i ) z _ { c } ^ { h } ( h ) = \frac { 1 } { H } \sum _ { 0 \leq i < H } x _ { c } ( h , i ) zch(h)=H10i<Hxc(h,i)

z c w ( w ) = 1 W ∑ 0 ≤ j < W x c ( j , w ) z _ { c } ^ { w } \left( w \right) = \frac { 1 } { W } \sum _ { 0 \leq j < W } x _ { c } ( j , w ) zcw(w)=W10j<Wxc(j,w)

第二步中,由上述两个方程生成的特征图被聚合成为新的特征图,然后被送入共享转换函数 F 1 F_1 F1(一个2D卷积)以及批量归一化(BN),可以表示如下。

f = δ ( B N ( F 1 ( [ z h , z w ] ) ) ) f = \delta ( B N ( F _ { 1 } ( \left[ z ^ { h } , z ^ { w } \right] ) ) ) f=δ(BN(F1([zh,zw])))

其中,级联操作 [ . , . ] [.,.] [.,.] 沿空间维, δ \delta δ 表示非线性激活函数。中间特征图 R C / r × ( H + W ) R^{C / r \times ( H + W )} RC/r×(H+W),是水平和垂直编码后得到的。随后, f h ∈ R C / r × H f ^ { h } \in R ^ { C / r \times H } fhRC/r×H f h ∈ R C / r × H , f w ∈ R C / r × W f ^ { h } \in R ^ { C / r \times H } , f ^ { w } \in R ^ { C / r \times W } fhRC/r×H,fwRC/r×W,沿着空间维度。此外,另外两个 1 × 1 1×1 1×1卷积变换 F h F_h Fh F w F_w Fw用于生成与输入通道数相同的张量。

g c h = σ ( F h ( f h ) ) g _ { c } ^ { h } = \sigma ( F _ { h } ( f ^ { h } ) ) gch=σ(Fh(fh))

g c w = σ ( F w ( f w ) ) g _ { c } ^ { w } = \sigma ( F _ { w } ( f ^ { w } ) ) gcw=σ(Fw(fw))

其中, δ \delta δ 表示sigmoid函数。为了降低计算开销,通常适当的减少 f f f的通道数,比如32。最后得到输出 g c h g _ { c } ^ { h } gch g c w g _ { c } ^ { w } gcw ,被扩展并用作注意力权重,分别对应于水平和垂直方向。最终,CA 模块的输出可以表示为 Y Y Y

y c ( i , j ) = x c ( i , j ) × g c h ( i ) × g c w ( j ) y _ { c } ( i , j ) = x _ { c } ( i , j ) \times g _ { c } ^ { h } ( i ) \times g _ { c } ^ { w } ( j ) yc(i,j)=xc(i,j)×gch(i)×gcw(j)

通道维度的降低旨在减少模型的复杂性,但会影响通道与它们对应权重之间的关联,这可能会对整体的注意力预测产生不利影响。

Shortcomings of Coordinate Attention

在这里插入图片描述

BN极大地依赖于小批量的大小,当小批量过小时,BN计算出的均值和方差可能无法充分代表整个数据集,这可能会损害模型的总体性能。最开始CA中获得的坐标信息嵌入表示了每个通道维度内的序列信息,将BN放置在处理序列数据的网络中并不是最佳选择,特别是对于CA。

因此,CA可能会对较小的网络架构产生负面影响。相反,当GN被用作CA中BN的替代品,并融入到较小的网络架构中时,性能立即出现显著提升。此外,对CA结构的深入分析可以揭示额外的挑战。在第二步的开始,两个方向的特征图和被拼接成一个新的特征图,随后进行编码。然而,两个方向的特征图和具有独特的特性。因此,一旦合并并捕捉到它们的特点,它们各自连接处的相互影响可能会削弱每个方向上注意力预测的准确性

Efficient Local Attention

CA方法通过利用strip pooling来捕获空间维度中的长距离依赖,显著提高了准确度,尤其是在更深层的网络中。基于之前的分析,可以看出BN阻碍了CA的泛化能力,而GN(组归一化)则解决了这些不足

因为第一步中得出的位置信息嵌入是通道内的序列信号。因此,通常更合适的是使用1D卷积而不是2D卷积来处理这些序列信号。1D卷积不仅擅长处理序列信号,而且与2D卷积相比,它更加轻量化。在CA的情况下,尽管两次使用了2D卷积,但它使用的是 1 × 1 1×1 1×1 的卷积核,这限制了特征提取能力。因此,ELA采用5或7大小的1D卷积核,这有效地增强了位置信息嵌入的交互能力,使得整个ELA能够准确找到感兴趣的区域

z h z_h zh z w z_w zw 不仅捕捉了全局感知场,还捕捉了精确的位置信息。为了有效地利用这些特征,作者设计了一些简单的处理方法。对两个方向(水平和垂直)上的位置信息应用一维卷积以增强其信息。随后,使用组归一化 G n G_n Gn 来处理增强的位置信息,可以得到在水平和垂直方向上的位置注意力的表示:

y h = σ ( G n ( F h ( z h ) ) ) y w = σ ( G n ( F w ( z w ) ) ) \begin{matrix} y ^ { h } = \sigma ( G _ { n } ( F _ { h } ( z _ { h } ) ) ) \\ y ^ { w } = \sigma ( G _ { n } ( F _ { w } ( z _ { w } ) ) ) \end{matrix} yh=σ(Gn(Fh(zh)))yw=σ(Gn(Fw(zw)))

其中, σ \sigma σ 为非线性激活函数, F h F _ { h } Fh F w F _ { w } Fw 表示一维卷积,卷积核设置为5或7。尽管参数数量略有增加,但大小为 7 7 7 的卷积核表现更好。

Multiple ELA version settings

为了在考虑参数数量的同时优化ELA的性能,引入了四种方案:ELA-Tiny(ELA-T),ELA-Base(ELA-B),ELA-Small(ELA-S)和ELA-Large(ELA-L)。

  1. ELA-T的参数配置为 kernel size = 5, groups = in channels, num group = 32;
  2. ELA-B的参数配置为 kernel size = 7, groups = in channels, num group = 16;
  3. ELA-S的参数配置为 kernel size = 5, groups = in channels/8, num group = 16;
  4. ELA-L的参数配置为 kernel size = 7, groups = in channels/8, num group = 16;

Visualization

为了评估ELA方法的有效性,作者在ImageNet上进行了两组实验:ResNet(不包含注意力模块)和ELA-ResNet(包含ELA)。为了评估性能,作者使用了五张图像进行测试。通过使用GradCAM生成视觉 Heatmap ,作者在第四层(最后一个阶段的最后瓶颈)展示了两组模型的成果。下图说明了作者提出的ELA模块成功指导整个网络更精确地聚焦于目标细节的相关区域。这一演示突显了ELA模块在提高分类准确度方面的有效性。

在这里插入图片描述

Implementation

在这里插入图片描述

实验

在这里插入图片描述

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

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

相关文章

C语言-文件操作

&#x1f308;很高兴可以来阅读我的博客&#xff01;&#x1f31f;我热衷于分享&#x1f58a;学习经验&#xff0c;&#x1f3eb;多彩生活&#xff0c;精彩足球赛事⚽&#x1f517;我的CSDN&#xff1a; Kevin ’ s blog&#x1f4c2;专栏收录&#xff1a;C预言 1. 文件的作用 …

基于spark的大数据分析预测地震受灾情况的系统设计

基于spark的大数据分析预测地震受灾情况的系统设计 在本篇博客中,我们将介绍如何使用Apache Spark框架进行地震受灾情况的预测。我们将结合数据分析、特征工程、模型训练和评估等步骤,最终建立一个预测模型来预测地震造成的破坏程度,同时使用可视化大屏的方式展示数据的分布…

docker-compose运行springinitializr用来创建springboot2

前言 spring initializr官方的地址是: https://start.spring.io/ &#xff0c;这是一个用来创建springboot脚手架的一个工具&#xff0c;但是目前这个工具已经更新到springboot3&#xff0c;而我还没学springboot3&#xff0c;目前还想继续创建springboot2&#xff0c;我就想能…

Unity类银河恶魔城学习记录11-10 p112 Items drop源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili ItemObject_Trigger.cs using System.Collections; using System.Collecti…

Gin入门指南:从零开始快速掌握Go Web框架Gin

官网:https://gin-gonic.com/ GitHub:https://github.com/gin-gonic 了解 Gin Gin 是一个使用 Go 语言开发的 Web 框架,它非常轻量级且具有高性能。Gin 提供了快速构建 Web 应用程序所需的基本功能和丰富的中间件支持。 以下是 Gin 框架的一些特点和功能: 快速而高效:…

设计模式-结构型-享元模式Flyweight

享元模式的特点&#xff1a; 享元模式可以共享相同的对象&#xff0c;避免创建过多的对象实例&#xff0c;从而节省内存资源 使用场景&#xff1a; 常用于需要创建大量相似的对象的情况 享元接口类 public interface Flyweight { void operate(String extrinsicState); } 享…

信息工程大学第五届超越杯程序设计竞赛(同步赛)题解

比赛传送门 博客园传送门 c 模板框架 #pragma GCC optimize(3,"Ofast","inline") #include<bits/stdc.h> #define rep(i,a,b) for (int ia;i<b;i) #define per(i,a,b) for (int ia;i>b;--i) #define se second #define fi first #define e…

【C++庖丁解牛】自平衡二叉搜索树--AVL树

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1 AVL树的概念2. AVL…

Solidity Uniswap V2 Router swapTokensForExactTokens

最初的router合约实现了许多不同的交换方式。我们不会实现所有的方式&#xff0c;但我想向大家展示如何实现倒置交换&#xff1a;用未知量的输入Token交换精确量的输出代币。这是一个有趣的用例&#xff0c;可能并不常用&#xff0c;但仍有可能实现。 GitHub - XuHugo/solidit…

基础布局之RelativeLayout相对布局

目录 概述一、属性分类二、父容器定位属性2.1 示例12.2 示例2 三、相对定位属性3.1 示例13.2 示例23.3 示例3 概述 相对布局&#xff08;RelativeLayout&#xff09;是一种根据父容器和兄弟控件作为参照来确定控件位置的布局方式。 使用相对布局&#xff0c;需要将布局节点改成…

Spring Boot 使用 Redis

1&#xff0c;Spring 是如何集成Redis的&#xff1f; 首先我们要使用jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><gro…

基于ssm校园教务系统论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对校园教务信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差…

Windows 11 专业版 23H2 Docker Desktop 下载 安装 配置 使用

博文目录 文章目录 Docker Desktop准备系统要求 (WSL 2 backend)在 Windows 上打开 WSL 2 功能先决条件开启 WSL 2 WSL下载安装启动配置使用镜像 Image卷积 Volumes容器 Containers 命令RedisMySQLPostGreSQL Docker Desktop Overview of Docker Desktop Docker Desktop 疑难解…

每日面经分享(pytest入门)

1. pytest具有什么功能 a. 自动发现和执行测试用例&#xff1a;pytest可以自动发现项目中的测试文件和测试函数&#xff0c;无需手动编写测试套件或测试运行器。 b. 丰富的断言函数&#xff1a;pytest提供了丰富的断言函数&#xff0c;方便地验证测试结果是否符合预期。断言函…

隐私计算实训营学习五:隐语PSI介绍及开发指南

文章目录 一、SPU 实现的PSI介绍1.1 PSI定义和种类1.1.1 PSI定义和种类1.1.2 隐语PSI功能分层 1.2 SPU 实现的PSI介绍1.2.1 半诚实模型1.2.2 PSI实现位置 二、SPU PSI调度架构三、Secretflow PSI开发指南四、隐语PSI后续计划 一、SPU 实现的PSI介绍 1.1 PSI定义和种类 1.1.1 …

C++心决之命名空间、重载函数和引用

目录 1. C关键字(C98) 2. 命名空间 2.1 命名空间定义 2.2 命名空间使用 3. C输入&输出 4. 缺省参数 4.1 缺省参数概念 4.2 缺省参数分类 5. 函数重载 5.1 函数重载概念 5.2 C支持函数重载的原理--名字修饰(name Mangling) 6. 引用 6.1 引用概念 6.2 引用特性…

Apollo配置中心使用

apollo配置中心使用 Apollo配置中心Apollo配置中心-简介apollo源码Apollo配置基本概念Apollo特性Apollo基础模型Apollo架构设计Apollo架构设计-实时推送设计Apollo架构设计-可用性Apollo架构设计-监控Apollo架构设计-扩展Apollo-本地部署准备工作安装步骤mysql命令行创建Apollo…

MultiPath HTTP:北大与华为合作部署FLEETY

当前的终端基本都能支持蜂窝网络和wifi网络&#xff0c;然而&#xff0c;不同的网络通路都不可避免的会出现信号不好或者其他因素引起的通路性能(吞吐量、时延等)下降。为了能够提升终端业务体验&#xff0c;很多不同的MultiPath方案被提出&#xff0c;其中&#xff0c;包括应用…

【数据分析面试】1. 计算年度收入百分比(SQL)

题目 你需要为公司的营收来源生成一份年度报告。计算截止目前为止&#xff0c;在表格中记录的第一年和最后一年所创造的总收入百分比。将百分比四舍五入到两位小数。 示例&#xff1a; 输入&#xff1a; annual_payments 表 列名类型amountINTEGERcreated_atDATETIMEstatusV…

CVAE——生成0-9数字图像(Pytorch+mnist)

1、简介 CVAE&#xff08;Conditional Variational Autoencoder&#xff0c;条件变分自编码器&#xff09;是一种变分自编码器&#xff08;VAE&#xff09;的变体&#xff0c;用于生成有条件的数据。在传统的变分自编码器中&#xff0c;生成的数据是完全由潜在变量决定的&…