YOLO11改进-模块-引入序列混洗注意力模块SSA 提高多尺度 遮挡

        基于 Mamba 的图像恢复方法在处理图像时,通常将 2D 图像沿行和列展平为多个 1D 序列,独立处理后再聚合。这种方式存在两个主要问题:一是破坏了自然图像固有的局部关系和空间连续性;二是在聚合处理后的序列时,往往采用逐像素求和的方式,忽略了不同展开方式下序列之间的差异。为解决这些问题,MaIR 模型中提出了序列混洗注意力模块(SSA),旨在更好地聚合不同扫描方向得到的序列,充分利用互补信息。

上面是原模型,下面是改进模型

改进后的

1. 序列混洗注意力模块SSA介绍 

        SSA 的核心理论是通过计算不同序列对应通道内的注意力权重,来聚合处理后的序列。这种设计能够捕捉不同序列间的复杂依赖关系。其理论基础源于注意力机制在深度学习中的广泛应用,注意力机制可以让模型更加关注重要的信息。在 SSA 中,通过对不同序列特征的处理和分析,计算出每个序列在不同通道上的重要程度,即注意力权重,然后根据这些权重对序列进行加权求和,从而实现对不同序列信息的有效整合 。

从提供的图片来看,SSA模块主要包含以下几个部分:

序列混洗注意力(SSA)模块是 MaIR 模型的关键组件,主要用于聚合处理后的序列,从而更好地利用不同扫描方向的互补信息。其结构包含以下 4 个关键步骤:

        空间平均池化与拼接:先对经过选择性扫描操作(SSO)处理后的多个序列执行空间平均池化,以此降低计算成本。接着,将池化后的序列按通道维度拼接在一起,形成一个新的序列。

        序列混洗操作:把拼接后的序列进行重新排列,也就是序列混洗操作。这一步改变了特征的排列顺序,为后续的分组卷积做准备。

        分组卷积与权重调整:运用分组卷积对混洗后的序列进行处理,得到通道维度的注意力权重。之后,通过序列反混洗操作,把权重恢复到原始顺序,让权重与原始序列的通道相对应。

        权重分块与加权求和:将反混洗后的权重进行分块,得到多个注意力权重。最后,依据这些注意力权重,对原始的各个序列进行加权求和,生成最终的输出序列。

2. YOLOv11与序列混洗注意力模块SSA的结合           

        SSA 通过计算不同序列对应通道的注意力权重来聚合序列,能有效融合来自不同感受野或不同特征图区域的信息。例如,在检测复杂场景中的多个目标时,可融合目标主体、周围环境等多方面特征,避免关键信息遗漏,提高检测精度。

        SSA 可根据注意力权重,对来自不同扫描方向的序列进行自适应聚合,突出目标特征,抑制背景噪声。例如在密集城市街道场景检测车辆时,能减少周围建筑物、行人等背景信息干扰,增强对车辆目标的检测能力。

3. 序列混洗注意力模块SSA代码部分

视频讲解:

YOLOv8_improve/YOLOv11.md at master · tgf123/YOLOv8_improve · GitHub

用一篇论文教您如何使用YOLOv11改进模块写一篇1、2区论文_哔哩哔哩_bilibili

YOLOv11模型改进讲解,教您如何修改YOLOv11_哔哩哔哩_bilibili

YOLOv11全部代码,现有几十种改进机制。

 4. 序列混洗注意力模块SSA引入到YOLOv11中

第一: 将下面的核心代码复制到D:\model\yolov11\ultralytics\change_model路径下,如下图所示。

                     

第二:在task.py中导入

 ​​​          ​​​​​​​        

第三:在YOLOv11\ultralytics\nn\tasks.py中的模型配置部分下面代码

   ​​​​​​​​​​​​​​​​​​​​​ ​​​​​​​​​​​​​​ ​​​​​​​ ​​​​​​​    ​​​​​​​ ​​​​​​​  ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​         

第四:将模型配置文件复制到YOLOV11.YAMY文件中

     ​​​​​​​ ​​​​​​​​​​​​​​ ​​​​​​​ ​​​​​​​​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​          

     第五:运行成功

from sympy import false

from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld

if __name__=="__main__":

    # 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
    model = YOLO(r"E:\Part_time_job_orders\YOLO\YOLOv11\ultralytics\cfg\models\11\yolo11_SSAttention.yamy")\
        .load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt')  # build from YAML and transfer weights

    results = model.train(data=r'E:\Part_time_job_orders\YOLO\YOLOv11\ultralytics\cfg\datasets\VOC_my.yaml',
                          epochs=300,
                          imgsz=640,
                          batch=64,
                          # cache = False,
                          # single_cls = False,  # 是否是单类别检测
                          # workers = 0,
                          # resume=r'D:/model/yolov8/runs/detect/train/weights/last.pt',
                          amp = True
                          )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值