Msnhnet

GitHub
736 145 较难 1 次阅读 1周前MIT开发框架
AI 解读 由 AI 自动生成,仅供参考

Msnhnet 是一款受 Darknet 启发、专为机器人视觉打造的轻量级 PyTorch 推理框架。它致力于解决深度学习模型在实际部署中依赖庞大环境、跨平台兼容性差以及在嵌入式设备上运行困难等痛点,让算法能更高效地落地。

这款工具非常适合需要在资源受限设备(如树莓派、Jetson NX、龙芯等)上部署视觉应用的开发者与研究人员。无论是进行目标检测(支持 YOLOv3/v4/v5)、图像分割(UNet、DeepLabV3),还是经典分类网络(ResNet、MobileNetV2),Msnhnet 都能提供流畅的运行体验。

其核心技术亮点在于纯 C++ 实现,不强制依赖第三方 BLAS 库,并针对 ARM 架构深度优化了 Winograd 卷积加速与 NEON 指令集。同时,它原生支持 CUDA、cuDNN 及 GPU FP16 半精度推理,显著提升了计算速度。Msnhnet 还具备优秀的模型转换能力,可直接加载由 Keras 或部分 PyTorch 导出的模型,并配套提供了类似 Netron 的可视化查看器,极大简化了从训练到端侧部署的全流程工作。

使用场景

某嵌入式机器人团队需要在资源受限的 Jetson NX 开发板上部署 YOLOv5 目标检测模型,以实现实时避障与货物识别。

没有 Msnhnet 时

  • 依赖沉重:必须安装完整的 PyTorch 运行时环境,占用大量存储空间且启动缓慢,难以在边缘设备维持轻量化运行。
  • 推理延迟高:Python 解释器的开销导致帧率不稳定,无法满足机器人高速运动下对毫秒级响应的严苛要求。
  • 跨平台部署难:从训练服务器(Linux x86)到嵌入式端(ARM64)的迁移过程中,常因算子不支持或环境配置差异导致模型无法运行。
  • 硬件加速受限:难以直接调用底层 CUDA/cuDNN 进行 FP16 半精度推理,导致 GPU 算力利用率低,功耗过高。

使用 Msnhnet 后

  • 极致轻量:仅需纯 C++ 环境即可运行,去除了 Python 依赖,显著减小了二进制体积并实现了秒级启动。
  • 实时性能飞跃:利用 Msnhnet 针对 ARM Neon 和 Winograd 算法的优化,结合 FP16 模式,在 Jetson NX 上将 YOLOv5 推理速度提升至流畅的实时帧率。
  • 无缝跨端迁移:支持直接将 PyTorch 训练的模型转换为 Msnhnet 格式,屏蔽了底层架构差异,实现了“一次训练,多端运行”。
  • 能效比优化:原生支持 GPU 加速与显存管理,在保持高精度的同时大幅降低了机器人电池的消耗,延长了作业时间。

Msnhnet 通过纯 C++ 的高效推理引擎,成功将复杂的深度学习模型“瘦身”并加速,让高性能视觉算法在低成本嵌入式设备上真正落地。

运行环境要求

操作系统
  • Windows
  • Linux
  • macOS
GPU
  • 可选
  • 若需 GPU 加速,需要 NVIDIA 显卡(已测试 GTX1080Ti, GTX2080Ti, Jetson NX),需支持 CUDA 10+ 和 cuDNN 7.0+
  • 部分旧架构显卡(如 GTX10 系列 Pascal 架构)在使用特定模型时可能不支持 cuDNN,建议仅使用 GPU 模式或检查 FP16 支持情况
内存

未说明

依赖
notes1. 这是一个受 Darknet 启发的迷你 PyTorch 推理框架,核心仅依赖 C++,无需 Python 运行时即可进行推理。 2. 构建时需要 CMake 3.15+。 3. 若在 Jetson 平台构建,需在 CMake 中取消勾选 NNPACK、OPENBLAS 和 NEON 选项。 4. macOS 构建不支持 Viewer 功能,且需手动编译 yaml-cpp 和 OpenCV。 5. 支持将 Keras (TF 1.x) 和部分 PyTorch 模型转换为 Msnhnet 格式进行推理,训练仍需使用原生 PyTorch。
python无要求 (核心为纯 C++ 框架)
CMake >= 3.15
OpenCV 4 (可选)
Qt5 (可选,用于 Viewer)
OpenGL (可选,用于 MsnhCV GUI)
GLEW (可选,用于 MsnhCV GUI)
GLFW3 (可选,用于 MsnhCV GUI)
CUDA 10+ (可选,用于 GPU)
cuDNN 7.0+ (可选,用于 GPU)
yaml-cpp
OpenBLAS (可选)
Msnhnet hero image

快速开始

🔥 Msnhnet(V2.0 专注于机器人视觉)🔥

英语| 中文 |CSDN

一个受 Darknet 启发的迷你 PyTorch 推理框架。

License c++ Msnhnet

支持的操作系统(您也可以自行检查其他操作系统)

windows linux mac Loongnix
已测试 Windows Windows OSX Loongnix
GPU Windows Linux Mac Loongnix

CPU 已测试

Intel i7 raspberry 3B raspberry 4B Jeston NX Loongson
已测试 i7 3B 4B NX Loongson

特性

  • 纯 C++ 实现。第三方 BLAS 库为可选,也可使用 OpenBlas。
  • 支持的操作系统:Windows、Linux(已测试 Ubuntu)和 Mac OS(未测试)。
  • 支持的 CPU:Intel x86、AMD(未测试)以及 ARM(已测试:armv7、armv8、aarch64)。
  • 支持 x86 AVX2。(正在进行中……)
  • 支持 ARM NEON。(正在进行中……)
  • MsnhNet 支持类似 OpenCV 的计算机视觉库。(MsnhCV)
  • 支持 3x3 s1 和 3x3 s2 的卷积操作,以及 Winograd 3x3 s1。(仅限 ARM)
  • 支持将 Keras 模型转换为 MsnhNet。(Keras 2 和 TensorFlow 1.x)
  • 支持 GPU CUDA。(已测试 GTX1080Ti 和 Jetson NX)
  • 支持 GPU cuDNN。(已测试 GTX1080Ti 和 Jetson NX)
  • 支持 GPU FP16 模式。(已测试 GTX1080Ti 和 Jetson NX。)
  • 注:请确认您的显卡是否支持 FP16 全速运行。
  • 支持 C API。
  • 支持 Keras 2 转 MsnhNet。(Keras 2 和 TensorFlow 1.x,部分算子)
  • 支持 PyTorch 2 转 MsnhNet。(部分算子,正在开发中)
  • 支持 MsnhnetSharppic
  • 支持 MsnhNet 的可视化工具。(类似 Netron)
  • 正在开发中……(仅周末进行 (╮(╯_╰)╭))

已测试的网络

YOLO 测试

  • Win10 MSVC 2017 I7-10700F

    网络 yolov3 yolov3_tiny yolov4
    时间 380ms 50ms 432ms
  • ARM(Yolov3Tiny CPU)

    CPU raspberry 3B raspberry 4B Jeston NX
    使用 NEON 汇编 0.432s

YOLO GPU 测试

  • Ubuntu16.04 GCC Cuda10.1 GTX1080Ti

    网络 yolov3 yolov3_tiny yolov4
    时间 30ms 8ms 30ms
  • Jetson NX

    网络 yolov3 yolov3_tiny yolov4
    时间 200ms 20ms 210ms

YOLO GPU cuDNN FP16 测试

  • Jetson NX
    网络 yolov3 yolov4
    时间 115ms 120ms

Yolov5s GPU 测试

  • Ubuntu18.04 GCC Cuda10.1 GTX2080Ti
    网络 yolov5s yolov5s_fp16
    时间 9.57ms 8.57ms

MobileNet Yolo GPU cuDNN 测试

  • Jetson NX
    网络 yoloface100k yoloface500k mobilenetv2_yolov3_nano mobilenetv2_yolov3_lite
    时间 7ms 20ms 20ms 30ms

DeepLabv3 GPU 测试

  • Ubuntu18.04 GCC Cuda10.1 GTX2080Ti
    网络 deeplabv3_resnet101 deeplabv3_resnet50
    时间 22.51ms 16.46ms

要求

视频教程(哔哩哔哩)

构建方法

  • 使用 CMake 3.15+

  • 查看器无法在 GPU 上构建。

  • 选项

    注:您可以通过取消勾选 OMP_MAX_THREAD,并修改 CMakeLists.txt 第 52 行的“num”值来调整 OpenMP 线程数。

  • Windows

  1. 编译 OpenCV4(可选)
  2. 配置环境变量,添加“OpenCV_DIR”(可选)
  3. 获取并安装 Qt5。http://download.qt.io/(可选)
  4. 将 Qt5 的 bin 路径添加到环境变量中(可选)。
  5. 获取 GLEW 用于 MsnhCV GUI。http://glew.sourceforge.net/(可选)。
  6. 获取 GLFW3 用于 MsnhCV GUI。https://www.glfw.org/(可选)。
  7. 解压 GLEW,将其路径添加到“CMAKE_PREFIX_PATH”中(可选)。
  8. 使用 CMake 编译 GLFW3,并将其 CMake 目录添加到“GLFW_DIR”中(可选)。
  9. 然后使用 CMake-GUI 工具和 Visual Studio 进行构建,或使用 vcpkg。
  • Linux(Ubuntu)

注:如果您想在 Jetson 上构建,请取消勾选 NNPACK、OPENBLAS 和 NEON。

sudo apt-get install build-essential
sudo apt-get install qt5-default      #可选
sudo apt-get install libqt5svg5-dev   #可选
sudo apt-get install libopencv-dev    #可选
sudo apt-get install libgl1-mesa-dev libglfw3-dev libglfw3 libglew-dev #可选


#配置
sudo echo /usr/local/lib > /etc/ld.so.conf.d/usrlib.conf
sudo ldconfig

# 构建 Msnhnet
git clone https://github.com/msnh2012/Msnhnet.git
mkdir build 

cd Msnhnet/build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j4
sudo make install

vim ~/.bashrc # 在最后一行添加:export PATH=/usr/local/bin:$PATH
sudo ldconfig
  • macOS(macOS Catalina)无查看器版

注:需预先安装 Xcode。

请从官网下载支持 GUI 的 CMake,以及 YAML 和 OpenCV 的源代码。

# 安装 CMake

vim .bash_profile
export CMAKE_ROOT=/Applications/CMake.app/Contents/bin/
export PATH=$CMAKE_ROOT:$PATH
source .bash_profile

# 使用 Homebrew 安装必要的库

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

brew install wget
brew install openjpeg
brew install hdf5
brew install gflags
brew install glog
brew install eigen
brew install libomp

# 构建 yaml-cpp
git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
mkdir build
source .bash_profile
cmake-gui
设置源代码路径:./yaml-cpp
设置构建二进制文件路径:./yaml-cpp/build
配置
CMAKE_BUILD_TYPE = Release
取消勾选 YAML_CPP_BUILD_TESTS
配置(并继续调试)
生成
cd ./yaml-cpp/build
sudo make install -j8

# 构建 OpenCV
# 从官网下载 opencv.zip(记得同时下载 opencv-contrib)
cd opencv-4.4.0
mkdir build
source .bash_profile
cmake-gui


设置源代码路径:./opencv-4.4.0
设置构建二进制文件路径:./opencv-4.4.0/build
配置(使用默认设置)
搜索 OPENCV_ENABLE_NONFREE 并启用它
搜索 OPENCV_EXTRA_MODULES_PATH,将其指向 opencv-contrib 的路径
配置(并继续调试)
生成
cd ./opencv-4.4.0/build/
sudo make install -j8


# 构建 Msnhnet
git clone https://github.com/msnh2012/Msnhnet.git
mkdir build 

cd Msnhnet/build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j4
sudo make install

测试 Msnhnet

    1. 下载预训练模型并解压,例如 D:/models。
    1. 打开终端,进入“Msnhnet 安装目录下的 bin”文件夹,例如 D:/Msnhnet/bin。
    1. 测试 YOLOv3:“yolov3 D:/models”。
    1. 测试 YOLOv3 Tiny 视频检测:“yolov3tiny_video D:/models”。
    1. 测试分类任务:“classify D:/models”。


查看 Msnhnet

    1. 打开终端,进入“Msnhnet 安装目录下的 bin”文件夹,例如 D:/Msnhnet/bin。
    1. 运行“MsnhnetViewer”。


注:您可以双击“ResBlock Res2Block AddBlock ConcatBlock”节点以查看更多细节
ResBlock

Res2Block</br

AddBlock</br

ConcatBlock</br

如何将您自己的 PyTorch 网络转换为 Msnhnet 格式

  • pytorch2msnhnet
  • 注:
    1. 转换前请确认 PyTorch 模型支持的算子是否在 pytorch2msnhnet 的支持范围内。
    1. 部分模型可能无法成功转换。
    1. 如果您的模型包含较为复杂的预处理和后处理操作,请先转换网络主干部分,再手动添加相关算子。
    1. 对于 YOLOv3 和 YOLOv4,可参考此视频。您可以在这里找到“pytorch2msnhbin”工具。

关于训练

尽情享受吧!:D

致谢

Msnhnet 的灵感来源于以下项目,并在此基础上开发:

第三方库

加群交流</br </br

版本历史

Version1.02020/09/01
Beta2020/08/13
v1.0-alpha2020/07/08

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

160.8k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|昨天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架