- 首先将pytorch转为onnx文件
- 然后将onnx转为ncnn文件
- 下载官方的代码:https://github.com/Tencent/ncnn (官方有不同设备的安装方法,下边只是针对ubuntu)
- 安装依赖环境:sudo apt install build-essential git cmake libprotobuf-dev protobuf-compiler libvulkan-dev vulkan-utils libopencv-dev
- git clone ncnn
- cd ncnn
- mkdir -p build
- cd build
- cmake -DCMAKE_BUILD_TYPE=Release DNCNN_VULKAN=ON DNCNN_SYSTEM_GLSLANG=ON DNCNN_BUILD_EXAMPLES=ON …
- make -j24
- 验证安装:
- build$ cd …/examples
- examples$ …/build/examples/squeezenet …/images/256-ncnn.png
- [0 AMD RADV FIJI (LLVM 10.0.1)] queueC=1[4] queueG=0[1] queueT=0[1]
- [0 AMD RADV FIJI (LLVM 10.0.1)] bugsbn1=0 buglbia=0 bugcopc=0 bugihfa=0
- [0 AMD RADV FIJI (LLVM 10.0.1)] fp16p=1 fp16s=1 fp16a=0 int8s=1 int8a=1
- 532 = 0.163452
- 920 = 0.093140
- 716 = 0.061584
- 如果出现终端打印出这些信息就说明安装成功
- 简化onnx模型,以免出现不可编译的情况
- pip install onnx-simplifier
- python3 -m onnxsim my_mobileface.onnx my_mobileface-sim.onnx
- 这里报错cuda的话,就注意他的cuda版本
- onnx转换为ncnn,需要使用在ncnn/build/tools/onnx2ncnn
- ./onnx2ncnn my_mobileface-sim.onnx my_mobileface.param my_mobileface.bin
- 生成的.bin与.param文件就是我们在ubuntu上需要使用的NCNN模型文件
- 使用ncnn的param、bin文件进行推理:
- 进入ncnn的源码生成param与bin文件: cd build/tools/onnx
- cd tools/onnx
- ./onnx example.onnx example.parm example.bin
- 编译文件(ncnn目录下):
- mkdir build
- cd build
- cmake …
- make -j4
- 编译成功后会在当前目录生成examples目录,执行测试代码
- cp …/examples/squeezenet_v1.1.param examples/
- cp …/examples/squeezenet_v1.1.bin examples/
- ./squeezent test.jpg
- 运行成功会显示top-3的类别id和概率值.
- 进入ncnn的源码生成param与bin文件: cd build/tools/onnx
ncnn安装与样例代码跑通
最新推荐文章于 2024-02-20 14:00:10 发布