NCNN在windows-VS2022部署(三)——ONNX转NCNN

在这篇博客中我讲解了如何本地安装编译ncnn和protobuf:NCNN在windows-VS2022部署(一)——安装并编译ncnn和protobuf-CSDN博客

今天讲解如何将ONNX模型转换为NCNN模型,提供了两种方法:

一、用ncnn编译后的模型转换工具

S1:cd 进入包含模型转换工具的bin文件夹中,bin文件中包含onnx2ncnn.exe

cd D:\PC_Project\ONNX2NCNN\ncnn\build-vs22\install\bin

S2:然后运行如下命令即可

onnx2ncnn.exe <.onnx文件路径> <.param文件的保存路径> <.bin文件的保存路径>

我的示例:

onnx2ncnn.exe "C:\Users\admin\Desktop\ncnn_test\polygon_best_2k.onnx" "C:\Users\admin\Desktop\ncnn_test\polygon_best_2k.param" "C:\Users\admin\Desktop\ncnn_test\polygon_best_2k.bin"

二、本地转换工具

这篇博客中提出了一个转换工具:ONNX转NCNN工具:简化模型转换的利器-CSDN博客

自行下载安装(转换工具下载链接:https://gitcode.com/open-source-toolkit/74771/overview

转换后的模型可能会有一些错误,根据错误自行修改!!!

### NCNN模型在Python中的部署指南 尽管NCNN是一个C++库,主要用于移动端高性能神经网络前向计算,但在某些情况下可能需要通过Python接口来调用它。以下是关于如何在Python环境中部署NCNN模型的详细介绍。 #### 1. 安装依赖项 要成功部署NCNN模型,首先需要安装必要的工具和库。这通常包括Git用于克隆仓库以及编译环境设置。例如,在Ubuntu系统上可以执行以下命令完成基础配置: ```bash ubuntu@ubuntu:~$ git clone https://github.com/Tencent/ncnn.git ``` 此操作会获取到最新的NCNN源码[^1]。接着还需要构建并安装该库至本地机器中以便后续使用。 对于操作系统的选择方面,推荐采用稳定版本如Ubuntu 22.04 LTS以匹配硬件特性尤其是Intel处理器系列[^2]。 #### 2. 构建Python绑定 目前官方并没有提供直接支持Python的语言封装,因此如果想利用Python操控NCNN,则需借助第方项目或者自行编写扩展模块。一种常见做法是运用`pybind11`创建自定义桥接层从而允许从脚本层面访问核心功能。 假设已经具备上述前提条件之后,继续按照如下步骤操作: - 编辑Makefile文件加入额外选项启用python wrapper生成; ```makefile USE_PYTHON=1 PYTHON_VERSION?=3.x ``` 重新运行make指令触发新的编译过程产出.so动态链接库供解释器加载导入。 #### 3. 加载预训练权重与结构描述文件 一旦完成了前期准备工作就可以着手于实际应用环节了。一般而言深度学习框架导出的结果会被保存成两个独立的部分——参数(.bin/.param) 和架构定义(.prototxt). 下面给出了一段简单的示范代码展示怎样实例化Net对象并将指定路径下的资料关联起来: ```python import ncnn net = ncnn.Net() net.load_param("mymodel.param") # Load network architecture information. net.load_model("mymodel.bin") # Load trained weights data. # Prepare input mat... input_mat = ... ex = net.create_extractor() # Create extractor instance associated with the loaded model. ex.set_light_mode(True) # Optional performance tuning flag. ex.input(ncnn.Mat(), input_mat) # Feed forward pass starting point setting up inputs here... output_tensor = ex.extract("output_layer_name")[0].asMat().clone() # Extract output tensor as matrix form. ``` 值得注意的是以上片段仅为示意性质具体细节取决于所选算法类别及其对应的输入输出规格说明文档[^3]. 另外考虑到跨平台移植性和兼容性问题建议优先选用标准化格式比如ONNX作为中间媒介然后再换为目标形式减少潜在错误风险提高灵活性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值