ONNX转RKNN的环境搭建和部署流程

news/2025/2/25 6:52:31

将ONNX模型转换为RKNN模型的过程记录

工具准备

rknn-toolkit:https://github.com/rockchip-linux/rknn-toolkit
rknn-toolkit2:https://github.com/airockchip/rknn-toolkit2
rknn_model_zoo:https://github.com/airockchip/rknn_model_zoo
ultralytics_yolov8:https://github.com/airockchip/ultralytics_yolov8

这里存在一个需要注意的地方,rknn-toolkit2包里包含了rknn-toolkit2,而rknn-toolkit并不包含rknn-toolkit需要的package需要手动下载rknn-toolkit-v1.7.5-packages.zip

环境安装

rknn-toolkit:
  1. 新建requirements.txt
# conda create -n rknn1 python==3.8
# pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
numpy==1.19.5
protobuf==3.13.0
flatbuffers==1.10
requests==2.22.0
psutil==5.6.2
ruamel.yaml==0.15.81
scipy==1.4.1
tqdm==4.63.0
bfloat16==1.1
opencv-python==4.5.1.48
onnx==1.10.0
onnxoptimizer==0.3.13
onnxruntime==1.9.0
torch==1.10.1
torchvision==0.11.2
tensorflow==2.6.2
mxnet==1.5.0

  1. cd到下载好的packagepip install rknn_toolkit-1.7.5-cp38-cp38-linux_x86_64.whl
rknn-toolkit2:
  1. cd rknn-toolkit2-master/rknn-toolkit2/packages/x86_64
  • pip install -r requirements_cp38-2.3.0.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
  • pip install rknn_toolkit2-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

这里基本就完成了环境搭建想要验证可以测试from rknn.api import RKNN是否成功

pt模型转为onnx

  • 最好使用官方提供的yolov8仓库进行转换,否则量化会出现问题,具体解释参考这里YOLOv8部署至RK3588就不细说了。

这里我们配置好了环境并且得到了对应任务的onnx模型

Yolov8-OBB为例

1.修改convert.py指定数据路径和保持模型名称、以及是否启动量化
在这里插入图片描述
2. 执行命令python examples/yolov8_obb/python/convert.py yolov8n-obb_rknn.onnx rk3588
在这里插入图片描述
3. 测试是否成功可以运行examples/yolov8_obb/python/yolov8_obb.py

不同工具差异

  • 支持平台不同
    rknn-toolkit:rv1109、rv1126、rk1806、rk1808
    rknn-toolkit2:rv1103、rv1106、rk2118、rk3562、rk3562、rk3566、rk3568、rk3588
  • onnx
    rknn-toolkit:onnx的opset_version<=12
    rknn-toolkit2:貌似更高一些支持到19(未验证)
    总之这里存在一些内部底层的问题,同样的模型有的型号就可以转换成功,有的就不行,应该是rknn内部对不同的平台优化也有差异导致。

板子部署

参考1
参考2


http://www.niftyadmin.cn/n/5865117.html

相关文章

解锁CSnakes:.NET与Python的融合魔法

一、引言 在软件开发的广袤领域中&#xff0c;我们常常面临各种复杂的业务需求和技术挑战。不同的编程语言犹如各具特色的工具&#xff0c;它们在不同的场景下展现出独特的优势。例如&#xff0c;C# 以其强大的类型系统和丰富的类库&#xff0c;在企业级应用开发中占据重要地位…

【JavaWeb学习Day19】

Tlias智能学习系统&#xff08;员工管理&#xff09; 删除员工&#xff1a; 需求分析&#xff1a; 其实&#xff0c;删除单条数据也是一种特殊的批量删除&#xff0c;所以&#xff0c;删除员工的功能&#xff0c;我们只需要开发一个接口就行了。 三层架构&#xff1a; Cont…

Oracle Fusion Middleware更改weblogic密码

前言 当用户忘记weblogic密码时&#xff0c;且无法登录到web界面中&#xff0c;需要使用服务器命令更改密码 更改方式 1、备份 首先进入 weblogic 安装目录&#xff0c;备份三个文件&#xff1a;boot.properties&#xff0c;DefaultAuthenticatorInit.ldift&#xff0c;Def…

【Microsoft PowerPoint for Mac】2分钟配置-MAC一键删除PPT中的所有备注

MAC一键删除PPT中的所有备注 1.搜索自动操作2.点击快速操作3.搜索并运行AppleScript4.输入代码&#xff0c;并选择只应用于Microsoft PowerPoint for Mac【右上角】5. CRTLS保存为“清除当前文稿中的所有备注”&#xff0c;PPT中应用。 MAC没自带&#xff0c;需要自己配置 1.搜…

Tag标签的使用

一个非常适合运用在vue项目中的组件&#xff1a;Tag标签。 目录 一、准备工作 1、安装element-plus库 2、配置element-plus库 二、Tag标签入门 1、打开element官网&#xff0c;搜索tag标签 2、体验Tag标签的基础用法 三、Tag标签进阶训练1 1、定义一个数组&#xff0c;…

分库分表中间件开源

根据你的需求&#xff0c;以下是一些可以实现分库分表功能的中间件&#xff0c;这些项目可以帮助你管理分布式数据库环境中的数据分片和路由&#xff1a; 1. ShardingSphere ShardingSphere 是一个开源的分布式数据库中间件&#xff0c;提供了分库分表、读写分离、分布式事务…

如何解决 Django 网站登录人数过多导致的性能问题

引言 随着用户量的增加,Django 开发的网站可能会面临登录人数过多导致的性能问题。这些问题可能包括数据库压力大、响应时间变长、服务器负载过高等。本文将详细分析这些问题的根源,并提供一系列解决方案,帮助你优化 Django 网站的性能。 1. 问题分析 当登录人数过多时,D…

clickhouse--表引擎的使用

表引擎决定了如何存储表的数据。包括&#xff1a; 数据的存储方式和位置&#xff0c;写到哪里以及从哪里读取数据。(默认是在安装路径下的 data 路径)支持哪些查询以及如何支持。&#xff08;有些语法只有在特定的引擎下才能用&#xff09;并发数据访问。索引的使用&#xff0…