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

一个愿意伫立在巨人肩膀上的农民......

 一、paddle转onnx转rknn环境搭建

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

1.1、创建环境

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

conda create --name paddle2rknn libprotobuf python==3.9

1.2、进入环境

        命令如下:

conda activate paddle2rknn

1.3、RKNN-Toolkit2工具安装

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

https://download.csdn.net/download/weixin_41809117/88879019?spm=1001.2014.3001.5503icon-default.png?t=N7T8https://download.csdn.net/download/weixin_41809117/88879019?spm=1001.2014.3001.5503

        下载解压后这里RKNN-Toolkit2的根目录为./rknn-toolkit2/packages/。目前提供两种方式安装RKNN-Toolkit2:一是通过Python包安装与管理工具pip进行安装;二是运行带完整RKNN-Toolkit2工具包的docker镜像。本文采用第一种方式。

        切换到RKNN-Toolkit2根目录:

cd /home/ub/下载/rknn-toolkit2/rknn-toolkit2/packages/

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

pip install -r requirements_cp39-1.6.0.txt

        安装RKNN-Toolkit2:

pip install rknn_toolkit2-1.6.0+81f21f4d-cp39-cp39-linux_x86_64.whl

1.4、paddle2onnx工具安装

        查看paddle2onnx可安装版本:

pip index versions paddle2onnx

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

pip install paddle2onnx==1.0.8

1.5、解决相关依赖问题

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

        安装pip依赖查看工具:

pip install pipdeptree

        查看依赖关系:

pipdeptree -p paddle2onnx

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

pip install /*包名*/==/*版本号*/

二、模型转换

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

https://download.csdn.net/download/weixin_41809117/88879464?spm=1001.2014.3001.5503icon-default.png?t=N7T8https://download.csdn.net/download/weixin_41809117/88879464?spm=1001.2014.3001.5503

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

        模型转换指令:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/714090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day09:基础入门-算法逆向散列对称非对称JS源码逆向AESDESRSASHA

目录 算法加密-概念&分类&类型 加密解密-识别特征&解密条件 解密实例-密文存储&数据传输 思维导图 章节知识点: 应用架构:Web/APP/云应用/三方服务/负载均衡等 安全产品:CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等 渗透命令&am…

电子科技大学《数据库原理及应用》(持续更新)

前言 电子科技大学的数据库课程缩减了部分的课时,因此,可能并不适合所有要学习数据库的宝子们,但是,本人尽量将所有数据库的内容写出来。本文章适用于本科生的期中和期末的复习,电子科技大学的考生请在复习前先看必读…

MySQL相关知识汇总

MySQL是一个广泛使用的开源关系型数据库管理系统,它以其高性能、稳定性和易用性而备受开发者喜爱。在软件开发领域,无论是大型项目还是小型应用,MySQL都扮演着重要的角色。本文将对MySQL的一些关键知识点进行汇总,帮助读者更好地了…

5. informer源码分析-概要分析

k8s client-go k8s informers 实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对 apiserver、对 etcd 的请求压力。Informers 在启动的时候会首先在客户端调用 List 接口来获取全量的对象集…

C++中boost库的安装及使用(Windows)

Boost库的安装及使用 引言使用现有的boost库安装及使用引言 C++开发中经常会用到boost库,本文记录一下Windows上boost在visual studio2019上的使用。 Boost库是一个跨平台的C++库集合,旨在为C++开发者提供一系列高质量的通用功能。不同的Visual Studio(VS)版本并不要求安…

日常科研中经常使用的命令

Linux目录树状结构 1. Windows是磁盘分区,Linux不区分盘符,所有文件都在根目录斜线下面; 2. 根目录显示不同,Linux是一个斜线,而windows是盘符,然后冒号; 3. 分割目录Linux用斜线&#xff0c…

React编写组件时,如何省略.tsx后缀

省略.tsx后缀 当tsconfig.json配置了,需要重启后才会生效 {"compilerOptions": {"allowJs": true,"jsx": "react-jsx",} }当进行以上配置后,导入组件时添加后缀,Eslint报错如下: An im…

【算法集训】基础算法:基础排序 - 冒泡排序

一、基本理解 贴上图解,更容易理解代码:https://visualgo.net/zh/sorting 冒泡排序(Bubble Sort)又称为泡式排序,是一种简单的排序算法。 核心思想: 它重复地走访过要排序的数列,一次比较两个元素,如果它…

性能比较:in和exists

当在Hive SQL中使用NOT IN和NOT EXISTS时,性能差异主要取决于底层数据的组织方式、数据量大小、索引的使用情况以及具体查询的复杂程度。下面是对这两种方法的性能分析: 1. NOT IN:- 工作原理:NOT IN子查询会逐个比较主查询中的值…

化肥工业5G智能制造工厂数字孪生可视化平台,推进化肥行业数字化转型

化肥工业5G智能制造工厂数字孪生可视化平台,推进化肥行业数字化转型。随着科技的不断发展,数字化转型已经成为各行各业发展的必然趋势。在化肥工业领域,5G智能制造工厂数字孪生可视化平台的应用正在逐渐普及,为行业数字化转型提供…

Java 循环结构 - while ,do…while 及 for,

目录 Java中有三种主要的循环结构: while 循环 实例 do…while 循环 实例 for循环 实例 三种循环之间的区别 增强 for 循环 实例 break 关键字 语法 实例 continue 关键字 语法 实例 顺序结构的程序语句只能被执行一次。 如果您想要同样的操作执行…

租用云服务器租时要注意的问题有哪些?

随着云计算的不断发展,对云计算服务器的需求也越来越大。 那么,我们应该如何以正确的态度和方法来选择云服务器呢? 租用云服务器需要注意哪些问题? 1.了解您需要的云服务类型 了解您的云计算需求将使您了解您正在寻求的服务类型…

web运行时安全

1.输入验证 对传递的数据的格式、长度、类型(前端和后端都要)进行校验。 对黑白名单校验:比如前端传递了一个用户名,可以搜索该用户是否在白名单或者黑名单列表。 针对黑名单校验,比如: // 手机号验证…

让两个电脑通信的方法(TCP连接,UDP连接,C/S架构)

目录 TCP-面向连接UDP-面向无连接C/S架构服务器和客户端的工作过程C/S架构例子 让两个电脑通信的方法是 在C/S的基础上,采用TCP和UDP的方式连接 TCP-面向连接 UDP-面向无连接 C/S架构 服务器和客户端的工作过程 C/S架构例子 服务器与客户端通信的过程类似公司与客户…

微信小程序云开发教程——墨刀原型工具入门(添加交互事件)

引言 作为一个小白,小北要怎么在短时间内快速学会微信小程序原型设计? “时间紧,任务重”,这意味着学习时必须把握微信小程序原型设计中的重点、难点,而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

殿堂级Flink源码极精课程预售

一、为什么我们要读源码? 1、让个人技术快速成长: 优秀的开源框架,底层的源码设计思想也非常优秀,同时还有含有大量的设计模式和并发编程技术,优秀的解决方案,熟读源码对猿们技术提升有很大帮助 2、新技术学习能力: Java开源码框架的源码熟读后,若出现…

第一篇:参考资料地址

javaGuide JavaGuide(Java学习&面试指南) | JavaGuide 清华学生总结的 小林coding labuladong labuladong 的算法笔记 | labuladong 的算法笔记 【华仔说技术】kafka的系列文章 https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg3MTcxMDgxNA…

【Datawhale组队学习:Sora原理与技术实战】Sora技术原理

Sora能力边界探索 最大支持60秒高清视频生成,以及基于已有短视频的前后扩展,同时保持人物/场景的高度一致性如奶茶般丝滑过渡的视频融合能力同一场景的多角度/镜头的生成能力具有动态摄像机运动的视频。随着摄像机的移动和旋转,人和其 他场景…

x-pack的破解方式和免费jar包!!可直接用!!

原理介绍 我们平时为es安装x-pack组件,用elasticsearch-plugin install x-pack ,安装成功后。 1.cd $es目录/pulgins/x-pack 里面有一个x-pack-5.6.2.jar ,将jar包反编译,然后将里面的licence的程序改下。再编译成jar包。 2…

通过笔记本桥接打印机组成网络打印机其它电脑与之相连各种问题汇总

根据描述需要一台低配闲置笔记本(有无线网卡),一台普通台式打印机(不带WIFI)就可以组成网络打印机,能省1000块不? 1. 让笔记本安装驱动使其可以打印。 2. 让笔记本上的打印机共享,…