YOLO12改进-模块-引入Cascaded Group Attention(CGA)模块 提升小目标检测和复杂场景下的定位精度。
视觉 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, YOLOWorldif __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 weightsresults = 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)