首页 > 其他分享 >YOLO11改进-注意力-引入高效多尺度注意力EMA

YOLO11改进-注意力-引入高效多尺度注意力EMA

时间:2024-12-25 13:29:38浏览次数:6  
标签:YOLO11 EMA 特征 维度 model 注意力 通道

        在计算机视觉任务中,通道或空间注意力机制虽能提升特征表示效果,但通道维度缩减建模跨通道关系可能影响深度视觉表示提取。为解决此问题,本文提出高效多尺度注意力(EMA)模块,将部分通道重塑为批量维度,分组通道维度为多个子特征,使空间语义特征在各特征组内良好分布;除在并行分支编码全局信息重新校准通道权重外,还通过跨维度交互聚合两个并行分支输出特征,以捕获像素级成对关系,从而在避免通道维度缩减副作用的同时提升了特征提取效果。在yolo目标检测模型中,为了增强backbone的多尺度特征,本文使用EMA替换C2PSA中的普通注意力机制提升YOLOv11模型的多尺度特征。

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

1. 高效多尺度注意力EMA结构介绍          

  1. EMA 的原理

    • EMA(Efficient Multi - scale Attention)是一种用于计算机视觉任务中的注意力机制。其主要目的是在不减少通道维度的情况下,有效地捕捉多尺度特征。传统的通道注意力机制在处理跨通道关系时,可能会因为通道维度的缩减而丢失一些重要信息。EMA 通过创新的结构设计来避免这种情况。

    • EMA 将部分通道重塑为批量维度,分组通道维度为多个子特征,使得空间语义特征在各特征组内能够良好分布。这种方法能够在避免通道维度缩减副作用的同时提升特征提取效果。

    • 除了在并行分支编码全局信息并重新校准通道权重外,EMA 还通过跨维度交互聚合两个并行分支的输出特征,以捕获像素级成对关系。

  1. EMA 的结构

    • 输入(Input):输入特征图的形状为CxHxW,其中C是通道数,H是高度,W是宽度。

    • 分组(Grouping):输入特征图被分成多个子特征,每个子特征的通道数为c/g,其中g是分组数。这些子特征在图中用黄色框表示。

    • 并行分支(Parallel Branches)

      • 左侧分支(Left Branch):包括多个操作,如平均池化(Avg Pool)、Softmax 操作、与输入特征图相乘等。这些操作旨在捕捉全局信息并重新校准通道权重。

      • 右侧分支(Right Branch):包括卷积操作(Conv)、批量归一化(Batch Norm)、激活函数(如 ReLU)等。这些操作用于处理局部特征。

    • 跨维度交互(Cross - Dimension Interaction):通过跨维度交互,两个并行分支的输出特征被聚合在一起,以捕获像素级成对关系。

    • 输出(Output):最终输出特征图的形状与输入特征图相同,为CxHxW。

2. YOLOv11与高效多尺度注意力EMA的结合

       在yolo目标检测模型中,为了增强backbone的多尺度特征,本文使用EMA替换C2PSA中的普通注意力机制提升YOLOv11模型的多尺度特征。

3. 高效多尺度注意力EMA代码部分

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

YOLOv11全部代码

 4. 将高效多尺度注意力EMA引入到YOLOv11中

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

第二:在task.py中导入EMCAD_block包

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

    ​​​​​​ 

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

        第一个改进的配置文件

     第五:运行成功


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

if __name__=="__main__":

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

    results = model.train(data=r'D:\model\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
                          )

标签:YOLO11,EMA,特征,维度,model,注意力,通道
From: https://blog.csdn.net/qq_64693987/article/details/144355360

相关文章