【即插即用】涨点神器AFF:注意力特征融合(已经开源,附论文和源码链接)

简介: 【即插即用】涨点神器AFF:注意力特征融合(已经开源,附论文和源码链接)

1、简介


特征融合是指来自不同层或分支的特征的组合,是现代网络体系结构中很常见的一种操作。它通常通过简单的操作(例如求和或串联)来实现,但这可能不是最佳选择。在本论文中提出了一个统一而通用的方案,即注意力特征融合,该方案适用于大多数常见场景,包括由short and long skip connections以及在Inception层内的特征融合。

为了更好地融合语义和尺度不一致的特征,提出也了一个多尺度的通道注意力模块,该模块解决了在融合不同尺度的特征时出现的问题。同时还通过添加另一个注意力级别(称为迭代注意力特征融合)来缓解特征图的初始集成的瓶颈。


2、相关工作


2.1、Multi-scale Attention Mechanism

深度学习中的注意机制模仿人类视觉注意机制,比如Squeeze-and-Excitation Networks (SENet)将全局空间信息压缩到通道描述中,以捕获与通道的依赖关系。近年来,研究者开始考虑注意机制的scale尺度问题:

  • 第1类:将多个尺度上的特征或它们连接的结果输入注意模块生成多尺度上的Faeture map,注意模块内上下文聚合的特征尺度要保持统一。
  • 第2类:也被称为多尺度空间注意,通过大小不同的卷积核或从注意模块内的金字塔聚集上下文的特征。

提出的MS-CAM遵循ParseNet的思想,结合局部和全局特征和空间注意的想法融合注意力模块内部的多尺度特征,在以下2个重要方面有所不同:

  • 1)、MS-CAM通过逐点卷积来关注通道的尺度问题,而不是大小不同的卷积核。
  • 2)、MS-CAM不是在主干网中,而是在通道注意力模块中局部本地和全局的特征上下文特征。

2.2、Skip Connections in Deep Learning

skip connection可以分为:Short SkipLong Skip

Short Skip:即在Res Block中添加的标识映射快捷方式,为反向传播期间梯度流提供了一种连续的替代路径;

Long Skip:通过连接较低层次的细节特征和较粗分辨率的高级语义特征,帮助网络获得高分辨率的语义特征。

最近,一些基于注意的方法,如全局注意Upsampe(GAU)和跳跃注意(SA),被提出使用高级特征作为引导来调节长跳跃连接中的低级特征。然而,调制特征的融合权重仍然是固定的。Highway Networks(高速公路网络)首次引入在跳连机制(skip connection)中引入选择机制(selection mechanism),而在某种程度上,注意力跳连接的提出可以被视为其后续,但是有3个不同点:

  • 1)、高速公路网络使用一个简单的完全连接层,只能生成一个标量融合权重,MSCAM通过dynamic soft选择元素的方式生成融合权重大小相同的特征图;
  • 2)、高速公路网络只使用一个输入特征来生成权重,而AFF模块同时感知这两个特征;
  • 3)、指出了初始特征集成的重要性,提出了iAFF模块作为解决方案;

3 本文方法---MS-CAM


3.1、Multi-Scale Channel Attention Module(MS-CAM)

其核心思想是通过改变空间池的大小,可以在多个尺度上实现通道关注。为了使其尽可能轻量化只在attention模块中将局部上下文添加到全局上下文中。选择逐点卷积(PWConv)作为通道上下文融合器,它只利用每个空间位置的点向通道融合。

class ResGlobLocaChaFuse(HybridBlock):
    def __init__(self, channels=64):
        super(ResGlobLocaChaFuse, self).__init__()
        with self.name_scope():
            self.local_att = nn.HybridSequential(prefix='local_att')
            self.local_att.add(nn.Conv2D(channels, kernel_size=1, strides=1, padding=0))
            self.local_att.add(nn.BatchNorm())
            self.global_att = nn.HybridSequential(prefix='global_att')
            self.global_att.add(nn.GlobalAvgPool2D())
            self.global_att.add(nn.Conv2D(channels, kernel_size=1, strides=1, padding=0))
            self.global_att.add(nn.BatchNorm())
            self.sig = nn.Activation('sigmoid')
    def hybrid_forward(self, F, x, residual):
        xa = x + residual
        xl = self.local_att(xa)
        xg = self.global_att(xa)
        xlg = F.broadcast_add(xl, xg)
        wei = self.sig(xlg)
        xo = 2 * F.broadcast_mul(x, wei) + 2 * F.broadcast_mul(residual, 1-wei)
        return xo


4. 模块


4.1、AFF模块

基于多尺度信道的注意模块M,Attentional Feature Fusion (AFF) 可以被表达为:

class AXYforXplusYAddFuse(HybridBlock):
    def __init__(self, channels=64):
        super(AXYforXplusYAddFuse, self).__init__()
        with self.name_scope():
            self.local_att = nn.HybridSequential(prefix='local_att')
            self.local_att.add(nn.Conv2D(channels, kernel_size=1, strides=1, padding=0))
            self.local_att.add(nn.BatchNorm())
            self.global_att = nn.HybridSequential(prefix='global_att')
            self.global_att.add(nn.GlobalAvgPool2D())
            self.global_att.add(nn.Conv2D(channels, kernel_size=1, strides=1, padding=0))
            self.global_att.add(nn.BatchNorm())
            self.sig = nn.Activation('sigmoid')
    def hybrid_forward(self, F, x, residual):
        xi = x + residual
        xl = self.local_att(xi)
        xg = self.global_att(xi)
        xlg = F.broadcast_add(xl, xg)
        wei = self.sig(xlg)
        xo = F.broadcast_mul(wei, residual) + x
        return xo

4.2、iAFF模块

完全上下文感知方法有一个不可避免的问题,即如何初始地集成输入特性。初始融合质量作为注意力模块的输入会对最终融合权重产生影响。由于这仍然是一个特征融合问题,一种直观的方法是使用另一个attention模块来融合输入的特征,即iterative Attentional Feature Fusion (iAFF):

class AXYforXYAddFuse(HybridBlock):
    def __init__(self, channels=64):
        super(AXYforXYAddFuse, self).__init__()
        with self.name_scope():
            self.local_att = nn.HybridSequential(prefix='local_att')
            self.local_att.add(nn.Conv2D(channels, kernel_size=1, strides=1, padding=0))
            self.local_att.add(nn.BatchNorm())
            self.global_att = nn.HybridSequential(prefix='global_att')
            self.global_att.add(nn.GlobalAvgPool2D())
            self.global_att.add(nn.Conv2D(channels, kernel_size=1, strides=1, padding=0))
            self.global_att.add(nn.BatchNorm())
            self.sig = nn.Activation('sigmoid')
    def hybrid_forward(self, F, x, residual):
        xi = x + residual
        xl = self.local_att(xi)
        xg = self.global_att(xi)
        xlg = F.broadcast_add(xl, xg)
        wei = self.sig(xlg)
        xo = F.broadcast_mul(wei, xi)
        return xo


5 实验和可视化结果


以下是作者根据现存的模型设计的部分模块以进行实验和对比:

通过下面的表格可以看出本文所提方法的效果:

以下是基于Cifar100进行的实验:

以下是基于ImageNet进行的实验:

以下是Heatmap的输出图,可以看出该方法的注意力的聚焦更加的集中和突出重点:

相关文章
|
机器学习/深度学习 人工智能 自然语言处理
视觉 注意力机制——通道注意力、空间注意力、自注意力
本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。
15575 58
|
机器学习/深度学习 人工智能 数据可视化
ShuffleNet:极致轻量化卷积神经网络(分组卷积+通道重排)
我们引入了一个高效计算的CNN结构名字叫做shuffleNet,这个结构被设计用来解决部署算力非常有限的移动设备问题,这个新的结构使用了两个新的操作,pointwise group convolution 和 channel shuffle能够在极大减少计算量的同时保持一定的精度。我们在ImageNet classification和MS COCO目标检测数据集上做实验论证了ShuffleNet和其他的结构相比有着很好的性能。比如,相比于mobilenet,shufflenet在ImageNet 分类任务上有着更低的top-1错误率(错误率是7.8%)需要的计算量为40MFLOPs。在一个AR
4040 0
ShuffleNet:极致轻量化卷积神经网络(分组卷积+通道重排)
|
机器学习/深度学习
YOLOv8改进 | 细节创新篇 | iAFF迭代注意力特征融合助力多目标细节涨点
YOLOv8改进 | 细节创新篇 | iAFF迭代注意力特征融合助力多目标细节涨点
1168 0
|
机器学习/深度学习 数据可视化 测试技术
YOLO11实战:新颖的多尺度卷积注意力(MSCA)加在网络不同位置的涨点情况 | 创新点如何在自己数据集上高效涨点,解决不涨点掉点等问题
本文探讨了创新点在自定义数据集上表现不稳定的问题,分析了不同数据集和网络位置对创新效果的影响。通过在YOLO11的不同位置引入MSCAAttention模块,展示了三种不同的改进方案及其效果。实验结果显示,改进方案在mAP50指标上分别提升了至0.788、0.792和0.775。建议多尝试不同配置,找到最适合特定数据集的解决方案。
4010 0
|
机器学习/深度学习 编解码 计算机视觉
YOLOv11改进策略【Head】| ASFF 自适应空间特征融合模块,改进检测头Detect_ASFF
YOLOv11改进策略【Head】| ASFF 自适应空间特征融合模块,改进检测头Detect_ASFF
2362 13
YOLOv11改进策略【Head】| ASFF 自适应空间特征融合模块,改进检测头Detect_ASFF
|
机器学习/深度学习 C语言 计算机视觉
YOLOv11改进策略【Neck】| HS-FPN:高级筛选特征融合金字塔,加强细微特征的检测
YOLOv11改进策略【Neck】| HS-FPN:高级筛选特征融合金字塔,加强细微特征的检测
1333 11
YOLOv11改进策略【Neck】| HS-FPN:高级筛选特征融合金字塔,加强细微特征的检测
|
机器学习/深度学习 存储 TensorFlow
YOLOv11改进策略【Head】| (独家改进)轻量化检测头:利用 EfficientNet 中的移动倒置瓶颈模块 MBConv 改进检测头
YOLOv11改进策略【Head】| (独家改进)轻量化检测头:利用 EfficientNet 中的移动倒置瓶颈模块 MBConv 改进检测头
3168 11
YOLOv11改进策略【Head】| (独家改进)轻量化检测头:利用 EfficientNet 中的移动倒置瓶颈模块 MBConv 改进检测头
|
计算机视觉
YOLOv11改进策略【SPPF】| AIFI : 基于Transformer的尺度内特征交互,在降低计算成本的同时提高模型的性能
本文探讨了基于AIFI模块的YOLOv11目标检测改进方法。AIFI是RT-DETR中高效混合编码器的一部分,通过在S5特征层上应用单尺度Transformer编码器,减少计算成本并增强概念实体间的联系,从而提升对象定位和识别效果。实验表明,AIFI使模型延迟降低35%,准确性提高0.4%。
1719 20
YOLOv11改进策略【SPPF】| AIFI : 基于Transformer的尺度内特征交互,在降低计算成本的同时提高模型的性能
|
机器学习/深度学习
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
本文探讨了深度可分离卷积和空间可分离卷积,通过代码示例展示了它们在降低计算复杂性和提高效率方面的优势。
3510 2
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
|
机器学习/深度学习 计算机视觉 Python
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力本文提出了一种简单且高效的卷积神经网络(ConvNets)注意力模块——SimAM。与现有模块不同,SimAM通过优化能量函数推断特征图的3D注意力权重,无需添加额外参数。SimAM基于空间抑制理论设计,通过简单的解决方案实现高效计算,提升卷积神经网络的表征能力。代码已在Pytorch-SimAM开源。
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力