YOLO12 改进、魔改|十字形窗口自注意力CSWin-SA,通过水平和垂直条纹的并行注意力计算,在较低计算成本下实现更全面的空间关系建模,平衡局部细节保留与全局上下文捕获

        在医学图像分割领域,传统CNN方法虽然能有效捕捉局部特征,但难以建模长距离依赖关系;而标准Transformer的全局自注意力机制虽然能捕获全局上下文,却面临计算复杂度高的问题。Swin Transformer通过局部窗口注意力降低了计算量,但窗口间交互有限。针对这些挑战,CSWin-SA创新性地提出了十字形窗口自注意力机制,在保持计算效率的同时增强了感受野交互能力。    

1.CSWin-SA原理

         CSWin-SA的核心创新是将多头注意力分成两组并行计算:一组处理水平条纹区域,另一组处理垂直条纹区域。具体实现上,输入特征X∈ℝ^(H×W×C)被均匀分割为:

  • 水平条纹:M=H/sw个非重叠条纹,每个高度为sw
  • 垂直条纹:S=W/sw个非重叠条纹,每个宽度为sw

        其中可调节的sw参数(条纹宽度)能平衡计算复杂度和模型能力:高分辨率阶段用较小sw,低分辨率阶段用较大sw。

     

CSWin Transformer Block由以下组件构成:

  1. ​LayerNorm​​:输入特征归一化
  2. ​CSWin自注意力模块​​:
    • 多头分组:将N个头均分为两组
    • 水平组计算:H-Attention = Softmax(Q_hK_h^T/√d)V_h
    • 垂直组计算:V-Attention = Softmax(Q_vK_v^T/√d)V_v
    • 输出拼接:Output = Concat([H-Attention, V-Attention])
  3. MLP​​:两层感知机
  4. 残差连接​​:每个模块都包含跨层连接

   

 CSWin-SA的核心创新是将多头注意力分成两组并行计算:一组处理水平条纹区域,另一组处理垂直条纹区域。具体实现上,输入特征X∈ℝ^(H×W×C)被均匀分割为:

  • 水平条纹:M=H/sw个非重叠条纹,每个高度为sw
  • 垂直条纹:S=W/sw个非重叠条纹,每个宽度为sw

        其中可调节的sw参数(条纹宽度)能平衡计算复杂度和模型能力:高分辨率阶段用较小sw,低分辨率阶段用较大sw。

     

CSWin Transformer Block由以下组件构成:

  1. ​LayerNorm​​:输入特征归一化
  2. ​CSWin自注意力模块​​:
    • 多头分组:将N个头均分为两组
    • 水平组计算:H-Attention = Softmax(Q_hK_h^T/√d)V_h
    • 垂直组计算:V-Attention = Softmax(Q_vK_v^T/√d)V_v
    • 输出拼接:Output = Concat([H-Attention, V-Attention])
  3. MLP​​:两层感知机
  4. 残差连接​​:每个模块都包含跨层连接

2.CSWin-SA习作思路

CSA-ConvBlock在目标检测中的优点

        在目标检测任务中,CSWin-SA的十字形注意力模式能同时捕获水平方向的物体边界特征和垂直方向的空间层级关系,这对定位不同长宽比的物体特别有效。相比传统窗口注意力,其条纹设计在计算量相近的情况下显著扩大了有效感受野,有利于检测小目标和密集排列物体。       

CSA-ConvBlock在图像分割中的优点

        对于图像分割,CSWin-SA通过并行处理水平和垂直条纹,既能保持边缘细节的精确度,又能建模器官间的全局空间关系。这种双向注意力机制特别适合医学图像中常见的管状结构(如血管)和复杂形状器官的分割,在保持计算效率的同时提升了边界分割的准确性。        

3. YOLO与CSWin-SA的结合     

     将CSWin-SA融入YOLO框架可以增强其对不规则形状目标的检测能力,特别是改善小目标检测性能。十字形注意力机制与YOLO的多尺度预测天然契合,能在不显著增加计算负担的情况下提升检测精度。此外,CSWin-SA的参数效率使其非常适合实时目标检测场景。   

4.CSWin-SA代码部分

YOLO11|YOLO12|改进| 交叉形窗口自注意力Cross-Shaped Window Self-Attention 提升对多尺度目标和复杂结构的特征表示_哔哩哔哩_bilibili

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

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

5. CSWin-SA引入到YOLOv12中


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

  

第二:在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/tgf/tgf/yolo/model/YOLO12_All/ultralytics/cfg/models/12/yolo12_Cross_Shaped_Window_SelfAttention.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 = True
                          )
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值