在视觉任务中,预训练模型的微调效率至关重要。传统全量微调(Full Fine-Tuning)需更新所有参数,计算成本高且易过拟合;而早期 Delta-tuning 方法(如 Adapter、LoRA)虽减少参数量,但在复杂任务(如实例分割、定向目标检测)中性能难以超越全量微调。Swin Transformer 作为高性能视觉主干网络,其微调效率问题尤为突出。在此背景下,SwinTransformer_mona 通过引入多认知视觉适配器(Mona),旨在以参数高效的方式突破传统微调的性能瓶颈,实现对全量微调的替代。
上面是原模型,下面是改进模型
1. SwinTransformer_mona介绍
1. 多尺度视觉特征认知:人类视觉系统通过不同尺度感知图像(如全局结构与局部细节),而传统线性适配器难以捕捉视觉信号的多尺度特性。Mona 引入3×3/5×5/7×7 深度卷积(DWConv),模拟多尺度特征提取,并通过平均池化融合结果,增强对复杂场景(如小目标、密集目标)的表达能力。
2. 输入特征分布优化:固定主干网络的特征分布可能与新任务不匹配,导致适配器输入偏差。Mona 通过 层归一化(LayerNorm)和可学习缩放因子(s1、s2)调整输入特征分布,稳定训练过程中的梯度传播,提升迁移效率。
Mona 适配器嵌入 Swin Transformer 的每个 Block 中,位于多头自注意力(MSA)和前馈网络(MLP)之后,其核心模块包含以下部分:
输入优化层:通过引入层归一化操作和两个可学习的缩放参数,对输入特征进行归一化处理并调整特征比例,以此优化输入特征的分布,让后续模块能更高效地处理特征信息。
多尺度卷积组:先通过下投影层压缩特征维度,接着利用并行的 3×3、5×5、7×7 三种不同尺寸的深度卷积核提取多尺度视觉特征,再将这些特征通过平均池化的方式融合,最后经 1×1 卷积聚合,从而增强适配器对图像中不同大小目标或细节的感知能力。
上投影与激活:通过上投影层恢复特征维度,同时结合 GeLU 激活函数增强特征的非线性表达能力,最终将处理后的特征与原始输入特征相加,输出更具表现力的特征用于后续任务。
2. YOLOv11与StarNet 的结合
用 StarNet 替换 YOLOv11 的 backbone,能凭借其独特的星运算高效映射到高维非线性特征空间,在不增加过多计算量的情况下提升特征提取能力,从而可能增强 YOLOv1对复杂目标的识别精度;同时,StarNet 结构简洁、运行速度快,有望降低模型整体延迟,使检测效率得到显著提升。
3. SwinTransformer_mona代码部分
视频讲解:
YOLOv8_improve/YOLOv11.md at master · tgf123/YOLOv8_improve · GitHub
YOLOv11模型改进讲解,教您如何修改YOLOv11_哔哩哔哩_bilibili
YOLOv11全部代码,现有几十种改进机制。
4. SwinTransformer_mona引入到YOLOv11中
第一: 将下面的核心代码复制到D:\model\yolov11\ultralytics\change_models路径下,如下图所示。
第二:在task.py中导入包
第三:在YOLOv11\ultralytics\nn\tasks.py中的模型配置部分下面代码
第四:将模型配置文件复制到YOLOV11.YAMY文件中
第五:运行成功
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
if __name__=="__main__":
# 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
model = YOLO(r"E:\bilibili\model\YOLOV8_new\ultralytics-main\ultralytics\cfg\models\11\yolo11_SwinTransformer_mona.yaml")\
# .load(r'E:\bilibili\model\YOLOV8_new\ultralytics-main\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=32,
# cache = False,
# single_cls = False, # 是否是单类别检测
# workers = 0,
# resume='',
amp = True
)