YOLO12改进-模块-引入Cascaded Group Attention(CGA)模块 提升小目标检测和复杂场景下的定位精度。

发布于:2025-05-22 ⋅ 阅读:(18) ⋅ 点赞:(0)

   视觉 Transformer 中的多头自注意力(MHSA)存在计算冗余问题,不同注意力头学习到的特征相似性较高,导致资源浪费。传统 MHSA 对每个头均使用完整特征进行计算,未充分利用头间的信息差异。CGA 旨在通过分解特征输入和头间级联机制,降低冗余并提升计算效率,同时增强模型对多尺度特征的捕捉能力。

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

1.  CGA介绍 

         特征分解:将输入特征沿通道维度划分为多个子特征,每个注意力头仅处理特定子特征,避免不同头对相同完整特征的重复计算,减少冗余。

         头间级联:前一头的输出与当前头的输入级联,逐步 refinement 特征表示,使后续头能利用更丰富的上下文信息,提升注意力多样性和模型容量。

        计算效率优化:通过分组和级联设计,在减少计算量(Flops)的同时,通过增加有效网络深度(隐式堆叠头间操作)提升模型表达能力,实现效率与精度的平衡。

CAS 模块主要包含三部分:        空间注意力分支:通过 3×3 卷积提取局部空间信息,经 1×1 卷积降维和 Sigmoid 激活生成空间注意力图,与输入特征相乘保留空间依赖。

 2. YOLOv12与CGA的结合      

        CGA 的分组和级联机制可增强 YOLO12中不同层级特征的跨头信息流动,提升对目标多尺度特征的捕捉能力,尤其适用于小目标检测。 

3. CGA代码部分

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

YOLO12模型改进方法,快速发论文,总有适合你的改进,还不改进上车_哔哩哔哩_bilibili

 4. 将CGA引入到YOLOv12中

第一: 先新建一个change_model,将下面的核心代码复制到下面这个路径当中,如下图如所示。YOLOv12\ultralytics\change_model。

            ​​​​​​       

第二:在task.py中导入

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

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

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

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

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

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


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

if __name__=="__main__":

    # 使用自己的YOLOv12.yamy文件搭建模型并加载预训练权重训练模型
    model = YOLO(r"E:\Part_time_job_orders\YOLO_NEW\YOLOv12_all\ultralytics\cfg\models\12\yolo12_CGA.yaml")
        # .load(r'E:\Part_time_job_orders\YOLO_NEW\YOLOv12\yolo12n.pt')  # build from YAML and transfer weights

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


网站公告

今日签到

点亮在社区的每一天
去签到