1. 环境搭建与模型转换初体验

任务目标

在RK3588开发板上完成RKNN-Toolkit2 Lite环境的安装,并将一个YOLOv5s的ONNX模型转换为RKNN格式,验证模型转换的基本流程是否畅通。

环境准备

RK3588开发板预装Ubuntu 20.04/22.04系统,Python版本需为3.8~3.11。RKNN-Toolkit2 Lite版直接运行在开发板CPU上,无需额外连接PC。转换过程依赖ONNX模型文件,本案例使用YOLOv5s官方导出的onnx模型作为输入。

安装RKNN-Toolkit2 Lite

# 安装系统依赖
sudo apt-get update
sudo apt-get install -y python3-dev python3-pip

# 安装RKNN-Toolkit2 Lite(以x86_64板端为例,ARM64请使用对应whl)
pip install rknn-toolkit2-2.3.0-cp310-cp310-linux_x86_64.whl

# 验证安装
python3 -c "from rknn.api import RKNN; print('RKNN-Toolkit2 OK')"

若开发板为ARM64架构,需从Rockchip官方仓库获取对应的rknn_toolkit2-{version}-cp{pyver}-cp{pyver}-linux_aarch64.whl安装包。安装完成后,上述验证命令应输出RKNN-Toolkit2 OK。

模型转换完整代码

创建convert_yolov5.py,内容如下:

import os
from rknn.api import RKNN

# 配置输入模型路径
ONNX_MODEL = 'yolov5s.onnx'
RKNN_MODEL = 'yolov5s.rknn'

# 创建RKNN对象
rknn = RKNN()

# 配置模型输入信息(与YOLOv5导出时一致)
rknn.config(
    mean_values=[[0, 0, 0]],
    std_values=[[255, 255, 255]],
    target_platform='rk3588'
)

# 加载ONNX模型
ret = rknn.load_onnx(model=ONNX_MODEL)
if ret != 0:
    print('模型加载失败')
    exit(ret)

# 构建RKNN模型
ret = rknn.build(do_quantization=False)
if ret != 0:
    print('模型构建失败')
    exit(ret)

# 导出RKNN模型
ret = rknn.export_rknn(RKNN_MODEL)
if ret != 0:
    print('模型导出失败')
    exit(ret)

# 释放资源
rknn.release()
print('转换完成,已生成:', RKNN_MODEL)

运行与验证

# 执行转换脚本
python3 convert_yolov5.py

验证通过条件:

  1. 脚本执行无报错,输出转换完成,已生成: yolov5s.rknn;
  2. 当前目录下生成yolov5s.rknn文件,且文件大小大于0;
  3. 使用ls -lh yolov5s.rknn查看文件属性,确认文件存在且非空。

常见问题

  • whl安装失败:确认Python版本与whl文件名中的cp版本匹配,使用python3 --version检查。
  • 模型加载报错:确认ONNX模型路径正确,且模型为YOLOv5导出的标准格式。若使用其他版本YOLOv5,需调整config中的mean_values和std_values。
  • build阶段内存不足:转换过程约需2GB内存,关闭其他大型应用后重试。