当前位置: 首页 > news >正文

基于辽宁科技大学的论文复现——从零开始SPMamba-yolo全流程部署文档

一、原论文信息

论文标题:SPMamba-YOLO: An underwater object detection network based on multi-scale feature enhancement and global context modeling

发表日期:2026年02月

发表单位:辽宁科技大学电子与信息工程学院

原文链接:https://arxiv.org/pdf/2602.22674v1.pdf

二、部署环境配置

1、Ubuntu环境搭建(22.04)

1.1、PC端部署前置条件

安装WSL ubuntu或者有自己的主机是ubuntu系统

想通过WSL安装ubuntu可以查看教程:Windows 安装 WSL2 并运行 Ubuntu 22.04 指南

1.2、安装CUDA、CUDNN和Anaconda环境

工作中需要用到基于Ubuntu22.04系统yolov8的GPU环境

安装教程:

Ubuntu22.04搭建基于GPU的Yolov8环境

三、安装mamba-yolo框架

1、创建环境并指定Python 3.12

conda create -n mambayolo python=3.12 -y conda activate mambayolo

2、安装CUDA版本的PyTorch

pip3 install torch==2.3.0+cu121 torchvision==0.18.0+cu121 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121

3、安装selective_scan wheel

selective_scan wheel下载链接:

https://pan.baidu.com/s/1IxKyAqqFB1fsdme0V0HCbg?pwd=6666提取码: 6666

链接来源:全网最详细教程(提供selective_scan安装包),Ubuntu上一次性跑通Mamba-YOLO!

pip install selective_scan-0.0.2-cp312-cp312-linux_x86_64.whl

4、安装其他依赖

pip install seaborn thop timm einops

5、克隆并安装Mamba-YOLO

git clone https://github .com/HZAI-ZJNU/Mamba-YOLO.git cd Mamba-YOLO pip install -v -e .

6、创建数据集

.\Mamba-YOLO\目录下创建文件夹datasets

数据集结构如下:

├── datasets │ ├── images │ │ ├── test │ │ ├── train │ │ └── val │ ├── labels │ │ ├── test │ │ ├── train │ │ ├── val

7、创建数据集配置文件 ——data.yaml

.\Mamba-YOLO\datasets\目录下创建data.yaml文件

data.yaml

train: images/train val: images/val test: images/test # number of classes nc: 4 # class names names: [ 'holothurian','echinus','scallop','starflish']

8、创建模型训练脚本——train.py

.\Mamba-YOLO\目录下创建train.py脚本

train.py

from ultralytics import YOLO import argparse import os ROOT = os.path.abspath('.') # ROOT = '' print(ROOT) def parse_opt(): parser = argparse.ArgumentParser() parser.add_argument('--data', type=str, default=os.path.normpath(os.path.join(ROOT, 'datasets/data.yaml')), help='dataset.yaml path') parser.add_argument( '--config', type=str, default=os.path.normpath(os.path.join(ROOT, 'ultralytics/cfg/models/mamba-yolo/Mamba-YOLO-T.yaml')), help='model path(s)') parser.add_argument('--batch_size', type=int, default=1, help='batch size') parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='inference size (pixels)') parser.add_argument('--task', default='train', help='train, val, test, speed or study') parser.add_argument('--device', default='0', # 0,1,2,3,4,5,6,7 help='cuda device, i.e. 0 or 0,1,2,3 or cpu') # parser.add_argument('--device', default='0', # help='cuda device, i.e. 0 or 0,1,2,3 or cpu') parser.add_argument('--workers', type=int, default=1, help='max dataloader workers (per RANK in DDP mode)') parser.add_argument('--epochs', type=int, default=100) parser.add_argument('--optimizer', default='SGD', help='SGD, Adam, AdamW') parser.add_argument('--amp', action='store_true', help='open amp') parser.add_argument('--project', default=os.path.normpath( os.path.join(ROOT, 'runs/train1')), help='save to project/name') parser.add_argument('--name', default='mambayolo-hituav', help='save to project/name') parser.add_argument('--half', action='store_true', help='use FP16 half-precision inference') parser.add_argument('--dnn', action='store_true', help='use OpenCV DNN for ONNX inference') opt = parser.parse_args() return opt if __name__ == '__main__': print(ROOT) opt = parse_opt() task = opt.task print(opt.data) args = { "data": opt.data, "epochs": opt.epochs, "workers": opt.workers, "batch": opt.batch_size, "optimizer": opt.optimizer, "device": opt.device, "amp": opt.amp, "project": opt.project, "name": opt.name, } # 遍历打印字典args for key, value in args.items(): print(key, value) model_conf = opt.config task_type = { "train": YOLO(model_conf).train(**args), "val": YOLO(model_conf).val(**args), # "test": YOLO(model_conf).test(**args), "test": YOLO(model_conf).val(**args), } task_type.get(task)

9、运行脚本训练模型

python train.py

10、其他资料

参考链接:

https://blog.csdn.net/Jason_Mar1/article/details/146255942

GitHub的mamba-yolo开源资料:

GitHub - HZAI-ZJNU/Mamba-YOLO: the official pytorch implementation of “Mamba-YOLO:SSMs-based for Object Detection” · GitHub

四、将SPPELAN融合进YOLOV8

1、参考文档

爆改YOLOv8 | 利用YOLOv9最新的SPPELAN模块改进SPPF

这里mamba-yolo框架本身有SPPELAN模块,所以只需要替换原本的SPPF模块就行。

2、修改配置文件 —— Mamba-YOLO-T.yaml

.\Mamba-YOLO\ultralytics\cfg\models\mamba-yolo\目录下

- [-1, 1, SPPF, [1024, 5]]修改为:

- [-1, 1, SPPELAN, [1024, 256]]

五、将PSA融合进YOLOV8

1、参考文档

YOLOv8改进-添加YOLOv10的PSA注意力机制

这里mamba-yolo框架本身有PSA模块,所以只需要直接添加PSA模块就行。

2、修改配置文件 —— Mamba-YOLO-T.yaml

.\Mamba-YOLO\ultralytics\cfg\models\mamba-yolo\目录下

增加PSA模块到SPPELAN模块的下一行:

- [-1, 1, SPPELAN, [1024, 256]] - [-1, 1, PSA, [1024]]

修改Mamba-YOLO-T.yamlhead部分:

# Mamba-YOLO PAFPN head: - [-1, 1, nn.Upsample, [None, 2, 'nearest']] - [[-1, 5], 1, Concat, [1]] # cat backbone P4 - [-1, 3, XSSBlock, [512]] # 11 - [-1, 1, nn.Upsample, [None, 2, 'nearest']] - [[-1, 3], 1, Concat, [1]] # cat backbone P3 - [-1, 3, XSSBlock, [256]] # 14 (P3/8-small) - [-1, 1, Conv, [256, 3, 2]] - [[-1, 12], 1, Concat, [1]] # cat head P4 - [-1, 3, XSSBlock, [512]] # 17 (P4/16-medium) - [-1, 1, Conv, [512, 3, 2]] - [[-1, 8], 1, Concat, [1]] # cat head P5 - [-1, 3, XSSBlock, [1024]] # 20 (P5/32-large) - [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5)

六、总结

通过整合网络上的完整教程和资源,SPMamba-yolo的部署流程已全部完成。从环境配置到模型训练与推理,每一步均经过验证并成功跑通。该过程涉及依赖安装、数据准备、参数调整及性能测试,最终实现了预期的检测效果。

部署过程中遇到的关键问题已逐一解决,确保系统稳定运行。完整的流程验证了SPMamba-yolo在实际应用中的可行性,为后续优化和扩展奠定了基础。

训练效果图展示:

http://www.jsqmd.com/news/830547/

相关文章:

  • PXIe控制器:高性能测控系统的核心大脑与同步中枢
  • 深度解析Spreadsheets-are-all-you-need:用电子表格重新定义AI模型探索
  • 别再裸发ROS图像了!手把手教你用image_transport优化带宽(附压缩参数配置)
  • Fillinger智能填充插件:Adobe Illustrator自动化图案填充的终极解决方案
  • 【信息科学与工程学】【数据科学】数据科学领域-第三篇 数学基础10 对称性 (3)
  • League Akari:英雄联盟玩家的智能游戏助手
  • 2026年4月台灯厂家推荐,落地灯/黑板灯/教育照明/路灯/智能台灯/声光一体教室灯/台灯/教室灯/课桌椅,台灯公司实力 - 品牌推荐师
  • 读懂 SAP S/4HANA 里的 SAP Fiori 架构:前端服务器、搜索链路、传统应用接入与内容组织全景解析
  • 如何用嘎嘎降AI处理植物学论文:实验报告密集的植物学毕业论文降AI4.8元完整操作教程
  • SAP Fiori 前端服务器部署全景解析:Embedded、Hub 与云端统一入口该如何选择
  • Claude Agent SDK 实战:用 Python 构建能写代码、搜文件、调 API 的 AI Agent
  • 如何用嘎嘎降AI处理经济学论文:计量分析密集的经济学毕业论文降AI免费完整操作教程
  • 【Claude基础】08.子代理系统:分身术与并行执行
  • 噪声抑制技术:让语音更清晰
  • 书成紫微动,律定凤凰驯:那些瞎解读的人,根本不懂铁哥的破立之道
  • CAPL_基于DLL封装实现UDS安全算法的工程化实践
  • 2026年成都钢材批发行业采购首选:型钢、钢板、钢管、螺纹钢筋供应商实力解析 - 四川盛世钢联营销中心
  • 独立开发者如何利用TaotokenTokenPlan降低项目试错成本
  • 画图工具2.0
  • 终极解决Windows风扇控制难题:FanControl完全指南
  • 从看得见到拿得到:全面理解 SAP Fiori 授权模型
  • 如何用嘎嘎降AI处理统计学论文:数据分析密集的统计学毕业论文降AI4.8元完整操作教程
  • UniversalSplitScreen:打破游戏限制,让任何游戏都能分屏游玩的创新解决方案
  • ElevenLabs粤语TTS落地全链路:从API密钥配置、声线微调到合规播音的5步闭环流程
  • 别再到处搜代码了!LaTeX三线表从入门到精通,这份保姆级教程就够了
  • 出租车计价器控制电路的设计(有完整资料)
  • 从 PFCG 角色看 SAP Fiori 授权设计:Catalog、OData 服务与 Launchpad 启动链路全解析
  • MySQL 函数索引与虚拟列深度解析
  • [深度解析] 质量管理是什么?2026年制造业数字化质量控制全流程
  • ORB-SLAM3地图保存新思路:手把手教你将.osa地图转成PCD点云(附完整代码)