【YOLOv8改进 - 注意力机制】S2Attention : 整合空间位移和分割注意力

简介: YOLOv8专栏探讨了MLP主干网络的创新,如S2-MLPv2,它通过通道扩展和分块空间移位提高性能,达到83.6%的ImageNet top-1准确率。文章介绍了分割注意力模块,用于融合特征图。提供了S2Attention类的代码示例,展示如何结合空间位移和分割注意力。详细内容和实战案例可在[CSDN博客](https://blog.csdn.net/shangyanaf)找到。

YOLOv8目标检测创新改进与实战案例专栏

专栏目录: YOLOv8有效改进系列及项目实战目录 包含卷积,主干 注意力,检测头等创新机制 以及 各种目标检测分割项目实战案例

专栏链接: YOLOv8基础解析+创新改进+实战案例

介绍

image-20240716171111387

摘要

最近,基于MLP的视觉骨干网络开始出现。与CNN和视觉Transformer相比,具有较少归纳偏差的MLP架构在图像识别中表现出竞争力。其中,采用直接空间移位操作的空间移位MLP(S2-MLP)比包括MLP-mixer和ResMLP在内的早期工作取得了更好的性能。最近,使用较小的补丁和金字塔结构,Vision Permutator(ViP)和Global Filter Network(GFNet)在性能上超过了S2-MLP。本文中,我们改进了S2-MLP视觉骨干网络。我们在通道维度上扩展特征图,并将扩展后的特征图分成若干部分,对分割部分进行不同的空间移位操作。同时,我们利用分割注意力操作融合这些分割部分。此外,类似于其他方法,我们采用了较小尺度的补丁并使用金字塔结构来提升图像识别的准确性。我们将改进后的空间移位MLP视觉骨干网络称为S2-MLPv2。使用55M参数,我们的中型模型S2-MLPv2-Medium在ImageNet-1K基准测试中使用224 × 224的图像,在没有自注意力和外部训练数据的情况下实现了83.6%的top-1准确率。

文章链接

论文地址:论文地址

代码地址:代码地址

基本原理

分割注意力模块概述

分割注意力(Split Attention)模块旨在融合来自不同操作的多个特征图。这个模块在ResNeSt网络中首次提出,并被Vision Permutator等模型采用,用于增强特征图的表现能力。

具体实现步骤

  1. 特征图的平均计算

    • 假设有 $k$ 个大小为 $n \times c$ 的特征图$[X_1, X_2, \cdots, X_K]$,其中$(n$) 是patches的数量, $c$ 是通道数。
    • 首先,计算这些特征图的平均值:
      $$ a = \sum_{k=1}^{K} 1X_k $$
      其中, $1 \in \mathbb{R}^n$ 是一个全1的行向量。
  2. 通过MLP生成注意力权重

    • 计算得到的平均值 (a) 会经过一系列的MLP层生成注意力权重:
      $$ \hat{a} = \sigma(aW_1)W_2 $$
      其中,$\sigma$ 是GELU激活函数,$$W_1 \in \mathbb{R}^{c \times \bar{c}}\) 和 \(W_2 \in \mathbb{R}^{\bar{c} \times Kc}$$ 是MLP层的权重矩阵,$\hat{a} \in \mathbb{R}^{Kc}$ 是输出。
  3. 计算注意力矩阵

    • 输出 (\hat{a}) 会被重塑为矩阵 (\hat{A} \in \mathbb{R}^{K \times c}),然后通过softmax函数计算得到注意力矩阵:
      $$ \bar{A} = \text{softmax}(\hat{A}) $$
      其中,(\bar{A} \in \mathbb{R}^{K \times c})。
  4. 生成注意力特征图

    • 通过将每个特征图与注意力矩阵进行逐元素乘法,生成加权后的特征图 (\hat{X}):
      $$ \hat{X}[i, :] = \sum_{k=1}^{K} X_k[i, :] \odot \bar{A}[k, :] $$
      其中,(\odot) 表示逐元素乘法。

yolov8代码

class S2Attention(nn.Module):
    # S2注意力模块,整合空间位移和分割注意力
    def __init__(self, channels=512):
        super().__init__()
        # 定义MLP层
        self.mlp1 = nn.Linear(channels, channels * 3)
        self.mlp2 = nn.Linear(channels, channels)
        self.split_attention = SplitAttention()

    def forward(self, x):
        b, c, w, h = x.size()
        x = x.permute(0, 2, 3, 1)  # 调整维度顺序
        x = self.mlp1(x)  # 通过MLP层扩展特征
        x1 = spatial_shift1(x[:, :, :, :c])  # 应用第一种空间位移
        x2 = spatial_shift2(x[:, :, :, c:c * 2])  # 应用第二种空间位移
        x3 = x[:, :, :, c * 2:]  # 保留原始特征的一部分
        x_all = torch.stack([x1, x2, x3], 1)  # 堆叠特征
        a = self.split_attention(x_all)  # 应用分割注意力
        x = self.mlp2(a)  # 通过另一个MLP层缩减特征维度
        x = x.permute(0, 3, 1, 2)  # 调整维度顺序回原始
        return x

task与yaml配置

详见: https://blog.csdn.net/shangyanaf/article/details/140472196

相关文章
|
6月前
|
机器学习/深度学习
YOLOv8改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
YOLOv8改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
358 1
|
6月前
|
机器学习/深度学习 Ruby
YOLOv5改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
YOLOv5改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
334 0
|
6月前
|
机器学习/深度学习 Ruby
YOLOv8改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
YOLOv8改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
687 0
|
6月前
|
机器学习/深度学习 数据可视化 计算机视觉
YOLOv8改进 | 2023注意力篇 | MSDA多尺度空洞注意力(附多位置添加教程)
YOLOv8改进 | 2023注意力篇 | MSDA多尺度空洞注意力(附多位置添加教程)
493 0
|
6月前
|
机器学习/深度学习
YOLOv5改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
YOLOv5改进 | 2023注意力篇 | MLCA混合局部通道注意力(轻量化注意力机制)
391 0
|
6月前
|
机器学习/深度学习
YOLOv8改进 | 注意力篇 | ACmix自注意力与卷积混合模型(提高FPS+检测效率)
YOLOv8改进 | 注意力篇 | ACmix自注意力与卷积混合模型(提高FPS+检测效率)
337 0
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
视觉 注意力机制——通道注意力、空间注意力、自注意力
本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。
4339 0
|
7天前
|
机器学习/深度学习 计算机视觉 Ruby
【YOLOv11改进 - 注意力机制】iRMB: 倒置残差移动块,即插即用的轻量注意力
【YOLOv11改进 - 注意力机制】iRMB: 倒置残差移动块,即插即用的轻量注意力本文提出了一种新的轻量级密集预测模型EMO,结合高效的倒置残差块(IRB)和Transformer组件,设计了单残差元移动块(MMB)和倒置残差移动块(iRMB)。EMO在ImageNet-1K、COCO2017和ADE20K基准上表现出色,参数、效率和准确度达到良好平衡,尤其在iPhone14上运行速度比EdgeNeXt快2.8-4.0倍。
【YOLOv11改进 - 注意力机制】iRMB: 倒置残差移动块,即插即用的轻量注意力
|
7天前
|
机器学习/深度学习 计算机视觉
【YOLOv11改进 - 注意力机制】 MSDA(Multi-Scale Dilated Attention):多尺度空洞注意力
【YOLOv11改进 - 注意力机制】 MSDA(Multi-Scale Dilated Attention):多尺度空洞注意力本文介绍了一种高效的视觉变换器——DilateFormer,通过多尺度扩张注意力(MSDA)模块,在保持高性能的同时显著降低计算成本。MSDA通过在滑动窗口内模拟局部和稀疏的块交互,实现了多尺度特征聚合。实验结果显示,DilateFormer在ImageNet-1K分类、COCO对象检测/实例分割和ADE20K语义分割任务上均取得了优异的性能,且计算成本比现有模型减少70%。
【YOLOv11改进 - 注意力机制】 MSDA(Multi-Scale Dilated Attention):多尺度空洞注意力
|
4月前
|
机器学习/深度学习 算法 测试技术
【YOLOv8改进 - 注意力机制】Focused Linear Attention :全新的聚焦线性注意力模块
YOLOv8专栏探讨了该目标检测算法的创新改进,包括使用聚焦线性注意力模块,解决了Transformer在视觉任务中的效率和表达力问题。该模块增强自注意力,提高焦点能力和特征多样性,保持线性复杂度。文章提供了实证证据证明其在多个基准上的性能提升,并在GitHub上发布了代码。论文和更多实战案例链接见文中。

相关实验场景

更多
下一篇
无影云桌面