onnx转化ncnn详细实现过程

本文介绍了如何将ONNX模型转换为NCNN并在Android端部署,包括使用onnx-simplifier去除冗余、通过ONNX2NCNN工具或自建VS2019、Cmake、OpenCV等环境进行编译的过程。
摘要由CSDN通过智能技术生成

 将onnx转化为ncnn部署在Android端

先将onnx模型进行优化去除冗余

前置:onnx(pytorch自带了,不用单独安装)、onnx-simplifier (需要安装)

安装onnx-simplifier的指令:

pip install -i https://pypi.douban.com/simple -U onnx-simplifier --user

去冗余指令:minifas.onnx为原onnx 

python -m onnxsim minifas.onnx minifas-sim.onnx

去除后会得到

方式1

大佬的一键转换工具:

ONNX2NCNN一键转换工具

先尝试

方式2

转化工具无法转化时,通过自己搭建环境进行转化

软件准备

vs2019,用的是16.11版本。通常小版本的差异不影响编译。

cmake,用的是3.19.1,通常来说>=3.15就没问题的。

opencv 用的是3.4.10

1、vs2019安装

vs2019下载地址

安装,打开Visual Studio installer

勾选其中的C++桌面开发即可,其他不用勾选

编辑

2、安装Cmake

安装Cmake 3.19.2

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。

在cmake官网上下载最新版的camke:

cmake官网

编辑

接下来需要添加环境变量,在此电脑=>高级系统设置=>环境变量的系统变量部分的Path添加cmake的bin目录

配置完成后win+R打开cmd窗口,输入cmake,测试是否安装成功。

编辑

3、安装Opencv

安装Opencv 3.4.10

Opencv官网

win环境下安装Opencv,参考opencv的安装,在opencv官网下载opencv3.4.10,注意选择win版本。

编辑

注意OpenCV同样需要配置环境变量,,但和cmake又有一些差别。如果不配置opencv的话,之后编译的过程中会有报错。在此电脑=>高级系统设置=>环境变量的用户变量部分的Path添加D:\package\opencv\build\x64\vc15\bin目录(注意换成自己的解压目录),如下:

编辑

4、编译protobuf 3.4.0

在开始菜单选择vs2019 x64 native的cmd窗口

编辑

Protobuf是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,可以用于网络通信和数据存储。

下载了 protobuf 3.4.0 的源码:https://github.com/google/protobuf/archive/v3.4.0.zip

创建 目录,把protobuf-3.4.0.zip放过去了,等下ncnn源码也放在这个目录下

从该地址下载protobuf3.4.0的压缩包,解压后放在之前新建的文件中,然后在开始菜单找到Visual Studio 2019=>x64 Native Tools Command Prompt for VS 2019右击,点击更多,以管理员身份运行,输入以下命令编译protobuf3.4.0:

cd protobuf-3.4.0
mkdir build-vs2019
cd build-vs2019
cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install ^
    -Dprotobuf_BUILD_TESTS=OFF ^
    -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake
nmake
nmake install

编辑

输入nmake,等待编译结束后nmake install。

编辑

安装完成后的build-vs2019文件夹,之后编译ncnn的时候需要用到。

编辑

5、编译ncnn框架

同样在vs2019中操作,新建目录,cd到新目录下,执行下面命令行,注意中间的路径需要替换为自己的文件路径

git clone https://github.com/Tencent/ncnn.git
cd ncnn
git submodule update --init
mkdir build-vs2019
cd build-vs2019
cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install ^
    -DProtobuf_INCLUDE_DIR=E:/dbg/cnn-deploy/protobuf-3.4.0/build-vs2019/install/include ^
    -DProtobuf_LIBRARIES=E:/dbg/cnn-deploy/protobuf-3.4.0/build-vs2019/install/lib/libprotobuf.lib ^
    -DProtobuf_PROTOC_EXECUTABLE=E:/dbg/cnn-deploy/protobuf-3.4.0/build-vs2019/install/bin/protoc.exe ^
	-DOpenCV_DIR=E:/lib/opencv/4.5.0 ..
nmake
nmake install

6、ONNX转换NCNN

ncnn编译完后,在build-vs2019/tools/onnx里会生成个可执行文件onnx2ncnn

命令行后面的onnx替换为自己的模型路径,最后生成的param、bin为ncnn

onnx2ncnn mobilenetv2.onnx mobilenetv2.param mobilenetv2.bin

参考资料

VS2019的安装和使用

VS2019的安装和使用_一支飞编程的博客-CSDN博客

ncnn | Windows(VS2019)编译

(一)ncnn | Windows(VS2019)编译_ncnn vs2019-CSDN博客

ONNX转换NCNN

ONNX转换NCNN_onnx转ncnn_小殊小殊的博客-CSDN博客

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值