YOLO11改进-模块-引入Mona Layer 提取多尺度特征

        预训练和微调范式在视觉和自然语言处理任务中取得了显著成果,然而全量微调在视觉任务中并非总是最佳选择。Delta tuning 方法虽提高了微调效率,但现有视觉 delta-tuning 方法在具有挑战性的任务上仍无法超越全量微调。传统视觉适配器存在不足,如设计上多遵循自然语言处理中的线性适配器,对视觉信号处理效率低,且多数用单个线性层压缩上游特征,无法充分利用模型对不同尺度特征的认知能力。为挑战全量微调在计算机视觉中的主导地位,提出 Mona-tuning,Mona Layer 作为其核心部分应运而生。

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

修改后的模型

1. Mona Layer介绍 

     基于人类视觉认知原理,人类眼睛从不同尺度处理视觉信号并整合以更好理解图像。受此启发,Mona Layer 引入多个卷积滤波器,从多个认知视角处理上游特征,增强适配器对视觉知识的处理和传递能力,提升在下游任务中的性能。

       

Mona Layer 添加在 Swin - Block 的 MSA 和 MLP 之后,具体结构如下:

         输入调整部分:顶部有归一化层(LayerNorm)和两个可学习权重s1​、s2​ ,对输入特征分布进行调整,公式为xnorm​=s1​⋅∣x0​∣LN​+s2​⋅x0​ ,优化从固定层传递过来的特征分布,使其更适配后续处理。

         多认知卷积滤波器组:下投影之后,设有三个不同卷积核大小(3×3、5×5 和 7×7 )的深度可分离卷积(DWConv)滤波器,从不同尺度处理上游特征,计算平均结果后,通过 1×1 卷积聚合特征,同时添加跳跃连接增强模型适应能力。

         处理与输出部分:特征经 GeLU 非线性化处理,再由上投影恢复原始特征尺寸。 

2. YOLOv11与Mona Layer的结合            

      Mona Layer 替换 YOLO11 的 SPPF 模块,可从多认知视角提取特征,增强对不同尺度目标信息捕捉,提升复杂场景目标检测精度;且作为轻量模块,能在不大幅增加计算量与参数量前提下,有效融合特征,助力模型更高效学习,平衡检测速度与精度。

3. Mona Layer代码部分

视频讲解:

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

用一篇论文教您如何使用YOLOv11改进模块写一篇1、2区论文_哔哩哔哩_bilibili

YOLOv11模型改进讲解,教您如何修改YOLOv11_哔哩哔哩_bilibili

YOLOv11全部代码,现有几十种改进机制。

 4. Mona Layer引入到YOLOv11中

第一: 将下面的核心代码复制到D:\model\yolov11\ultralytics\change_model路径下,如下图所示。

                         

第二:在task.py中导入

 ​​​                      

第三:在YOLOv11\ultralytics\nn\tasks.py中的模型配置部分下面代码

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

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

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

     第五:运行成功

from sympy import false

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

if __name__=="__main__":

    # 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
    model = YOLO(r"E:\Part_time_job_orders\YOLO\YOLOv11\ultralytics\cfg\models\11\yolo11_Mona_layer.yamy")\
        .load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt')  # build from YAML and transfer weights

    results = model.train(data=r'E:\Part_time_job_orders\YOLO\YOLOv11\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
                          )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值