现在有很多模型部署框架了,综合考虑易用性,性能,支持模型转换的类型,成熟程度,考虑使用ncnn进行模型部署。
ncnn开源地址:
Tencent/ncnngithub.com![0020872b15e4d94fc645828ca05d1e1e.png](https://i-blog.csdnimg.cn/blog_migrate/cd9914b75ac69d5a879e2a6f6e862d66.jpeg)
这里我使用pytorch训练好的PSENet模型进行部署。
正文
官方pytorch转ncnn说明文档
转换流程如下:
pytorch训练->onnx->onnx-simplifier->ncnn
1. pytorch训练->onnx
注意如果模型中没有sigmoid,而是在后处理中用它,导出onnx时需要在Module里加入sigmoid
注意如果有interpolate操作,align_corners参数设置为False
转换代码如下:
def torch2onnx(model, save_path):
"""
:param model:
:param save_path: XXX/XXX.onnx
:return:
"""
model.eval()
data = torch.rand(1, 3, 224, 224)
input_names = ["input"] #ncnn需要
output_names = ["out"] #ncnn需要
torch.onnx._export(model, data, save_path, export_params=True, opset_version=11, input_names=input_names, output_names=output_names)
print("torch2onnx finish.")
![c6d0d8da9ccdf0ba014064febb8418ca.png](https://i-blog.csdnimg.cn/blog_migrate/37b3cdcd3e1db47a8759549bb9c5a0b2.png)
2. onnx->onnx-simplifier
2.1 安装onnx-simplifier
pip install onnx-simplifier
2.2 输入命令转换模型
python -m onnxsim pse.onnx pse_sim.onnx
得到以下结果: