本文记录了在 RK3588(Linux)平台上,将自训练的 YOLO11(7 类)模型完整部署到板子上的全过程。
包括:环境搭建、模型转换、PC 验证、C++ Demo 编译、板端运行,以及中途遇到的真实问题和解决方法。
一、整体目标与环境说明
🎯 目标
- 使用自训练的 YOLO11(7 类)
- 在 Linux 系统开发板上
- 使用 RKNN C/C++ Demo 成功推理并生成
out.png
🧰 环境信息
- PC:Ubuntu 虚拟机(VMware)
- Python:3.10(conda 环境)
- RKNN Toolkit:rknn-toolkit2
- 芯片:RK3588(8+64)
- 系统:Linux
- 模型:官方 YOLO11,自训练 7 类
- 注意:rknn toolkit 和 requirements.txt 的依赖都安装在 python 环境里了。(rknn-toolkit2、rknpu2 驱动、rknn-toolkit-lite2、rknn_model_zoo 版本要都是 2.3.0 的,必须一致)
二、模型准备:从 YOLO11 到 ONNX
1️⃣ 自训练 YOLO11
使用的是官方 YOLO11,并在自己的数据集上训练,最终得到 best.pt。
2️⃣ 导出 ONNX 模型
在训练环境中执行。需要用到瑞芯微官方的 pt 转 onnx 项目文件。
打开文件如下:
需要在 ./ultralytics/cfg/default.yaml 中修改自己的权重模型文件路径,也就是之前训练得到的 best.pt。我是直接将训练好的权重文件放在文件夹内的。所以将 default.yaml 中第 8 行文件路径设置如下:
然后在以下路径中找到 exporter.py 文件,运行即可。
最终在根目录下得到对应的 onnx 模型。
将 onnx 模型传输到虚拟机内。至此,在 Windows 上的任务结束。
三、ONNX → RKNN,并在 PC 上验证
本文的安装交叉编译工具链、adbd 服务、更新 npu 驱动、安装 rknn-toolkit2 转换环境可参考相关开发板文档。
本人在安装 rknn-toolkit2 转换环境时,按照推荐流程进行测试,没有成功,按照手册的说法是没有安装 TensorFlow。在安装好该模块后,依旧报错,报错信息如下: 根据查阅相关资料,这里的报错是因为 onnx 的版本过新,而 ml_dtypes 的版本太旧。此处建议卸载原有的 onnx,安装更低版本的。
pip uninstall -y onnx pip install onnx==1.16.0
经过测试,验证成功。
1️⃣ 转换 RKNN 模型
首先,将官方资料中的以下文件拷贝到虚拟机的 software 目录下。
将这两个文件都进行解压,解压到 software 目录下。同时,根据官方手册的提示,将 rknn_model_zoo-2.3.0 的文件夹名称改为 rknn_model_zoo,避免后续出现报错。打开虚拟机终端,进入 modelzoo 目录下,执行权限命令。
cd rknn_model_zoo chmod +x build-linux.sh
将上一节中得到的 onnx 模型拷贝至如下文件夹中,在命令行中输入指令,进入对应文件夹。
cd examples/yolo11/model
在 yolo11 文件夹中可以找到 cpp、model、python 等文件夹。python 文件夹中找到 yolo11.py 并打开。修改 yolo11.py 中关于类别与类别数的代码。
打开 python 文件夹,进入命令行页面,进入 python 环境。在命令行中输入。(表示执行 convert.py 的代码,使用的模型为之前拷贝进 model 文件夹中的 yolo11.onnx,对象为 rk3588,i8 指转换模型的量化精度)


