• 问题反馈可发送邮件到stubbornhuang@qq.com

  • 本站会放置Google广告用于维持域名以及网站服务器费用。

  • 计算机图形学与计算几何经典必备书单整理,下载链接可参考:https://www.stubbornhuang.com/1256/

  • 工资「喂饱肚子」,副业「养活灵魂」!

  • 感谢大家访问本站,希望本站的内容可以帮助到大家!

  • 欢迎大家交换友链,可在https://www.stubbornhuang.com/申请友情链接进行友链交换申请!

  • 本站由于前段时间遭受到大量临时和国外邮箱注册,所以对可注册的邮箱类型进行了限制!

  • 在本站开通年度VIP,无限制下载本站资源和阅读本站文章

  • 如果觉得本站的内容有帮助,可以考虑打赏博主哦!

PaddlePaddle – 使用Paddle2Onnx将Paddle模型导出为onnx模型

PaddlePaddle 发布于2023-07-05 阅读 2,721次 0次评论 0次点赞 本文共2266个字,阅读需要6分钟。

1 Paddle2ONNX简介

Github:https://github.com/PaddlePaddle/Paddle2ONNX

Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式。通过 ONNX 可以完成将 Paddle 模型到多种推理引擎的部署,包括 TensorRT/OpenVINO/MNN/TNN/NCNN,以及其它对 ONNX 开源格式进行支持的推理引擎或硬件。

2 Paddle2ONNX使用

2.1 安装

建议使用pip安装

pip install paddle2onnx

2.2 获取PaddlePaddle的部署模型

使用Paddle2Onnx导出Onnx模型需要使用到PaddlePaddle的部署模型,有两个

  • model_name.pdmodel: 表示模型结构
  • model_name.pdiparams: 表示模型参数 [注意] 这里需要注意,两个文件其中参数文件后辍为 .pdiparams,如你的参数文件后辍是 .pdparams,那说明你的参数是训练过程中保存的,当前还不是部署模型格式。 部署模型的导出可以参照各个模型套件的导出模型文档。

一般来说,在PaddlePaddle的各个模型都会提供export.py脚本导出部署模型,以PaddleSeg中的Matting为例,在说明文档中有一小节专门说明如何导出模型,如

python tools/export.py \
    --config configs/quick_start/ppmattingv2-stdc1-human_512.yml \
    --model_path output/best_model/model.pdparams \
    --save_dir output/export \
    --input_shape 1 3 512 512

2.3 使用Paddle2ONNX导出Onnx

在获取模型的model_name.pdmodelmodel_name.pdiparams之后就可以使用Paddle2Onnx导出Onnx了,一般可使用以下命令

paddle2onnx --model_dir saved_inference_model \
            --model_filename model.pdmodel \
            --params_filename model.pdiparams \
            --save_file model.onnx \
            --enable_dev_version True

Paddle2Onnx的所有参数如下

参数 参数说明
--model_dir 配置包含 Paddle 模型的目录路径
--model_filename [可选] 配置位于 --model_dir 下存储网络结构的文件名
--params_filename [可选] 配置位于 --model_dir 下存储模型参数的文件名称
--save_file 指定转换后的模型保存目录路径
--opset_version [可选] 配置转换为 ONNX 的 OpSet 版本,目前支持 7~16 等多个版本,默认为 9
--enable_dev_version [可选] 是否使用新版本 Paddle2ONNX(推荐使用),默认为 True
--enable_onnx_checker [可选] 配置是否检查导出为 ONNX 模型的正确性, 建议打开此开关, 默认为 False
--enable_auto_update_opset [可选] 是否开启 opset version 自动升级功能,当低版本 opset 无法转换时,自动选择更高版本的 opset进行转换, 默认为 True
--deploy_backend [可选] 量化模型部署的推理引擎,支持 onnxruntime、tensorrt 或 others,当选择 others 时,所有的量化信息存储于 max_range.txt 文件中,默认为 onnxruntime
--save_calibration_file [可选] TensorRT 8.X版本部署量化模型需要读取的 cache 文件的保存路径,默认为 calibration.cache
--version [可选] 查看 paddle2onnx 版本
--external_filename [可选] 当导出的 ONNX 模型大于 2G 时,需要设置 external data 的存储路径,推荐设置为:external_data
--export_fp16_model [可选] 是否将导出的 ONNX 的模型转换为 FP16 格式,并用 ONNXRuntime-GPU 加速推理,默认为 False
--custom_ops [可选] 将 Paddle OP 导出为 ONNX 的 Custom OP,例如:--custom_ops '{"paddle_op":"onnx_op"},默认为 {}

2.4 Onnx模型优化

onnx模型简化可以直接使用onnx-simplifier,也可以使用Paddle2Onnx模型自带的工具,命令如下

python -m paddle2onnx.optimize --input_model model.onnx --output_model new_model.onnx

如需要修改导出 ONNX 的模型输入形状,如改为静态 shape,可使用以下命令

python -m paddle2onnx.optimize --input_model model.onnx \
                               --output_model new_model.onnx \
                               --input_shape_dict "{'x':[1,3,224,224]}"

2.5 Onnx部署

导出为onnx模型之后就可以使用Onnxruntime、TensorRT、NCNN、OpenVINO进行部署了。

欢迎扫码关注我的微信公众号,及时获取文章更新

微信公众号二维码

本文作者:StubbornHuang

版权声明:本文为站长原创文章,如果转载请注明原文链接!

原文标题:PaddlePaddle – 使用Paddle2Onnx将Paddle模型导出为onnx模型

原文链接:https://www.stubbornhuang.com/2715/

发布于:2023年07月05日 10:37:01

修改于:2023年07月05日 11:19:25

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章末尾
上一篇
如何获取CUDA版本号?CUDA Driver Version和CUDA Runtime Version的区别是什么?
其他
下一篇
PaddlePaddle - 抠图模型PP-MattingV2环境配置与Onnx模型导出
PaddlePaddle
当前分类随机文章推荐

发表评论

您必须 [ 登录 ] 才能发表留言!

关注我们的公众号

微信公众号