在图像分割与检测领域,传统卷积神经网络(CNNs)受限于局部感受野,难以捕捉长距离依赖关系(如目标全局结构),而 Transformer 虽能建模全局上下文,但计算复杂度高且对局部细节敏感不足。VSS Block(视觉状态空间模块) 应运而生,其核心是融合卷积的局部特征提取能力与状态空间模型的全局依赖建模能力,旨在解决复杂场景下的跨尺度特征融合与上下文理解问题,尤其适用于农业籽粒检测、遥感、医学图像分割等对细节与全局语义敏感的任务。
上面是原模型,下面是改进模型
1. 视觉状态空间模块VSS Block介绍
VSS Block 采用双分支架构(参考论文图 5a):
主干分支:线性嵌入:将输入图像转换为特征向量;深度卷积:通过 3×3 卷积提取局部空间特征;SS2D 模块:基于离散化状态空间模型,对 2D 特征图进行全局卷积,捕捉跨位置依赖;激活与归一化:通过 SiLU 激活函数与层归一化(LayerNorm)增强非线性表达。
残差分支:直接连接输入与输出,缓解梯度消失并保留原始特征信息。
特征融合:主干分支与残差分支输出相加,生成包含局部细节与全局上下文的特征图。该结构通过空间 - 全局联合建模,实现了对多尺度特征的高效融合,适用于编码器 - 解码器架构(如 VMUnet-MSADI)的上下文建模需求。
2. YOLOv12与视觉状态空间模块VSS Block的结合
将其添加到 YOLO12 backbone 中,可借助状态空间模型增强长距离依赖建模能力,高效融合多尺度特征,在保持检测速度的同时,提升复杂场景下目标定位精度与背景区分能力,尤其适合农业籽粒检测等需兼顾局部细节与全局语义的任务。
3. 视觉状态空间模块VSS Block代码部分
YOLO12模型改进方法,快速发论文,总有适合你的改进,还不改进上车_哔哩哔哩_bilibili
更多代码:https://github.com/tgf123/YOLOv8_improve/blob/master/YOLOV12.md
4. 将视觉状态空间模块VSS Block引入到YOLOv12中
第一: 先新建一个v12_changemodel,将下面的核心代码复制到下面这个路径当中,如下图如所示。E:\Part_time_job_orders\YOLO_NEW\YOLOv12\ultralytics\v12_changemodel。
第二:在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\ultralytics\cfg\models\12\yolo12_mamba_vision.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
)