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

news/2024/6/16 11:44:01/文章来源:https://blog.csdn.net/qq_42266272/article/details/137154398

(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.luyixian.cn/news_show_1034359.aspx

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

相关文章

nginx | nginx反向代理/负载均衡/缓存

文章目录 一、Nginx 反向代理1.1 nginx 文件结构1.2 默认的nginx配置文件1.3 实践中的 nginx.conf 二、Nginx 负载均衡2.1 热备负载均衡2.2 轮询负责均衡2.3 加权轮询负载规则2.4 ip_hash 负载均衡2.5 对特定资源实现负载均衡2.6 对不同域名实现负载均衡2.7 实现带有URL重写的负…

Java Swing游戏开发学习21

内容来自RyiSnow视频讲解 这一节讲的是Hit Detection(and Bug Fix)攻击判定与bug修复。 前言 主要实现&#xff0c;玩家攻击Monster怪 攻击动画 这里作者又新增了8张图片&#xff0c;就是攻击的图片。这个图片的宽高比例就不是1:1了。要不1632&#xff0c;要不3216&#x…

redis 的StringRedisTemplate

6.3 StringRedisTemplate 尽管JSON的序列化方式可以满足我们的需求&#xff0c;但依然存在一些问题&#xff0c;如图&#xff1a; 为了在反序列化时知道对象的类型&#xff0c;JSON序列化器会将类的class类型写入json结果中&#xff0c;存入Redis&#xff0c;会带来额外的内存…

Flutter Don‘t use ‘BuildContext‘s across async gaps.

Flutter提示Don‘t use ‘BuildContext‘s across async gaps.的解决办法—flutter里state的mounted属性

【Go】十八、管道

文章目录 1、管道2、管道的定义3、管道的关闭4、管道的遍历5、管道 协程6、只读、只写管道7、管道的阻塞8、select 1、管道 channel本质是一个队列&#xff0c;先进先出自身线程安全&#xff0c;多协程访问时&#xff0c;不用加锁&#xff0c;channel本身就是线程安全的一个s…

zabbix图表时间与服务器时间不一致问题

部署完zabbix后&#xff0c;有时候会发现zabbix服务器的时间明明是对的&#xff0c;但是图标的时间不对&#xff0c;通过以下的配置可以快速解决。 登录zabbix-nginx容器 docker exec -u root -it docker-compose-zabbix-zabbix-web-nginx-mysql-1 bash修改php配置文件 vi /e…

普通Java工程可执行JAR两种打包方式探讨

文章目录 一、需求概述二、代码结构三、运行结果四、打包设置1. 一体化可执行包2. 带外部依赖lib的可执行包 五、打包运行1. 源码放送2. 打包执行3. 打包结果 一、需求概述 普通Java工程 docker-show 实现了定时打印docker应用信息&#xff0c;现在需要将其打包成可执行Jar部署…

单元测试——Junit (断言、常用注解)

单元测试 Junit单元测试框架 使用 断言测试 使用Assert.assertEquals(message, 预期值, 实际值); 这段代码是用于在测试中验证某个方法的返回值是否符合预期。其中&#xff0c;"方法内部有bug"是用于在断言失败时显示的提示信息。4是预期的返回值&#xff0c;index…

Flutter应用混淆技术原理与实践

在移动应用开发中&#xff0c;保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具&#xff0c;帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆&#xff0c;并提供了相关的操作步骤和注意事项。 &#x1f4dd; 摘要 本…

4款在线网页原型图设计软件推荐

与桌面端相比&#xff0c;在线网页原型设计软件的使用具有优势&#xff0c;因为在线网页原型设计软件在整个使用过程中不需要安装&#xff0c;在线网页原型设计软件在任何地方都没有限制。更重要的是&#xff0c;无论是现在使用的 Linux&#xff0c;在线网页原型设计软件在操作…

LeetCode每日一题之专题一:双指针 ——移动零

移动零OJ链接&#xff1a;283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 解法&#xff08;快排的思想&#xff1a;数组划分区间-数组分两块&#xff09;&#xff1a; 算法思路&#xff1a;在本题中&#xff0c;我们可以用一个 dest 指针来扫描整个数组…

第十五届蓝桥杯模拟考试I_物联网设计

反思&#xff1a; 本次模拟让我惊醒&#xff0c;写这个作品如同搭积木&#xff0c;在拼接的时候都要仔细检查这个积木是否出bug,确保没有问题再将其拼接到之前搭好的大模块之中&#xff0c;因为就是这样的题目我在处理过程中就遇到了BUG&#xff0c;原因竟出在输入模式要上拉&…

Vue3_2024_7天【回顾上篇watch常见的后两种场景】完

随笔&#xff1a;这年头工作不好找咯&#xff0c;大家有学历提升的赶快了&#xff0c;还有外出人多注意身体&#xff0c;没错我在深圳这边阳了&#xff0c;真的绝啊&#xff0c;最尴尬的还给朋友传染了&#xff01;&#xff01;&#xff01; 之前三种的监听情况&#xff0c;监听…

【c++】类和对象(七)

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;本篇文章来到类和对象的最后一部分 目录 1.static成员1.1特性 2.友元2.1引入&#xff1a;<<和>>的重载2.2友元函数2.3友元类 3.内部类4.匿名对象5.拷…

【Linux】在生产环境中,Linux系统排查常用命令

问题排查 文章目录 问题排查top命令CPU&#xff1a;vmstatprocscpu内存&#xff1a;free硬盘&#xff1a;df硬盘IO&#xff1a;iostat网络IO&#xff1a;ifstat 生产环境服务器变慢&#xff0c;诊断思路和性能评估 top命令 查看整机系统新能 使用top命令的话&#xff0c;重点…

Javascript/Node.JS中如何用多种方式避免属性为空(cannot read property of undefined ERROR)

>>>>>>问题 "cannot read property of undefined" 是一个常见的 JavaScript 错误&#xff0c;包含我在内很多人都会遇到&#xff0c;表示你试图访问一个未定义&#xff08;undefined&#xff09;对象的属性。这通常是因为你在访问一个不存在的对象…

【算法-PID】

算法-PID ■ PID■ 闭环原理■ PID 控制流程■ PID 比例环节&#xff08;Proportion&#xff09;■ PID 积分环节&#xff08;Integral&#xff09;■ PID 微分环节&#xff08;Differential&#xff09; ■ 位置式PID&#xff0c;增量式PID介绍■ 位置式 PID 公式■ 增量式 PI…

OpenCv —— cv::VideoCapture设置摄像头图像格式为“MJPEG“

背景 今天恰巧同事有台USB摄像头,她想要在Windows系统下通过OpenCV读取该摄像头宽高为1080x768、帧率为60的视频,用来做图像算法处理。但无奈通过网上OpenCV教程 读取的视频对应尺寸的帧率仅为10帧左右,根本无法满足使用要求。于是作者通过本篇文章介绍如何解决,欢迎交流指…

寒冬已逝,“量子春天”正来

最近&#xff0c;全球对量子技术领域的私人投资有所下降&#xff0c;引发了一些观点认为这个领域可能正逐渐衰退。 政治家、资助者和投资者并不总是以科学为关注焦点。然而&#xff0c;某些科技领域偶尔会成为热点&#xff0c;正如20世纪50年代核能技术的兴起&#xff0c;那时人…

如何开发创建自己的npm包并成功发布、维护至npm官方网站

npm&#xff0c;全称为Node Package Manager&#xff0c;是专为JavaScript生态系统设计的软件包管理系统&#xff0c;尤其与Node.js平台紧密关联。作为Node.js的默认包管理工具&#xff0c;npm为开发者提供了便捷的方式来安装、共享、分发和管理代码模块。 npm作为JavaScript世…