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

将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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

道路三维数字化技术产品方案介绍(软硬件一体,适用于各等级公路)

目录 1、方案介绍2、设备系统简介3、设备系统技术指标4、数据处理软件简介5、数据管理平台简介6、成果展示 1、方案介绍 交通运输部印发《关于推进公路数字化转型加快智慧公路建设发展的意见》&#xff0c;推动公路建设、养护、运营等全流程数字化转型。提出了2027年和2035年的…

Matlab——图像保存导出成好看的.pdf格式文件

点击图像的右上角&#xff0c;点击第一个保存按钮键。

外包离职了,一周面试了20多场,竭尽全力进了字节......

外包离职之后&#xff0c;一周面试了20多场&#xff0c;最后进了字节跳动&#xff0c;分享一些面试经历&#xff0c;希望能对大家有帮助&#xff01; 我的面试感受 先说一个字 是真的 “ 累 ” 安排的太满的后果可能就是经常一天只吃一顿饭&#xff0c;一直奔波在路上 不扯这个…

【Qt之QQuickWidget】QML嵌入QWidget中

由于我项目开始使用Widgets,换公司后直接使用QML开发&#xff0c;没有了解过如何实现widget到qml过渡&#xff0c;恰逢面试时遇到一家公司希望从widget迁移到qml开发&#xff0c;询问相关实现&#xff0c;一时语塞&#xff0c;很尴尬&#xff0c;粗略研究并总结下。 对qwidget嵌…

MATLAB在投资组合优化中的应用:从基础理论到实践

引言 投资组合优化是现代金融理论中的核心问题之一&#xff0c;旨在通过合理配置资产&#xff0c;实现风险与收益的最佳平衡。MATLAB凭借其强大的数学计算能力和丰富的金融工具箱&#xff0c;成为投资组合优化的理想工具。本文将详细介绍如何使用MATLAB进行投资组合优化&#…

【报错解决】vue打开界面报错Uncaught SecurityError: Failed to construct ‘WebSocket‘

问题描述&#xff1a; vue运行时正常&#xff0c;但是打开页面后报错 Uncaught SecurityError: Failed to construct WebSocket: An insecure WebSocket connection may not be initiated from a page loaded over HTTPS. 解决方案&#xff1a; 在项目列表中的public下的ind…

2.3 变量

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 变量是用来存放某个值的数据&#xff0c;它可以表示一个数字、一个字符串、一个结构、一个类等。变量包含名称、类型和值。在代码中…

【学习笔记】Google的Lyra项目:基于神经网络的超低比特率语音编解码技术

一、引言&#xff1a;语音通信的带宽挑战与技术突破 在实时音视频通信占据全球数字化生活核心地位的今天&#xff0c;Google于2021年推出的Lyra编解码器标志着语音编码技术进入新的时代。这款基于机器学习的新型音频编解码器以3kbps的极低比特率实现接近原始音质的语音重建能力…

力扣3464. 正方形上的点之间的最大距离

力扣3464. 正方形上的点之间的最大距离 题目 题目解析及思路 题目要求在points集合中找出k个点&#xff0c;k个点之间的最小的曼哈顿距离的最大值 最大最小值的题一般直接想到二分 将正方形往右展开成一条线&#xff0c;此时曼哈顿距离为两点直线距离**(仅起点右边的点)** …

【Java】多线程和高并发编程(四):阻塞队列(上)基础概念、ArrayBlockingQueue

文章目录 四、阻塞队列1、基础概念1.1 生产者消费者概念1.2 JUC阻塞队列的存取方法 2、ArrayBlockingQueue2.1 ArrayBlockingQueue的基本使用2.2 生产者方法实现原理2.2.1 ArrayBlockingQueue的常见属性2.2.2 add方法实现2.2.3 offer方法实现2.2.4 offer(time,unit)方法2.2.5 p…

Crack SmartGit

感谢大佬提供的资源 一、正常安装SmartGit 二、下载crackSmartGit crackSmartGit 发行版 - Gitee.com 三、使用crackSmartGit 1. 打开用户目录&#xff1a;C:\Users%用户名%\AppData\Roaming\syntevo\SmartGit。将crackSmartGit.jar和license.zip拷贝至 用户目录。 2. 用户…

性能巅峰对决:Rust vs C++ —— 速度、安全与权衡的艺术

??关注&#xff0c;带你探索Java的奥秘&#xff01;?? ??超萌技术攻略&#xff0c;轻松晋级编程高手&#xff01;?? ??技术宝库已备好&#xff0c;就等你来挖掘&#xff01;?? ??订阅&#xff0c;智趣学习不孤单&#xff01;?? ??即刻启航&#xff0c;编…

面试题 - Vue 3 如何优化性能?

面试题 - Vue 3 如何优化性能&#xff1f; 最近&#xff0c;总有小伙伴来问我&#xff0c;在面试时应该如何回答关于优化方面的问题。其实&#xff0c;我们在日常的项目开发中&#xff0c;或多或少都接触过一些优化技巧&#xff0c;只是有时候自己没有特别留意&#xff0c;或者…

easyexcel和poi同时存在版本问题,使用easyexcel导出excel设置日期格式

这两天在使用easyexcel导出excel的时候日期格式全都是字符串导致导出的excel列无法筛选 后来调整了一下终于弄好了&#xff0c;看一下最终效果 这里涉及到easyexcel和poi版本冲突的问题&#xff0c;一直没搞定&#xff0c;最后狠下心来把所有的都升级到了最新版&#xff0c;然…

MTK-Android13-包安装器PackageInstaller 静默安装实现

目的 我们最终是为了搞明白安装的整个流程。一方面通过安卓系统自带的包安装器来了解PMS 安装流程&#xff1b;另一方面熟悉框架层Framework 针对Android apk 安装流程。 前两篇文章分析了PackagerInstaller 安装流程。 Android13-包安装器PackageInstaller-之apk安装跳转 An…

MacOS本地部署Deepseek,不联网也可以使用AI,保护隐私

苹果笔记本本地部署deepseek主要用到Ollama与open-webui 1. 安装Ollama “Ollama” 是一个轻量级的 AI 模型运行时环境&#xff08;runtime&#xff09;&#xff0c;旨在简化在本地部署和使用大语言模型&#xff08;LLM&#xff09;的过程。它由 Vicarious 公司开发&#xff…

Golang笔记——Interface类型

大家好&#xff0c;这里是&#xff0c;关注 公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍Golang的interface数据结构类型&#xff0c;包括基本实现和使用等。 文章目录 Go 语言中的 interface 详解接口定义实现接口空接口 interface{} 示例&…

docker容器网络配置及常用操作

Linux内核实现名称空间的创建 ip netns&#xff08;网络名称空间&#xff09;命令 可以借助ip netns命令来完成对 Network Namespace 的各种操作。ip netns命令来自于iproute安装包&#xff0c;一般系统会默认安装&#xff0c;如果没有的话&#xff0c;请自行安装。 注意&am…

leetcode - hot100 - python - 专题二:双指针

1、移动0 &#xff08;一句话概括题眼&#xff1a;右指针找非0元素&#xff09; 简单 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例…

【玩转 Postman 接口测试与开发2_020】(完结篇)DIY 实战:随书示例 API 项目本地部署保姆级搭建教程(含完整调试过程)

《API Testing and Development with Postman》最新第二版封面 文章目录 最新版《Postman 接口测试与开发实战》示例 API 项目本地部署保姆级搭建教程1 前言2 准备工作3 具体部署3.1 将项目 Fork 到自己名下3.2 创建虚拟环境并安装依赖3.3 初始运行与项目调试 4 示例项目的用法…