ONNX模型转换成NCNN模型

用Pytorch生成的.pt模型想要部署在手机端(安卓、IOS)可以先将将模型转换成onnx模型(.onnx)之后再通过onnx模型转化成ncnn模型(.bin .param)

.pt模型转换为.onnx,自行查找资料,CSDN中几个博客写的都很好了。我这里记录一下onnx模型转换ncnn模型的过程

1.onnx去冗余

.pt模型导出的.onnx模型包含许多冗余的维度,这是ncnn不支持的,所以需要去掉冗余的维度。**一定要去冗余!!!!**要不后面转换容易报错

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

安装onnx-simplifier的指令:

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

去冗余指令:

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

minifa.onnx为原始模型名称;
minifas-sim.onnx为生成的去冗余模型名称;

2.转换

windows环境转换可参考博客:

Windows(VS2019)编译

Linux环境转换可参考博客:

Linux环境编译

详细的方法CSDN中很多博客都已经写的很详细了,出现bug的话每个人可能都不同,我就不在这里详细的写了。

在这里我推荐一个大佬的一键转换工具

ONNX2NCNN一键转换工具

只需要选择onnx模型便可一键生成ncnn模型。我有2个模型需要转换,一个超轻量的模型没有经过去冗余就可以直接转换成功,另一个如果不去冗余就会报错,去冗余之后就成功转换。还是挺方便的,如果手里只有一两个模型需要转换的话 可以先试试这个工具 如果能直接生成能省下很多时间,如果出现bug解决不了,再自行搭建环境进行编译即可。

你可能感兴趣的:(ncnn,onnx)