飞桨x昇腾生态适配方案:09_Paddle转ONNX

举报
RaceSnail 发表于 2025/05/18 11:27:34 2025/05/18
【摘要】 本节介绍 PP-OCRv4 模型如何转化为 ONNX 模型。 环境准备需要准备 PaddleOCR、Paddle2ONNX 模型转化环境,和 ONNXRuntime 推理环境。 安装 Paddle2ONNXPaddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式,安装命令如下:python3 -m pip install paddle2onnx 安装 ON...

本节介绍 PP-OCRv4 模型如何转化为 ONNX 模型。

环境准备

需要准备 PaddleOCR、Paddle2ONNX 模型转化环境,和 ONNXRuntime 推理环境。

安装 Paddle2ONNX

Paddle2ONNX 支持将 PaddlePaddle 模型格式转化到 ONNX 模型格式,安装命令如下:

python3 -m pip install paddle2onnx

安装 ONNXRuntime

ONNXRuntime 为ONNX模型提供推理预测环境,安装命令如下:

python3 -m pip install onnxruntime

训练模型下载

# 进入 PaddleOCR 源码目录
cd PaddleOCR
# 下载训练模型
wget -P pretrained https://paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-CRv4_det_train.tar
# 解压模型文件
cd pretrained && tar xf ch_PP-OCRv4_det_train.tar && cd ..

训练模型转inference模型

inference模型(paddle.jit.save保存的模型)一般是把模型结构和模型参数保存在文件中的固化模型,多用于预测部署场景。训练过程中保存的模型是checkpoints模型,保存的只有模型的参数,多用于恢复训练等。与checkpoints模型相比,inference模型会额外保存模型的结构信息,在预测部署、加速推理上性能优越,灵活方便,适合于实际系统集成。

转换命令

python3 tools/export_model.py -c configs/det/ch_PP-OCRv4/ch_PP-OCRv4_det_student.yml \
-o Global.pretrained_model=./pretrained/ch_PP-OCRv4_det_train/best_accuracy \
Global.save_inference_dir=./inference/ch_PP-OCRv4_det_infer/

转换成功:
01_训练模型转inference模型

参数说明

-c 后面设置训练算法的yml配置文件
-o 配置可选参数
Global.pretrained_model 参数设置待转换的训练模型地址,不用添加文件后缀 .pdmodel,.pdopt或.pdparams。
Global.save_inference_dir参数设置转换的模型将保存的地址。

输出结果

转inference模型时,使用的配置文件和训练时使用的配置文件相同。另外,还需要设置配置文件中的Global.pretrained_model参数,其指向训练中保存的模型参数文件。 转换成功后,在模型保存目录下有三个文件:

inference/ch_PP-OCRv4_det_infer/
    ├── inference.pdiparams         # 检测inference模型的参数文件
    ├── inference.pdiparams.info    # 检测inference模型的参数信息,可忽略
    ├── inference.pdmodel           # 检测inference模型的program文件
    └── inference.yml               # 检测inference模型的配置文件

inference模型转ONNX模型

本节介绍使用 Paddle2ONNX工具将 Paddle inference 模型转换为 ONNX 模型格式。

转换命令

paddle2onnx --model_dir ./inference/ch_PP-OCRv4_det_infer \
--model_filename inference.pdmodel \
--params_filename inference.pdiparams \
--save_file ./inference/det_onnx/model.onnx \
--opset_version 11 \
--enable_onnx_checker True

转换成功:
02_inference模型转ONNX模型

参数说明

–model_dir 配置包含 Paddle 模型的目录路径
–model_filename [可选] 配置位于 --model_dir 下存储网络结构的文件名
–params_filename [可选] 配置位于 --model_dir 下存储模型参数的文件名称
–save_file 指定转换后的模型保存目录路径
–opset_version [可选] 配置转换为 ONNX 的 OpSet 版本,目前支持 7~19 等多个版本,默认为 9
–enable_onnx_checker [可选] 配置是否检查导出为 ONNX 模型的正确性, 建议打开此开关, 默认为 True

输出结果

执行完毕后,ONNX 模型会被保存在 ./inference/det_onnx/路径下:

inference/det_onnx/
    ├── model.onnx

ONNX模型优化

如对导出的 ONNX 模型有优化的需求,推荐使用 onnxslim 对模型进行优化:

pip install onnxslim
onnxslim model.onnx slim.onnx
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。