YOLO11 改进、魔改| 双聚合注意力融合模块DAAFM, 通过整合模态内自注意力与模态间交叉注意力,提升对小目标、复杂背景下目标的检测能力。

该文章已生成可运行项目,

        多模态图像融合需整合不同来源数据的关键信息,但传统融合方法多依赖简单拼接或浅层卷积难以充分捕捉模态内特征的连贯性和模态间特征的互补性。这导致融合后特征表达能力弱,影响下游任务性能,DAFM 正是为解决这一核心痛点而设计。

1. DAAFM原理

        DAFM 通过双聚合注意力机制实现特征融合:一方面利用自注意力(SAB)强化单模态内部的特征一致性,突出模态自身关键信息;另一方面通过交叉注意力交互块(CAIB)挖掘不同模态间的互补关系,且 CAIB 采用负 softmax(softmin)机制,聚焦模态间差异以最大化信息互补。最终通过加权融合两种注意力输出,平衡模态内连贯性与模态间互补性,生成更优的融合特征。

DAFM 的结构主要包含三个核心部分:

         1. 特征投影层:通过 1×1 卷积将输入的两种模态特征转换为 QKV(Query、Key、Value)表示,为注意力计算做准备;

         2. 双注意力计算单元:包含自注意力块(SAB)和交叉注意力交互块(CAIB),分别处理模态内特征优化和模态间特征交互;

         3. 特征融合与输出层:通过 1×1 卷积调整特征维度,结合可学习权重 α 和 β 平衡两种注意力输出,再经 3×3 卷积降维,输出融合后的特征图。

2. DAAFM习作思路

        在目标检测任务中:DAFM 通过自注意力强化单模态内目标特征的完整性,确保目标关键结构(如轮廓、纹理)不丢失,同时借助交叉注意力充分融合不同模态中目标的互补信息(如外观特征与语义特征),让检测模型更精准地识别目标,尤其在复杂场景下能提升对模糊、遮挡目标的识别能力,增强检测的鲁棒性。

         在目标检测任务中:DAFM 的自注意力机制能保持模态内特征的空间连贯性,有助于分割任务中边界和区域的精准划分;交叉注意力则能整合不同模态中关于场景结构、细节的互补信息,让分割模型更清晰地分辨不同类别对象的边界,提升分割结果的细腻度和准确性,减少类别混淆。

3. YOLO与DAAFM的结合   

        将 DAFM 融入 YOLO,可让模型更高效地融合多模态特征,强化目标特征的辨识度,提升对小目标、复杂背景下目标的检测能力;同时能增强特征的泛化性,让 YOLO 在不同环境条件下保持稳定的检测性能。

4.DAAFM代码部分

YOLO11|YOLO12|改进| 细节保留上下文融合模块DPCF,通过动态门控保留小目标、遮挡目标的细节,显著提升这类难点目标的检测精度。_哔哩哔哩_bilibili

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

YOLOv11模型改进讲解,教您如何根据自己的数据集选择最优的模块提升精度_哔哩哔哩_bilibili

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

 代码获取:YOLOv8_improve/YOLOv11.md at master · tgf123/YOLOv8_improve

5. DAAFM到YOLOv11中

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

            ​​​​​​                  

第二:在task.py中导入

 ​​​                          ​​​​​​​     

第三:在task.py中的模型配置部分下面代码

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

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

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

     ​​​​​​​ ​​​​​​​​​​​​​​ ​​​​​​​ ​​​​​​​​​​​​​第五:运行代码

from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
import torch
if __name__=="__main__":



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

    results = model.train(data="/home/shengtuo/tangfan/YOLO11/ultralytics/cfg/datasets/VOC_my.yaml",
                          epochs=300,
                          imgsz=640,
                          batch=4,
                          # cache = False,
                          # single_cls = False,  # 是否是单类别检测
                          # workers = 0,
                          # resume=r'D:/model/yolov8/runs/detect/train/weights/last.pt',
                          amp = False
                          )
本文章已经生成可运行项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值