引入
- 除了动态图转静态图的方式导出推理模型之外
- Paddle2.0中也正式内置了ONNX模型的导出功能
- 本文将通过一个实例演示一下如何将Paddle模型导出为ONNX模型
- 并在ONNXRunTime上完成模型的推理预测
ONNX
- Open Neural Network Exchange (ONNX) ,是一个机器学习模型的开放标准,方便不同框架之间进行模型交换
- 你可以在很多支持ONNX模型导出的框架上构建模型,然后导出ONNX模型进行预测部署

Paddle2ONNX
- 目前Paddle导出ONNX模型需要安装Paddle2ONNX进行额外支持
- Paddle2ONNX支持将PaddlePaddle模型格式转化到ONNX模型格式。
- 模型格式,支持Paddle静态图和动态图模型转为ONNX,可转换由save_inference_model导出的静态图模型。动态图转换目前处于实验状态,将伴随Paddle 2.0正式版发布后,提供详细使用教程
- 算子支持,目前稳定支持导出ONNX Opset 9~11,部分Paddle算子支持更低的ONNX Opset转换,详情可参考算子列表
- 模型类型,官方测试可转换的模型请参考模型库
- 更多详情请参考Paddle2ONNX的Github主页
$ pip install paddle2onnx
$ git clone https://github.com/paddlepaddle/paddle2onnx
$ cd paddle2onnx
$ python setup.py install
动态图ONNX模型导出
- 如果使用Paddle2.0构建的动态图模型,可以通过调用paddle.onnx.export()来实现ONNX模型的快速导出
- 大致的原理就是动转静在将静态图模型转换为ONNX模型,所以转换的代码上与动转静很相似
- 接下来就通过代码来演示一下导出的流程
import os
import time
import paddle
from u2net import U2NETP
model = U2NETP()
model.set_dict(paddle.load([path to the pretrained model]))
model.eval()
input_spec = paddle