概要
pytorch训练好的模型在android端部署,需要先将模型转换为onnx。然后安装mnn库(注意版本,同时下载对应的官方提供的android平台的lib库),在对应环境中的终端使用指令把onnx转为mnn。
MNN库安装
终端pip安装或conda安装(考虑速度及版本问题,应指定服务器网址下载,并指定版本号)
pip安装: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn mnn==2.8.1
查看版本号:MNNConvert -v
转换ONNX
转换onnx:使用torch.onnx.export()转换,需要输入一个随机生成的tensor,指定设备(GPU、CPU),输入输出向量命名,方便加载模型时设定输入输出向量。
示例:
pmyid = PMYID()
states = torch.load(path, map_location='cpu')
pmyid.load_state_dict(states)
pmyid.to(device)
dummy_input = torch.randn(1, 1, 512, 512).to(device)
torch.onnx.export(pmyid, dummy_input, "pmyid_200.onnx", input_names=['net_in'], output_names=['net_out'])
转换mnn
命令行
MNNConvert -f ONNX --modelFile pmyid_122.onnx --MNNModel denoiseY122.mnn --bizCode biz
半精度:MNNConver