在资源受限环境下部署神经网络时,早期研究分别利用卷积和注意力机制构建轻量级架构来捕获局部和全局依赖。随着研究发展,状态空间模型(SSM)因其在处理全局交互时具有线性计算成本优势而受到关注。Mamba 引入选择性扫描机制,后续的 Vision Mambas 将 SSM 概念扩展到视觉任务。然而,先前基于 SSM 的模型仍存在速度较慢的问题,且状态空间对偶(SSD)层的主要瓶颈在于门控操作和输出投影中的线性投影。为解决这些问题,提出 HSM-SSD,旨在降低计算成本并提高模型效率。
上面是原模型,下面是改进模型
1. HSM-SSD介绍
HSM-SSD 对 NC-SSD 进行了结构优化。在 NC-SSD 层中,计算过程包含线性变换、离散化、深度可分离卷积(DWConv)等操作。HSM-SSD 在计算共享全局隐藏状态 h 时,先对输入进行线性投影到隐藏状态空间,减少计算量。之后,隐藏状态混合器(HSM)直接在压缩后的隐藏状态 h 上进行通道混合操作,包括门控和输出投影,避免了在原始高维特征空间进行这些操作带来的高计算成本。这种结构调整使得 HSM-SSD 在降低计算成本的同时,能够有效捕获全局上下文信息,提升模型性能 。
2. YOLOv12与HSM-SSD的结合
HSM - SSD 与 YOLOv12 结合,借助其线性计算复杂度和全局建模能力,在提升检测精度的同时保持高效推理,尤其利于小目标和高分辨率场景。
3. HSM-SSD代码部分
https://github.com/tgf123/YOLOv8_improve/blob/master/YOLOV12.md
4. 将HSM-SSD引入到YOLOv12中
第一: 先新建一个change_model,将下面的核心代码复制到下面这个路径当中,如下图如所示。YOLOv12\ultralytics\change_model。
第二:在task.py中导入包
第三:在task.py中的模型配置部分下面代码
第四:将模型配置文件复制到YOLOV12.YAMY文件中
第五:运行代码
from ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorld
if __name__=="__main__":
# 使用自己的YOLOv12.yamy文件搭建模型并加载预训练权重训练模型
model = YOLO(r"E:\Part_time_job_orders\YOLO_NEW\YOLOv12_all\ultralytics\cfg\models\12\yolo12_HSMSSD.yaml")
# .load(r'E:\Part_time_job_orders\YOLO_NEW\YOLOv12\yolo12n.pt') # build from YAML and transfer weights
results = model.train(data=r'E:\Part_time_job_orders\YOLO\YOLOv12\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
)