用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环境转换可参考博客:
Linux环境转换可参考博客:
详细的方法CSDN中很多博客都已经写的很详细了,出现bug的话每个人可能都不同,我就不在这里详细的写了。
在这里我推荐一个大佬的一键转换工具:
只需要选择onnx模型便可一键生成ncnn模型。我有2个模型需要转换,一个超轻量的模型没有经过去冗余就可以直接转换成功,另一个如果不去冗余就会报错,去冗余之后就成功转换。还是挺方便的,如果手里只有一两个模型需要转换的话 可以先试试这个工具 如果能直接生成能省下很多时间,如果出现bug解决不了,再自行搭建环境进行编译即可。