前言
本文记录了将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文件,里面有以下步骤是省略了请读者执行摸索,因为时间紧迫,没有认真检查,如果发现有错误请指出,谢谢
本文详细记录了如何将ONNX模型转换为NCNN框架,适用于移动端部署。首先介绍了ONNX(开放神经网络交换)作为跨平台的深度学习模型标准格式,以及NCNN作为腾讯优图实验室的高性能手机端神经网络框架。接着,文章提供了从安装protobuf到克隆并编译NCNN的步骤,最后展示了如何使用onnx2ncnn工具生成NCNN所需的param和bin文件,尽管过程中遇到了不支持某些层的警告,但不影响最终转换结果。

1613

被折叠的 条评论
为什么被折叠?



