VM-Net Block的提出源于当前图像去雾领域面临的重大挑战。尽管Transformer架构已成为图像去雾的主流方法,但其自注意力机制的计算复杂度与输入图像尺寸呈二次方关系,这导致在处理高分辨率有雾图像时面临严重的计算资源限制。特别是在资源受限的设备上,传统Transformer架构难以有效建模长程依赖关系,而这一能力恰恰是准确恢复雾天图像细节的关键。 这一技术背景催生了UVM-Net Block的创新设计,它旨在突破传统方法的局限性,通过引入State Space Sequence Models(SSMs)这一新兴的深度序列模型,特别是结构化状态空间序列模型(S4),来解决长序列数据分析的效率问题。SSMs在连续长序列数据分析中已展现出卓越性能,而Mamba模型更是在长程依赖建模方面表现出色,这为图像处理任务提供了新的技术路径。
1.UVM-Net Block原理
UVM-Net Block采用了一种独特的Bi-SSM结构,如图所示

该模块的工作流程为:特征图首先经过卷积操作,然后在通道域上展开像素并通过SSM建模,最后将特征尺寸重塑为输入信息的大小。与U-Mamba和Mamba-UNet不同,UVM-Net Block提出了Bi-SSM模块,通过在通道域上滚动特征图,充分利用了SSM的长程建模能力。种双向建模机制显著提升了模块的特征表达能力,使其在保持高效计算的同时,能够更全面地理解图像内容,为准确去雾提供了强有力的技术支持。
2.UVM-Net Block习作思路
在目标检测中的优点
在目标检测任务中,UVM-Net Block的长程依赖建模能力可以显著提升模型对场景全局上下文的理解,有助于解决目标遮挡和复杂背景下的检测难题。其线性计算复杂度特性使得检测器能够处理高分辨率输入而不会显著增加计算负担,同时Bi-SSM结构对多尺度特征的整合能力可以增强模型对不同尺寸目标的检测性能,特别是对小目标的检测效果提升明显。
在图像分割中的优点
对于图像分割任务,UVM-Net Block能够有效建模像素间的长距离空间关系,这对于需要精确边界分割的场景尤为重要。模块的局部-全局特征融合机制可以同时保持细节信息和语义一致性,而SSM的序列建模特性特别适合处理分割任务中的结构化输出。此外,其高效的计算方式使得分割网络可以处理更高分辨率的医学或遥感图像,而无需过度下采样导致信息损失。
3. YOLO与UVM-Net Block的结合
将UVM-Net Block集成到YOLO架构中可以增强模型对模糊或低质量输入图像的鲁棒性,特别适合雾天等恶劣天气条件下的目标检测。其高效的长程依赖建模可以提升YOLO对小目标和密集场景的检测性能,而线性计算复杂度特性则确保了实时性不受显著影响,保持了YOLO系列模型的高效优势。
4.UVM-Net Block代码部分
https://www.bilibili.com/video/BV1gZH8zrEdi/?vd_source=8a6043a22d94a87da35299c073140577
YOLO12模型改进方法,快速发论文,总有适合你的改进,还不改进上车_哔哩哔哩_bilibili
代码获取:YOLOv8_improve/YOLOV12.md at master · tgf123/YOLOv8_improve · GitHub
5. UVM-Net Block引入到YOLOv12中
第一: 先新建一个v12_changemodel,将下面的核心代码复制到下面这个路径当中,如下图如所示。E:\Part_time_job_orders\YOLO_NEW\YOLOv12\ultralytics\v12_changemodel。
第二:在task.py中导入包
第三:在task.py中的模型配置部分下面代码
第四:将模型配置文件复制到YOLOV11.YAMY文件中
第五:运行代码
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
import torch
if __name__=="__main__":
# 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型
model = YOLO("/home/tgf/tgf/yolo/model/YOLO12_All/ultralytics/cfg/models/12/yolo12_UVMB.yaml")\
# .load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt') # build from YAML and transfer weights
results = model.train(data="/home/shengtuo/tangfan/YOLO11/ultralytics/cfg/datasets/VOC_my.yaml",
epochs=300,
imgsz=640,
batch=4,
# cache = False,
# single_cls = False, # 是否是单类别检测
# workers = 0,
# resume=r'D:/model/yolov8/runs/detect/train/weights/last.pt',
amp = True
)
11万+

被折叠的 条评论
为什么被折叠?



