【环境搭建】(九)飞桨EasyDL发布的模型转换onnx(附工程代码)

一、paddle转onnx转rknn环境搭建

paddle转onnx和onnx转rknn两个环境可以分开搭建,也可以搭建在一起。这里选择分开搭建,先搭建paddle转onnx。

1.1、创建环境

选择python3.8.13包进行创建环境

bash 复制代码
conda create --name paddle2rknn libprotobuf python==3.9

1.2、进入环境

命令如下:

bash 复制代码
conda activate paddle2rknn

1.3、RKNN-Toolkit2工具安装

RKNN-Toolkit2是为用户提供在 PC、Rockchip NPU 平台上进行模型转换、推理和性能评估的开发套件,RKNN-Toolkit2适用于RK3566、RK3568、RK3588/RK3588S、RV1103、RV1106等型号的芯片。RKNN-Toolkit2的适配文件可以从下方链接获取:

附件8:rknn-toolkit2资源-CSDN下载https://download.csdn.net/download/XiaoBai_Steve/92728866?spm=1001.2014.3001.5501 下载解压后这里RKNN-Toolkit2的根目录为./rknn-toolkit2/packages/。目前提供两种方式安装RKNN-Toolkit2:一是通过Python包安装与管理工具pip进行安装;二是运行带完整RKNN-Toolkit2工具包的docker镜像。本文采用第一种方式。

切换到RKNN-Toolkit2根目录:

bash 复制代码
cd /home/ub/下载/rknn-toolkit2/rknn-toolkit2/packages/

安装依赖,因为我们环境的python版本是3.10.0,所以这里执行:

bash 复制代码
pip install -r requirements_cp39-1.6.0.txt

安装RKNN-Toolkit2:

bash 复制代码
pip install rknn_toolkit2-1.6.0+81f21f4d-cp39-cp39-linux_x86_64.whl

1.4、paddle2onnx工具安装

查看paddle2onnx可安装版本:

bash 复制代码
pip index versions paddle2onnx

默认安装的就是最新版本,这里指定1.0.8版本,否则会因为onnx版本版本太高,与RKNN-Toolkit2不兼容:

bash 复制代码
pip install paddle2onnx==1.0.8

1.5、解决相关依赖问题

到此,paddle转onnx转rknn环境基本搭建完成,但是还要解决一下包依赖的问题。

安装pip依赖查看工具:

bash 复制代码
pip install pipdeptree

查看依赖关系:

bash 复制代码
pipdeptree -p paddle2onnx

根据终端打印的内容进行包的安装和版本更换。

bash 复制代码
pip install /*包名*/==/*版本号*/

二、模型转换

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

附件9:Paddle2ONNX资源-CSDN下载https://download.csdn.net/download/XiaoBai_Steve/92728870?spm=1001.2014.3001.5501

2.1、获取PaddlePaddle部署模型

Paddle2ONNX 在导出模型时,需要传入部署模型格式,包括两个文件

a).**model_name.pdmodel:**表示模型结构

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

2.2、命令行模型转换

指令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"},默认为 {} |

模型转换指令:

bash 复制代码
paddle2onnx --model_dir models --model_filename model.pdmodel --params_filename model.pdiparams --opset_version 12 --save_file saveonnx/model.onnx --enable_onnx_checker True

转换结果在./Paddle2ONNX/saveonnx/model.onnx

相关推荐
枫叶林FYL3 小时前
【机器学习与智慧医疗】2型糖尿病早期预警系统:当多参数集成模型学会“会诊“
大数据·人工智能
灵机一物3 小时前
灵机一物AI原生电商小程序、PC端(已上线)-从单人 10 天 3000 元 AI 爆款,拆解世界模型如何重构游戏与视频生产范式
人工智能
Agent产品评测局3 小时前
化工制造安全生产AI方案主流产品对比详解:2026工业大模型与端到端自动化选型指南
人工智能·安全·ai·chatgpt·制造
灰灰勇闯IT3 小时前
CANN Graph Engine 执行链路:一张计算图如何跑上昇腾 NPU
人工智能·深度学习·算法
前端不太难3 小时前
从点击到意图:鸿蒙 App 的 AI 进化
人工智能·状态模式·harmonyos
Data_Journal3 小时前
什么是数据采购,它究竟如何运作?
大数据·开发语言·数据库·人工智能·python
闵孚龙3 小时前
Claude Code 技能系统全解析:AI Agent 自定义能力、SKILL.md、MCP 扩展、上下文预算与企业级自动化落地
运维·人工智能·自动化
Gigavision3 小时前
SEED-VII 数据集介绍:面向七类情绪识别的 EEG 与眼动多模态数据集
人工智能·python·算法·脑机接口
InfiSight智睿视界3 小时前
AI 视频分析的边界在哪里?从画面识别到时空行为理解的系统设计思路
人工智能·ai视频工作流·连锁门店管理
byzh_rc3 小时前
[自然语言处理-入门] 语音转换VC
人工智能·自然语言处理