YOLO11改进-模块-引入混合结构模块Mix Structure Block 提高多尺度、小目标

news/2025/2/25 17:01:26

        在图像去雾领域,传统的基于卷积神经网络(CNN)和 Transformer 的方法存在局限性。CNN 方法大多存在感受野不足的问题,限制了单个像素在神经网络中的参考范围,部分考虑大感受野的 CNN 方法又忽略了图像的多尺度特性;Transformer 方法虽有全局建模能力和大感受野,但参数数量庞大,训练成本高。同时,以往去雾网络中的注意力机制设计未充分考虑雾气分布的不均匀性,现有方法往往单独设计像素注意力模块和通道注意力模块,不能很好地编码大气光 A 和介质传输图 t (x)。为解决这些问题,提出 Mix Structure Block,将多尺度并行大卷积核模块和增强并行注意力模块相结合,以提升图像去雾效果。

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

改进后的结果

 

1. 混合结构模块Mix Structure Block介绍 

         多尺度并行大卷积核模块(MSPLCK):大卷积核具有更大的有效感受野和更高的形状偏差,能通过扩大感受野在学习的潜在域空间中捕获更多结构化信息,帮助单个像素基于大范围周围像素恢复图像并还原物体形状;小卷积核则专注于细节特征,恢复纹理细节。不同大小的卷积核并行工作,可从不同尺度关注图像区域,提取多尺度特征,这些特征在通道维度上连接,再经多层感知器处理,既能融合不同类型特征,又能拟合去雾特征。

        增强并行注意力模块(EPA):根据大气散射模型,通道注意力更适合编码全局大气光 A,像素注意力更适合编码介质传输图 t (x)。通过并行简单像素注意力、通道注意力和像素注意力,可同时从原始特征中提取位置相关的局部信息和共享的全局信息,以更好地适应不均匀的雾气分布。这三种注意力机制的结果在通道维度连接后,经多层感知器处理,减少连接特征通道维度至与输入相同,并与原始特征相加,实现对原始特征的优化。

结合图片信息,MixStructureBlock的结构主要包含以下几个关键部分:

1. 多尺度并行大卷积核模块(MSPLCK)

        批量归一化(Batch Norm):输入特征图首先经过 Batch Norm 层,对数据进行归一化处理,加速模型训练的收敛速度,增强模型的稳定性。

        卷积层:接着进入两个并行的卷积层,分别是 1×1 卷积和 5×5 卷积。1×1 卷积用于调整通道维度,5×5 卷积能获取相对较大范围的局部特征。

        深度扩张卷积(DWConv):经过卷积处理后的特征图分别进入三个并行的深度扩张卷积层,即 DWConv7、DWConv13 和 DWConv19,扩张率不同,可获取不同尺度的特征,其中较大的卷积核和扩张率能扩大感受野,捕获更多结构化信息。

        特征融合与处理:三个深度扩张卷积层输出的特征图进行拼接(Concat),然后依次经过 1×1 卷积、GELU 激活函数和另一个 1×1 卷积。GELU 激活函数增加模型的非线性表达能力,两次 1×1 卷积进一步调整通道维度并融合特征,最后与输入特征图进行逐元素相加(Entry-Wise Addition),残差连接有助于梯度传播和避免梯度消失。

2. 增强并行注意力模块(EPA)

        批量归一化(Batch Norm):MSPLCK 模块的输出先经过 Batch Norm 层,再次对数据进行归一化,使数据分布更稳定。

        注意力机制:接着数据被分流到三个并行的注意力模块,分别是简单像素注意力(Simple Pixel Attention)、通道注意力(Channel Attention)和像素注意力(Pixel Attention)。简单像素注意力关注局部像素间关系;通道注意力关注不同通道间的信息交互,编码全局大气光;像素注意力则侧重于捕捉位置相关的局部信息,编码介质传输图。

        特征融合与处理:三个注意力模块的输出进行拼接(Concat),然后经过一个深度扩张卷积 DWConv7,进一步提取特征。之后依次经过 1×1 卷积、GELU 激活函数和另一个 1×1 卷积,调整通道维度并增强非线性表达。最后与该模块的输入特征图进行逐元素相加(Entry-Wise Addition),完成对特征的优化。 

2. YOLOV11.html" title=YOLOv11>YOLOv11与MixStructureBlock的结合          

 本文使用MixStructureBlock替换C2PSA模块中的自注意力机制,使用多尺度结构和并行注意力方法增强YOLOV11.html" title=YOLOv11>YOLOv11模型的小目标和多尺度特征提取。

3. MixStructureBlock模块代码部分

YOLOv8_improve/YOLOV11.html" title=YOLOv11>YOLOv11.md at master · tgf123/YOLOv8_improve · GitHub

YOLOV11.html" title=YOLOv11>YOLOv11全部代码,现有几十种改进机制。

 4. 将MixStructureBlock模块 引入到YOLOV11.html" title=YOLOv11>YOLOv11中

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

       

第二:在task.py中导入

 ​​​   ​​​​​​​   

第三:在task.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.html" title=YOLOv11>YOLOv11\ultralytics\cfg\models\11\yolo11_MixStructure.yaml")\
        .load(r'E:\Part_time_job_orders\YOLO\YOLOV11.html" title=YOLOv11>YOLOv11\yolo11n.pt')  # build from YAML and transfer weights

    results = model.train(data=r'E:\Part_time_job_orders\YOLO\YOLOV11.html" title=YOLOv11>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
                          )

http://www.niftyadmin.cn/n/5865740.html

相关文章

Unity制作游戏项目——Unity项目如何导出安装包(Inno Setup Compiler的使用)——附有Inno Setup Compiler软件安装包

1.将完成的Unity项目构建成适合Windows平台可执行文件。 步骤一:点击File--Build Settings(CtrlshiftB) 步骤二:进行基础配置,点击build,选择将要导出的文件夹 “Windows”:具体指定了目标平台…

深度解析SmartGBD助力Android音视频数据接入GB28181平台

在当今数字化时代,视频监控与音视频通信技术在各行各业的应用愈发广泛。GB28181协议作为中国国家标准,为视频监控设备的互联互通提供了规范,但在实际应用中,许多Android终端设备并不具备国标音视频能力,这限制了其在相…

标定系列——基于标定板的相机内参与LiDAR-相机外参联合标定方法

标定系列——基于标定板的相机内参与LiDAR-相机外参联合标定方法 论文代码 论文 下载链接 代码

STM32——HAL库开发笔记21(定时器2—输出比较)(参考来源:b站铁头山羊)

本文主要讲述输出比较及PWM信号相关知识。 一、概念 所谓输出比较,就是通过单片机的定时器向外输出精确定时的方波信号。 1.1 PWM信号 PWM信号即脉冲宽度调制信号。PWM信号的占空比 (高电压 所占周期 / 整个周期) * 100% 。所以PWM信号…

Python爬虫的破局之路:从数据收割到智能革命的创新风暴

一、当爬虫成为数字世界的"掘金铲" 在互联网的浩瀚海洋里,每秒钟都有价值千亿美元的数据洪流奔涌而过。这些数据就像深埋在地底的石油矿藏,而Python爬虫就是当代数字矿工手中最锋利的掘金铲。从华尔街的交易员盯着爬取的实时经济数据调整投资策略,到电商运营通过…

力扣-贪心-56 合并区间

思路 先按照左区间进行排序&#xff0c;然后初始化left和right&#xff0c;重叠时&#xff0c;更新right&#xff0c;不重叠时&#xff0c;收集区间 代码 class Solution { public:static bool cmp(vector<int> a, vector<int> b){if(a[0] b[0]){return a[1] &…

基于Docker的前端环境管理:从开发环境到生产部署的实现方案

# 基于Docker的前端环境管理&#xff1a;从开发环境到生产部署的实现方案 简介及前端开发环境挑战 简介 是一种容器化平台&#xff0c;可以将应用程序及其依赖项打包为一个容器&#xff0c;提供一种轻量级、可移植的环境。它能够简化开发、部署和运维的流程&#xff0c;提高…

性能巅峰对决:Rust vs C++ —— 速度、安全与权衡的艺术

??关注&#xff0c;带你探索Java的奥秘&#xff01;?? ??超萌技术攻略&#xff0c;轻松晋级编程高手&#xff01;?? ??技术宝库已备好&#xff0c;就等你来挖掘&#xff01;?? ??订阅&#xff0c;智趣学习不孤单&#xff01;?? ??即刻启航&#xff0c;编…