YOLO11改进-模块-引入Shift module 缓解信息损失和梯度错误问题

        在二进制模型中,二进制操作虽然能降低计算复杂度,但会导致信息损失和梯度错误,影响模型性能。为解决这些问题,在二进制 MLP 模块中引入 Shift module。

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

改进后的模型

1. Shift module介绍 

       通过水平、垂直和混合移位操作,对输入特征进行变换。水平移位将输入特征图向右移动一个像素,垂直移位与之类似,混合移位则从相邻四个令牌中提取特征并替换当前令牌特征。这些操作在通道维度上进行,重复操作和池化操作进一步增强特征融合,最终将移位操作结果与 MLP 层输出相加,缓解信息损失和梯度错误,提升模型性能。

2. YOLOv11与Shift module的结合           

        在 YOLOv11的C3K2模块中添加 Shift module ,增强特征的局部信息交互,通过移位操作融合不同位置特征,提升模型对目标特征的捕捉能力。还能降低计算量,在不显著增加参数量的情况下优化特征表达,进而提高模型检测精度和效率。

3. Shift module代码部分

视频讲解:

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

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

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

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

 4. Shift module引入到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_Shift_channel_mix.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
                          )
### 集成 Restormer 模块YOLOv11 为了在 YOLOv11 中集成 Restormer 模块以提升模型性能,主要涉及修网络架构中的骨干网部分以及特征融合机制。具体来说: #### 修 Backbone 结构 Restormer 是一种基于 Transformer 的结构,在图像修复等领域表现出色。将其引入作为 YOLOv11 的新 backbone 可增强对复杂场景的理解能力[^2]。 ```python from restormer import Restormer # 假设已有一个可用的 Restormer 实现 class CustomYOLO(YOLO): def __init__(self, config_path=None): super().__init__(config_path) # 替换原有的 EfficientViT 或其他 backbone self.backbone = Restormer() ``` #### 调整训练配置文件 为了让新的 backbone 正常工作,可能还需要调整数据预处理方式、优化器设置等参数来适应 Restormer 特性。 ```yaml # yolo11EfficientViT_with_Restormer.yaml train: ... model: backbone: "restormer" optimizer: type: AdamW # 更适合 transformer 类型模型的优化算法 ... ``` #### 更新 Python 训练脚本 最后一步是在主程序里加载自定义版本的 YOLO 并启动训练过程。 ```python if __name__ == '__main__': model = CustomYOLO(r'D:\yolo\yolov11\ultralytics-main\datasets\yolo11EfficientViT_with_Restormer.yaml') model.train( data=r'D:\yolo\yolov11\ultralytics-main\datasets\data.yaml', cache=False, imgsz=640, epochs=100, single_cls=False, batch=8, close_mosaic=10, workers=0, device='0', optimizer='AdamW', # 对应于 yaml 文件里的更 amp=True, project='runs/train', name='exp_restormer' ) ``` 通过上述动,可以在保持原有框架优势的同时利用 Restormer 提供的强大表征学习能力进一步提高目标检测效果[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值