原理其实很简单,但是论文作者说得很抽象,时间紧的建议直接看3.1中原理简述CBMA、原理简述CBMA以及3.2中原理简述coordinate attention block即可。
最近关于mobile network设计的研究已经证明了通道注意(例如,the Squeeze-and-Excitation attention)对于提高模型性能的显着有效性,但它们通常忽略了位置信息,而位置信息对于生成空间选择性注意图非常重要。在本文中,我们提出了一种新的移动网络注意机制,将位置信息嵌入到通道注意中,我们称之为“坐标注意(coordinate attention)”。与通过二维全局池化将特征张量转换为单个特征向量的通道注意不同,坐标注意将通道注意分解为两个一维特征编码过程,分别沿着两个空间方向聚合特征。这样可以在一个空间方向上捕获远程依赖关系,同时在另一个空间方向上保持精确的位置信息。然后将得到的特征图分别编码为一对方向感知和位置敏感的注意图,它们可以互补地应用于输入特征图,以增强感兴趣对象的表示。
注意力机制用于告诉模型“参加什么”和“去哪里”(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。
注意力机制已被证明有助于各种计算机视觉任务,如图像分类和图像分割。
SENet是一个成功的例子,它简单地挤压每个2D特征图,以有效地建立通道之间的相互依赖关系。
CBAM通过引入具有大尺寸核的卷积的空间信息编码进一步推进了这一想法。后来的研究如GENet、GALA、AA和TA通过采用不同的空间注意机制或设计高级注意块扩展了这一思想。
非本地/自注意网络由于其建立空间或渠道性注意的能力而非常受欢迎。典型的例子包括NLNet、GCNet、A2Net、SCNet、gsp - net或CCNet,它们都利用非局部机制捕获不同类型的空间信息。然而,由于自关注模块内部的计算量很大,因此他们通常在大型模型中采用,而不适用于移动网络。
与这些利用昂贵且沉重的非本地或自关注块的方法不同,我们的方法考虑了一种更有效的方法来捕获位置信息和通道智能关系,以增强移动网络的特征表示。通过将2D全局池化操作分解为两个一维编码过程,我们的方法比其他具有轻量级属性的注意力方法(例如SENet, CBAM和TA)表现得更好。
总的来说,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博客
CBAM(Convolutional Block Attention Module)是轻量级的卷积注意力模块,它结合了通道和空间的注意力机制模块。
CBAM包含CAM(Channel Attention Module)和SAM(Spartial Attention Module)两个子模块,分别进行通道和空间上的Attention。
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的大小。
将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通道的挤压步长可表示为:
其中是与第c个通道相关的输出。输入X直接来自具有固定核大小的卷积层,因此可以看作是局部描述符的集合。挤压操作使得收集全局信息成为可能。
第二步,激励,旨在完全捕获通道相关关系,可以表示为
其中,·为通道方向乘法,σ为sigmoid函数,为变换函数生成的结果,其表达式如下:
这里,T1和T2是两个线性变换,可以通过学习来捕捉每个通道的重要性。
SE模块已广泛应用于最近的移动网络,并被证明是实现最先进性能的关键组件。然而,它只考虑通过建模通道关系来重新权衡每个通道的重要性,而忽略了位置信息,正如我们将在第4节中通过实验证明的那样,位置信息对于生成空间选择性注意图是重要的。
concat拼接,通过卷积来使得C × H × 1和C × 1 × W,即横向与列向的特征建立关系(而CBMA中7×7 Conv是关注局部的横向与列向的特征)。
之后又split分开(是先让横向与列向的特征两者建立完关系之后再分开),再进行Sigmoid归一化。
最后与C × H × W作乘法,即给每个通道上的每个像素点授予权重值。
我们通过坐标信息嵌入和坐标注意生成两个步骤,对通道关系和远程依赖进行精确的位置信息编码。所提出的坐标注意块示意图如图2的右侧所示。
全局池化通常用于通道注意的全局空间信息编码,但它将全局空间信息压缩到通道描述符中,难以保留位置信息,而这对于视觉任务中空间结构的捕获至关重要。为了鼓励注意块在空间上用精确的位置信息捕获远程交互,我们将全局池化分解为Eqn中所表述的。
具体来说,给定输入X,我们使用池化核的两个空间范围(H,1)或(1,W)分别沿横坐标和纵坐标对每个通道进行编码。因此,c-th通道在高度h处的输出可以表示为
类似地,宽度为w的第c通道的输出可以写成
上述两种变换分别沿着两个空间方向聚合特征,产生一对方向感知特征映射。在产生单个特征向量的通道关注方法中,这与挤压操作(Eqn)相当不同。这两种转换还允许我们的注意力块沿着一个空间方向捕获远程依赖关系,并沿着另一个空间方向保留精确的位置信息,这有助于网络更准确地定位感兴趣的对象。
为了利用全局接受野并编码精确的位置信息,我们提出了第二种转换,称为坐标注意力生成。我们的设计参考了以下三个标准。首先,对于移动环境中的应用程序,新的转换应该尽可能简单和廉价。其次,它可以充分利用捕获的位置信息,从而准确地突出显示感兴趣的区域。最后但并非最不重要的是,它还应该能够有效地捕捉渠道间关系,这在现有研究中已被证明是必不可少的。
具体来说,给定由公式4和公式5生成的聚合特征映射,我们首先将它们连接起来,然后将它们发送到共享的1 × 1卷积变换函数F1,得到
在[·;·]表示沿空间维度的拼接操作,δ为非线性激活函数,为水平方向和垂直方向编码空间信息的中间特征图。这里,r是在SE块中控制块大小的缩减比。然后我们沿着空间维度把f分成两个张量。利用另外两个1 × 1卷积变换Fh和Fw分别将f h和f w变换为与输入X具有相同通道号的张量,得到
回想一下σ是sigmoid型函数。为了减少开销模型的复杂性,我们经常以适当的减少比率r(例如,32)来减少f的通道数。我们将在实验部分讨论不同的还原比对性能的影响。然后将输出gh和g w分别展开并用作注意力权重。最后,我们的坐标注意块Y的输出可以写成
讨论:不同于通道注意只关注于重新权衡不同通道的重要性,我们的坐标注意块还考虑了空间信息的编码。如上所述,水平方向和垂直方向的注意力同时被施加到输入张量上。两个注意图中的每个元素反映了感兴趣的对象是否存在于相应的行和列中。这个编码过程可以让我们的坐标注意力更准确地定位感兴趣对象的确切位置,从而帮助整个模型更好地识别。我们将在实验部分详细地演示这一点。
由于本文的目标是研究一种更好的方法来增强移动网络的卷积特征,在这里,我们以两种具有不同类型残差块的经典轻量级架构(即MobileNetV2[34]和MobileNeXt[49])为例来展示所提出的坐标注意块相对于其他著名的轻量级注意力块的优势。图3显示了我们如何将注意力块插入MobileNetV2中的反向残余块和MobileNeXt中的沙漏块。
表1。不同实验设置下所提出的坐标注意的结果比较。这里,r是减少比,基线结果是基于MobileNetV2模型。可以看出,添加水平(X)注意或垂直(Y)注意的模型与添加SE注意的模型具有相同的性能。然而,当考虑到水平和垂直注意力(坐标注意力)时,我们的方法产生了最好的结果。延迟是在谷歌Pixel 4设备上测试的。
表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博客
common.py
yolo.py
yolov5s_Coordinate_attention.yaml
源码实现.txt