传统 U 型卷积网络因卷积的局部性限制,难以有效提取全局上下文信息,影响病变精准定位。尽管 CNN 与 Transformer 的混合架构可解决此问题,但存在计算资源消耗大的缺陷,且 Transformer 缺乏卷积归纳偏置,难以适配稀缺的医学数据。而采用大卷积核的 CNN 能够在利用卷积归纳偏置的同时获取更大的感受野信息,基于此,研究人员受 ConvMixer 和 ConvNeXt 启发,提出 CMUNeXt Block,以在轻量级网络中实现全局信息提取与参数优化的平衡。
上面是原模型,下面是改进模型
1. CMUNeXt介绍
该模块以深度可分离卷积为核心,借助大尺寸深度卷积提取各通道的全局空间信息,通过倒置瓶颈设计的逐点卷积实现空间与通道信息的充分混合。其采用残差连接保证梯度流通,并引入 GELU 激活函数与批量归一化层(BatchNorm)提升非线性表达与训练稳定性,从而在减少参数与计算量的同时,增强网络对长距离依赖关系的建模能力。
CMUNeXt Block 主要由以下部分构成:
大核深度卷积:运用大尺寸卷积核(如 7×7、9×9)执行深度卷积,以提取全局空间信息,输出特征图记为 fl′。
残差连接:将输入特征 fl−1 与深度卷积输出相加,以此缓解梯度消失问题。
倒置瓶颈逐点卷积:先通过 1×1 卷积将通道数扩展 4 倍,再经 GELU 激活与 BatchNorm 处理;随后进行第二次 1×1 卷积压缩通道,完成通道间信息交互,最终输出特征图 fl。
2. YOLOv12与CMUNeXt的结合
CMUNeXt Block 的大核深度卷积与全局信息提取能力,可助力 YOLO12 在检测小目标或形态复杂目标时,更好地捕捉目标与周围环境的空间关系,进而提升目标定位精度与类别判别能力。
3. CMUNeXt代码部分
YOLOv8_improve/YOLOV12.md at master · tgf123/YOLOv8_improve · GitHub
YOLO12模型改进方法,快速发论文,总有适合你的改进,还不改进上车_哔哩哔哩_bilibili
4. 将CMUNeXt引入到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_CNUNeXt.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
)