点击下方卡片,关注
「AI视界引擎」
公众号
( 添加时备注:方向+学校/公司+昵称/姓名 )
早期工作引入的通道和空间注意力机制增强了深度卷积神经网络(CNNs)的表示能力,但往往会带来参数和计算成本的增加。
而近期方法仅专注于高效特征上下文建模以优化通道注意力,作者则旨在通过最少的参数和减少计算量来全面建模通道和空间注意力。
借鉴图中关系建模的原则,作者提出了一个常数参数模块——STEAM:Squeeze-and-Transform-Enhanced Attention Module,该模块结合了通道和空间注意力,以增强CNN的表示能力。
据作者所知,这是首次提出基于图的方法来同时建模通道和空间注意力,并利用多头图 Transformer 的概念。
此外,作者还引入了输出指导池化(OGP),它能有效地捕捉空间上下文以进一步增强空间注意力。
作者对大规模图像分类、目标检测和实例分割进行了广泛评估,发现STEAM在标准基准数据集上比标准ResNet-50模型准确率提高了2%,且仅增加了微小的GFLOPs开销。
此外,在准确率方面,STEAM超过了领先的模块ECA和GCT,并实现了三倍的GFLOPs减少。
卷积神经网络(CNNs)由于其强大的表示能力,在视觉任务中取得了显著的进步。然而,由于卷积操作仅在局部空间邻域内进行,为了捕获较大的感受野,需要重复执行局部操作,这导致了计算和优化上的挑战。这一局限性推动了对通道和空间注意力机制的探索,以更好地捕捉这些依赖关系。空间Transformer网络利用自适应机制来增强空间依赖性,而 NLNet 则使用非局部运算符来捕获长距离依赖关系。SENet 采用带有 Bottleneck 多层感知器(MLPs)的自适应重校准特征图方法来捕获通道注意力。BAM 和CBAM 则关注将通道和空间注意力相结合,以提高依赖关系的捕获能力。
SE块在SENet中用于捕捉通道间的交互以实现高效的注意力机制,但显著增加了参数数量。此外,全连接层中的维度降低无法捕获直接依赖关系,正如ECA(Wang等,2020)所指出的那样。这一问题同样影响了诸如CBAM(Woo等,2018)和GE(Hu等,2018)等方法,这些方法采用类似SE的维度降低技术来建模通道注意力。GCT(Ruan等,2021)采用了非参数策略,而SRM(Lee, Kim, 和 Nam, 2019)和MCA(Jiang等, 2024)则利用基于矩的技术丰富特征上下文并增强通道注意力。
通过评估这些研究,作者发现许多方法显著增加了参数数量以提升性能,而其他方法则侧重于通过仅集中于通道注意力来减少参数量,详见表1。相比之下,作者的方法采用图关系建模技术,有效捕捉了通道和空间注意力,实现了性能与计算效率之间的平衡。从通道的角度来看,每个通道可以被视为一个节点,其对应的全局空间映射信息作为特征向量;从空间的角度来看,每个空间单元,包括位置和交互细节,可以被视为一个节点,其属性为所有通道中的全局信息。因此,通道和空间注意力可以建模为图注意力机制,作者分别称之为ChannelInteractionAttention(CIA)和SpatialInteractionAttention(SIA)。作者引入了一种新的输出导向池化(OGP),以高效地捕获空间上下文,从而增强作者的SIA。作者将结合CIA和SIA的方法命名为STEAM:Squeeze and Transform Enhanced Attention Module。
如表1所示,STEAM在参数高效的方式下既利用了通道注意力又利用了空间注意力,没有引入维度减少。此外,STEAM可以无缝集成到各种网络架构中,包括ResNets 以及轻量级模型ShuffleNet(Zhang等,2018)和ShuffleNet-V2。
本研究的主要贡献可以概括如下:
(1) 作者通过定义通道图和空间图,采用图形方法开发了通道和空间注意力机制,旨在实现高效的表示学习。
(2) 受图Transformer的启发,作者使用多头注意力机制捕捉通道和空间图内的各种关系,并引入了输出引导池化以实现最优的空间注意力建模。
(3) 作者开发了一个与所集成的主干网络无关的常数参数模块。
(4) 在ImageNet上进行了大规模图像分类实验,在MS COCO数据集上进行了目标检测和实例分割实验。实验结果显示,STEAM在参数和计算量几乎无增加的情况下,显著优于当前最先进的(SOTA)模块,展示了其在参数效率和计算效率方面的优势。例如,将STEAM与ResNet-50集成后,仅增加了320个参数和3.57e-3 GFLOPs,使得Top-1精度提高了2%。
注意力机制。注意力机制增强了深层卷积神经网络(CNN),已经在通道、空间以及结合通道和空间的注意力方面得到了广泛探索。引入了空间注意力函数,用于编码网络关注用于决策的输入区域。SENet(Hu, Shen 和 Sun 2018)通过挤压和激励操作重新校准特征图来建模通道注意力。(Roy, Navab 和 Wachinger 2018)通过将三种不同版本的SE模块与CNN结合,实现了一致的分割增益。GE(Hu 等人 2018)使用一对聚集-激励算子来聚合上下文信息并调节特征图。GCT(Ruan 等人 2021)利用高斯函数激励全局上下文,从而消除了参数化上下文特征变换的需求。GSoP(Gao 等人 2019)采用全局二次池化进行整体图像表示,SRM(Lee, Kim 和 Nam 2019)利用样式池化,而MCA(Jiang 等人 2024)结合多个矩与交叉矩卷积以增强通道注意力。残差注意力网络(Wang 等人 2017)通过计算鲁棒的三维注意力图来增强特征图并提高噪声抗性。CBAM(Woo 等人 2018)在此基础上,独立建模并顺序结合通道和空间注意力机制。ECA-Net(Wang 等人 2020)使用一维卷积捕捉局部跨通道交互,解决维度降低问题。SGE(Li 等人 2019)和SANet(Zhang 和 Yang 2021)等方法利用类似ShuffleNet(Zhang 等人 2018)和ShuffleNet-V2(Ma 等人 2018)的多分支架构设计整合注意力机制。NLNet(Wang 等人 2018)通过全局交互应用非局部操作来捕捉长距离依赖关系,类似于Self-Attention机制。GCNet(Cao 等人 2019)将非局部和SE块统一到一个全局上下文(GC)块中以增强上下文建模。A2-Net(Chen 等人 2018)通过应用普遍的聚集和分布机制捕获长范围特征互依性。
图神经网络(GNNs)。GNNs 使用消息传递方法建模复杂图形数据(Gilmer等人,2017)。该领域的进展包括GCN 、GAT(Velickovic等人,2017)以及GraphSAGE(Hamilton等人,2017),它们各自采用了独特的聚合技术。正如(Battaglia等人,2018)所解释的,GNNs中的关系归纳偏置使得它们比MLPs更适合处理图形数据。GNNs中的注意力机制引起了广泛关注:Brody等人(2021)通过动态注意力改进了GAT,Dwivedi和Bresson(2020)引入了具有位置编码的Graph Transformers,并且像SAN(Kreuzer等人,2021)和GPS(Rampasek等人,2022)这样的模型增强了位置和结构编码。GNNs在视觉应用方面的研究已在(Jiao等人,2022)中进行了综述。Vision GNN(Han等人,2022)利用类似于ViT(Dosovitskiy等人,2020)的方法,其中每个图像patches被视为一个图节点并与其最近邻相连。Aflalo等人(2023)使用图谱聚类进行无监督图像分割。
本节详细解释了作者的通道和空间交互注意力机制(CIA和SIA)。作者还描述了如何使用这些机制构建提出的方法STEAM,并在图1中给出了示意性图示。
基于ECA的研究成果,作者摒弃了SENet、CBAM和GE中使用的维度降低策略,选择直接进行跨通道注意力建模。给定中间特征图
,作者将每个通道视为一个节点,其空间映射
作为其特征向量。作者使用节点特征计算得到的通道间相关矩阵
来推导相关图。然而,随着CNN网络深度增加,通道数量呈指数增长,导致形成大规模且稠密的图,增加了计算负担。构建此类图需要多层GNN来扩大感受野范围。但是,深层的GNN容易出现过度平滑化现象(Nt and Maehara 2019;Oono and Suzuki 2019),使得节点表示相似性极高,从而降低了性能。为了避免这类稠密图,作者尝试使用
-NN图,通过基于相似度得分选择前
个邻居来构建图,这种方法类似于LLE(Roweis and Saul 2000)中的做法,用于推理图结构。但由于作者的目标是建模通道的重要程度而非相似性,
-NN图效果不佳。此外,每张图像不同的相关矩阵会导致内存消耗过大,阻碍了图表示学习。
在ECA的1-D交叉通道卷积中, Kernel 大小定义了局部感受野,加权聚合对应于卷积操作。将这一类比推广到图的领域, Kernel 大小对应于节点的邻域,而卷积则被建模为在其邻域内的消息传递。受到这些关联的启发,作者设计了一个通道图
,其中每个通道与其直接的1跳邻居相连。此外,第一个通道与最后一个通道相连,形成了一个循环图(如图1所示)。
因此,
表示作者的通道图,包含
个节点和边,其中
和
分别表示顶点集和边集。
表示通过全局平均池化(GAP)获得的初始节点(通道)特征,这是一种映射
。给定通道图及其关联的节点特征,现在可以有效使用图注意力机制来建模通道注意力。通过在传统自注意力(Bahdanau, Cho 和 Bengio 2014)基础上使用标度点积注意力(Vaswani 等人 2017),并在 GAT(Velickovic 等人 2017)中实现,已被实验证明更为有效。作者将这一整个机制命名为通道交互注意力(CIA),其计算方法如下(Vaswani 等人 2017):
在这里,
(
)是可学习的投影矩阵,其中
指定了键向量和 Query 向量的维度,
表示模型的隐藏维度。
表示第
个头(总共有
个头)中节点
与其邻居
之间的注意力分数,
表示节点
的邻域。最终的注意力矩阵
是通过对所有
个头的注意力分数进行平均计算得到的。每个通道的更新表示由
表示,并进一步通过Sigmoid激活函数
生成通道分数
。在元素级乘法(图1和公式3中用
表示)中,
在空间维度上广播以获得修改后的中间特征图
。
(Zagoruyko 和 Komodakis 2016) 强调空间注意力对于编码影响网络输出决策的关键空间区域至关重要。他们提出了一种基于通道统计的空间注意力映射函数 (SAMF),该函数可以将
映射到
。网络早期层的神经元对低级梯度有强烈激活,中间层对独特的特征有强激活,而顶层则关注整体目标。此外,(Islam, Jia, 和 Bruce 2020) 指出 CNN 自然能够提取位置信息,早期层捕获细部特征,而深层则更关注类别特定的特征。CNN 内在的位置和空间上下文促使作者使用图神经网络 (GNN) 来建模空间注意力,因为 GNN 能够有效捕捉位置和关系信息。因此,作者利用 SAMF 获取的空间注意力图构建初始的空间图,并在每个阶段创建
个节点。
CBAM的空间注意力模块遵循SAMF,并采用1步卷积生成像素 Level 的空间得分,结合了通道上的平均池化和最大池化。然而,它增加了额外的计算量以捕捉更细的细节,从而在早期阶段引入了冗余。为了有效利用高效计算来封装空间上下文,作者提出了输出引导池化(Output Guided Pooling, OGP)。OGP通过在通道维度上使用全局平均池化(Global Average Pooling, GAP)将中间特征图
转换为固定大小的空间图
,其中
对应最深的空间图的维度(例如,对于ResNets,
为7×7)。这个固定大小的空间图确保了多层之间的连贯性:在更深的层中,它捕获像素 Level 的细节;而在较浅的层中,它提供高层次的空间信息。作者现在使用固定大小的空间图
构建一个精炼的空间图
(如图2所示)。该图由
个节点组成,每个节点连接其相邻邻居:中心节点有四个连接,边缘节点有三个,角落节点有两个,结果共有
条边。
表示初始空间节点特征,通过在作者的CIA模块得到的
上应用OGP获得。类似于CIA,作者利用多头比例点积图注意力机制,在固定大小的空间图中的像素之间进行消息传递建模空间注意力。这一过程包括在所有头中平均注意力得分、更新节点表示并应用Sigmoid激活函数以获得初始空间得分
,然后通过torch.repeat-interleave()上采样(式6)生成最终的空间得分
。修改式1、2和3,作者得到:
STEAM的最终输出
表示,其他符号保持一致。作者注意到,在作者细化的空间映射中,中心子矩阵
包含多个度数统一为4的节点。这可能导致过度平滑,因为在这些高度互联的节点之间的消息传递可能会导致几乎相同节点表示,从而降低性能。为解决这一问题,作者在模型训练过程中引入了一种有效的边删除技术,在该中心子矩阵内的每个节点处随机删除一条边。附录表5中的实证消融实验表明,这种边删除技术可以提升模型性能。作者将整个机制命名为空间交互注意力(SIA)。
在本节中,作者介绍最终的架构。传统的通道注意力机制利用空间表示图,而空间注意力机制则借助全局通道信息,凸显了两者之间的相互依赖关系。基于这一认识,作者将作者的CIA和SIA模块相结合,同时增强通道和空间建模。从消融研究(表2)的实验结果来看,序列排列方式优于并行排列方式,且通道优先顺序的效果略好于空间优先顺序。在作者的实验中,作者将STEAM模块与ResNet和ShuffleNetV2 Backbone 网络结合。在ResNet(阶段[c2, c3, c4, c5])中,作者最初在每个残差连接前插入STEAM模块。对于ShuffleNet-V2(阶段[c2, c3, c4]),作者按照作者在(Ma等,2018年)附录中所述,在每个通道混洗操作前插入STEAM模块。经过广泛的消融研究,作者提出了一种适应性方法(详见消融研究部分)来确定各阶段的STEAM单元数量,结果如下:ResNet-18使用[1, 1, 1, 1];ResNet-50使用[1, 1, 2, 1];ResNet-101使用[1, 1, 6, 1];ShuffleNet-V2使用[1, 2, 1]。每个阶段结束后添加STEAM单元,并在必要时均匀分布在该阶段内。这种适应性配置,由实验结果指导,实现了最优效果。
在本节中,作者探讨了STEAM的参数和计算复杂度。CIA和SIA所需参数与通道数和空间元素数量无关,因为作者的注意力建模依赖于特征向量表示,在给定隐藏模型维度
的情况下保持一致。每个CIA和SIA贡献
个参数(由于键和 Query 操作各自贡献
个权重和偏差)。因此,一个单个的STEAM单元引入了
个
参数。其中,
表示模型中的总阶段数,
表示第
个阶段中的块数。在作者的实验中,通常使用
。因此,将所有STEAM单元集成到ResNet-50中会增加
个参数。
在本节中,作者使用ImageNet( Deng等,2009)进行大规模图像分类实验,并使用MS COCO( Lin等,2014)进行目标检测和实例分割实验,来评估STEAM。作者将SE、CBAM、ECA、GCT和
等领先的SOTA模块在相同的架构、数据增强和优化参数下进行了重新实现,以便公平比较。所有实验均使用PyTorch框架( Paszke等,2019)和MMDetection工具包( Chen等,2019)进行。表2-5中的粗体值表示最佳性能。
为了评估STEAM在ImageNet上的性能,作者使用四种知名的CNN主干网络进行评估:ResNet18、ResNet-50、ResNet-101和ShuffleNet-V2(带1x缩放因子)。所有模型均在4块Nvidia RTX 4090 GPU上训练,批量大小为256(每块GPU64张图像)。作者在所有模型上应用相同的训练程序,包括随机裁剪至
的尺寸以及随机水平翻转。作者使用具有动量0.9和权重衰减1e-4的随机梯度下降(SGD)优化器。所有模型均训练了100个epoch,初始学习率为0.1,在第30、60和90个epoch时分别降低10倍。在对模型进行验证集评估时,作者首先将输入图像调整至
大小,然后进行中心裁剪至
。作者报告Top-1和Top-5精度、参数量和GFLOPs来评估存储和计算效率。
此外,作者在MS COCO数据集上测试了模型在目标检测和实例分割中的效率,使用了Faster R-CNN(Ren等,2015),Mask R-CNN(He等,2017),以及RetinaNet(Lin等,2017b)检测器,采用ResNet-50和ResNet-101作为 Backbone 网络,并结合了特征金字塔网络(FPN,Lin等,2017a)。所有模型均初始化为从ImageNet分类任务中获得的权重,并在4块Nvidia RTX 4090 GPU上使用MMDetection工具包进行训练,每批次大小为8(每块GPU两张图像)。预处理步骤包括将较短边调整至800,同时限制较长边的最大尺寸为1333,随机翻转和归一化输入图像。优化器采用动量为0.9、权重衰减为1e-4的SGD。初始学习率为0.02,在第8轮和第11轮分别下降一个数量级,总共训练12轮。作者报告了平均精度(AP)、
、
、
、
、
,以及参数数量和GFLOPs以评估存储和计算效率。请注意:如作者在方法论中所述,作者在所有实验中将在ResNet和ShuffleNet-V2模型中引入STEAM时采用相同的自适应策略,除非另有说明。然而,作者在ResNet的每个残差连接之后以及ShuffleNet-V2的每次通道混排操作之前引入SE、CBAM、ECA、GCT和MCA模块。
作者进行了广泛的消融研究,以证明STEAM设计选择的有效性。这些消融研究采用ResNet-50与STEAM结合,对ImageNet数据集进行图像分类。表2展示了三项消融实验的结果:第一个实验评估了CIA和SIA模块的排列方式,第二个实验确定了CIA合适的邻域大小,第三个实验考察了在深层CNN中STEAM单元的最佳布局和数量。这些消融实验分别 Token 为Ablation-a、Ablation-b和Ablation-c。
CIA和SIA模块的排列方式 在这里,作者进行了三项实验以确定CIA和SIA模块的最佳排列顺序。作者采用了一种并行排列CIA和SIA模块的方式(表示为
),以及两种序列排列方式:CIA优先(表示为“ca-sa”)和SIA优先(表示为“sa-ca”),来评估不同模块排列方式的影响。从表2可以看出,序列排列优于并行排列,并且在序列排列中,CIA优先的顺序略微优于SIA优先的顺序。
选择邻域大小以优化通道图的性能对于作者的信道图 (G_c) ,作者尝试了两种不同的节点邻域大小。首先,作者将每个信道节点与其直接的1跳邻居相连,使得每个节点有2个邻居。接着作者将邻域扩展到4跳,通过连接每个节点与其前两个和后两个节点(类似于当卷积核大小为5时的ECA)。注意,在这两种情况下,都会形成一个循环的图结构,每个节点的度要么是2,要么是4。如表2所示,将每个信道节点的度设置为2相比于度为4能够获得更好的性能。
在深度CNN中采用STEAM的排列方式受当前SOTA架构的启发,作者最初在ResNet-50的每一阶段内的每一个块之后加入了STEAM,ResNet-50包含分别在[c2, c3, c4, c5]阶段中的[3, 4, 6, 3]个块,这导致了总共16个STEAM单元。然而,实证研究表明这种方法产生了次优性能。按照(Srinivas等,2021)所述的方法,在ResNet-50的最后一阶段仅添加了STEAM,将其减少到3个STEAM单元。此外,作者还测试了在每个阶段之后添加单一的STEAM单元。如表2所示,在每个阶段之后添加STEAM相较于仅在最后一阶段添加STEAM获得了更好的效果。因此,作者采用了一种动态策略来根据每个阶段中的块数确定最优的STEAM单元数量。形式上,每个阶段的STEAM单元数量由
给出,其中
表示该阶段的块数。特别是对于ResNet-50,每个阶段的STEAM单元数量为[1, 1, 2, 1]。
本节展示了作者模型与其他SOTA模型的对比。作者选择了四种流行的Backbone模型,即ResNet-18、ResNet-50、ResNet-101和ShuffleNet-V2。实验结果详见表3。
ResNet 作者最初使用 ResNet-18、ResNet-50 和 ResNet-101 作为 Backbone 网络来评估 STEAM 的性能。表3 显而易见地表明,STEAM 在各种 ResNet 模型中都超过了所有其他模块。特别地,在 ResNet-18 中,STEAM 在 Top-1 准确率上比 GCT 高出 0.30%,而 GCT 已经优于其他模块。对于 ResNet-50 和 ResNet-101,STEAM 分别在 Top1 准确率上比前者的顶级模块 MCA 高出了 0.15% 和 0.21%。总体而言,与标准的 ResNet-18、ResNet-50 和 ResNet-101 模型相比,STEAM 分别提供了 1.61%、1.98% 和 1.67% 的准确率提升。
ShuffleNet-V2 作者在轻量级CNN架构上评估了STEAM,以ShuffleNet-V2作为主干网络。如表3所示,STEAM超越了所有其他模块,获得了相对于第二好的模块GCT的0.27% Top-1精度提升。总体而言,STEAM在维持相近的参数量和计算复杂度的同时,优于所有先前的SOTA模块。
作者在MS-COCO数据集上使用基于ResNet-50和ResNet-101的Faster-RCNN、Mask-RCNN和RetinaNet检测器进行了目标检测实验,并将作者的方法与SE、CBAM、ECA、GCT和MCA模块进行了比较。如表4所示,STEAM在目标检测方面始终优于这些最先进方法。
对于使用ResNet-50的Faster-RCNN,STEAM在AP上比 Baseline 提高了1.9%,分别比SE提高了1.2%,比CBAM提高了0.8%,比ECA提高了0.6%,比GCT提高了0.3%,比MCA提高了0.5%。使用ResNet-101时,STEAM在AP上的提高达到了2.0%,分别比SE提高了1.7%,比CBAM提高了1.5%,比ECA提高了0.9%,比GCT提高了0.2%,比MCA提高了0.8%。在以ResNet-50作为主干网络的Mask-RCNN实验中,STEAM分别比 Baseline 、SE、CBAM、ECA、GCT和MCA在AP上的提高分别为2.0%、1.3%、1.0%、0.8%、0.3%和0.7%。使用ResNet-101时,STEAM也超越了这些方法,分别在AP上取得了1.8%、1.7%、1.3%、0.9%、0.3%和0.5%的改进。在使用ResNet-50的RetinaNet实验中,STEAM分别比 Baseline 、SE、CBAM、ECA、GCT和MCA在AP上的提高分别为2.2%、1.9%、1.5%、1.2%、0.4%和1.0%。使用ResNet-101时,STEAM同样超过了这些方法,分别在AP上取得了1.6%、1.3%、1.1%、0.8%、0.4%和0.8%的改进。
最后,作者使用Mask-RCNN作为检测器,在MS-COCO数据集上进行了实例分割实验,并以ResNet-50和ResNet-101作为 Backbone 模型。如表5所示,作者提出的方法STEAM显著超过了当前最佳模块。具体来说,使用ResNet-50作为 Backbone 模型时,STEAM在AP指标上分别比SE、CBAM、ECA、GCT和MCA方法提高了1.6%、1.0%、0.9%、0.6%、0.4%和0.8%。
同样地,采用ResNet-101作为 Backbone 模型时,STEAM在AP性能上分别优于 Baseline 模型、SE、CBAM、ECA和MCA方法1.3%、0.9%、0.6%、0.2%和0.3%。值得注意的是,在这次实验中,GCT在AP指标上仅稍微超过STEAM 0.1%。总体而言,这些结果突显了作者提出的STEAM方法的有效性和泛化能力。
参考
[0]. STEAM: Squeeze and Transform Enhanced Attention Module .
点击上方卡片,关注
「AI视界引擎」
公众号