当前位置: 首页 > article >正文

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


http://www.kler.cn/a/565045.html

相关文章:

  • 【Day48 LeetCode】图论问题 Ⅵ
  • Vue-Flow绘制流程图(Vue3+ElementPlus+TS)简单案例
  • 【C++教程】布尔类型
  • python量化交易——金融数据管理最佳实践——qteasy创建本地数据源
  • 8.Dashboard的导入导出
  • 打破关节动力桎梏!杭州宇树科技如何用“一体化设计”重塑四足机器人性能?
  • MFC获取所有硬件厂商和序列号
  • 如何搭建和管理 FTP 服务器
  • 【精】使用 Apktool 反编译 APK 并重新签名的详细教程
  • es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗?
  • JVM 面试
  • GEO数据结构
  • DeepSeek 开源狂欢周(一)FlashMLA:高效推理加速新时代
  • vue从入门到精通(十六):自定义指令
  • 神经网络中感受野的概念和作用
  • 浅谈C++/C命名冲突
  • 跟着AI学vue第十一章
  • 面试JAVA集合常用方法总结
  • 微芯-AVR内核单片机
  • android 新增native binder service 方式(一)