Window系统中onnx转化为ncnn详细教程


前言

本文记录了将onnx转化为ncnn框架,方便部署到移动端。前提是你已经安装了vs2016或者其它版本。


一、onnx和ncnn是什么?

简单描述一下官方介绍,开放神经网络交换(Open Neural Network Exchange)简称ONNX是微软和Facebook提出用来表示深度学习模型的开放格式。所谓开放就是ONNX定义了一组和环境,平台均无关的标准格式,来增强各种AI模型的可交互性。
ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架,也是腾讯优图实验室成立以来的第一个开源项目。ncnn 从设计之初深刻考虑手机端的部署和使用,无第三方依赖,跨平台,手机端 CPU 的速度快于目前所有已知的开源框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 App。

二、使用步骤

1.安装protobuf

1)下载protobuf-3.4.0安装包,并解压;
然后在vs2019的X64命令行执行以下命令。注意以下命令都是在vs2019上执行的。

git clone https://github.com/protocolbuffers/protobuf.git

注:<protobuf-root-dir>为解压的protobuf-3.4.0文件夹的根目录。
代码如下(示例):

cd <protobuf-root-dir>

mkdir build-vs2019 
cd build-vs2019


cmake -G"NMake Makefiles"-DCMAKE_BUILD_TYPE=ReTease -DCMAKE_INSTALL_PREFIX=%cd%/insta11 -Dprotobuf_BUILD_TESTS=OFF-Dprotobuf_MSVC_STATIC_RUNTIME=OFF../cmake

nmake
nmake install

例如:

cmake -G"NMake Makefiles"-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake

编译后可以执行以下语句说明安装成功

protoc.exe-- version

2.克隆安装ncnn

执行以下语句克隆ncnn

git clone https://github.com/Tencent/ncnn.git

打开VS2019的X64命令行(进入到ncnn根目录下)执行以下语句
注意:cmake-G...这条命令有三个<protobuf-root-dir>需要换成protobuf-3.4.0的根目录

cd <protobuf-root-dir>

mkdir build-vs2019 
cd build-vs2019

cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -DProtobuf_INCLUDE_DIR=D:/weigth_ncnn/protobuf-3.4.0/build-vs2019/install/include -DProtobuf_LIBRARIES=D:/weigth_ncnn/protobuf-3.4.0/build-vs2019/install/lib/libprotobuf.lib -DProtobuf_PROTOC_EXECUTABLE=D:/weigth_ncnn/protobuf-3.4.0/build-vs2019/install/bin/protoc.exe -DNCNN_VULKAN=OFF ..

nmake
nmake install

编译后
nccn/build-vs2019 /tools/onnx目录下有onnx2ncnn.exe文件

3.生成ncnn文件

拷贝你的onnx文件例如:yolox.onnx到D:\ncnn\build-vs2019\tools\onnx 生成ncnn相应的param和bin文件
然后cd到onnx2ncnn.exe文件的根目录,在执行以下语句

onnx2ncnn.exe yolox.onnx yolox.param yolox.bin 

因为ncnn不支持Focus模块.会有警告:
Unsupported slice step!
但没有关系,Focus层在C++中实现。

总结

踩了很多坑才把onnx转化为ncnn文件,里面有以下步骤是省略了请读者执行摸索,因为时间紧迫,没有认真检查,如果发现有错误请指出,谢谢

要在Windows上安装onnx2ncnn,您需要按照以下步骤进行操作: 1. 首先,将您的onnx文件拷贝到ncnn的根目录下的build-vs2019\tools\onnx文件夹。假设您的onnx文件名为yolox.onnx。 2. 打开VS2019的本地工具命令提示符。使用cd命令切换到ncnn的根目录。例如: ``` cd <ncnn-root-dir> ``` 这里的<ncnn-root-dir>是指ncnn的根目录。 3. 创建一个build文件夹,并进入该文件夹: ``` mkdir build cd build ``` 4. 使用cmake命令生成NMake Makefiles。同时指定编译类型为Release,并设置安装目录为当前目录下的install文件夹。还需要指定Protobuf的相关路径。例如: ``` cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -DProtobuf_INCLUDE_DIR=<protobuf-include-dir> -DProtobuf_LIBRARIES=<protobuf-lib-dir>\libprotobuf.lib -DProtobuf_PROTOC_EXECUTABLE=<protobuf-bin-dir>\protoc.exe -DNCNN_VULKAN=OFF .. ``` 这里的<protobuf-include-dir>是指protobuf的include目录,<protobuf-lib-dir>是指protobuf的lib目录,<protobuf-bin-dir>是指protobuf的bin目录。 5. 使用nmake命令编译ncnn: ``` nmake ``` 6. 使用nmake install命令安装ncnn: ``` nmake install ``` 完成以上步骤后,您就成功安装了onnx2ncnn工具。您可以在install文件夹找到生成的yolox.param和yolox.bin文件,它们是ncnn相应的param和bin文件。 请注意,上述步骤的路径和文件名可能需要根据您的实际情况进行调整。另外,确保您已经正确安装了VS2019、cmake和protobuf,并将它们的路径正确配置。 #### 引用[.reference_title] - *1* [Window系统onnx转化为ncnn详细教程](https://blog.csdn.net/weixin_52583846/article/details/125065108)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【Pytorch->ONNX->NCNN->NCNNfp16->vs编译】Windows NCNN部署](https://blog.csdn.net/qq_38253797/article/details/122318469)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值