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
验证通过条件:
- 脚本执行无报错,输出
转换完成,已生成: yolov5s.rknn; - 当前目录下生成
yolov5s.rknn文件,且文件大小大于0; - 使用
ls -lh yolov5s.rknn查看文件属性,确认文件存在且非空。
常见问题
- whl安装失败:确认Python版本与whl文件名中的cp版本匹配,使用
python3 --version检查。 - 模型加载报错:确认ONNX模型路径正确,且模型为YOLOv5导出的标准格式。若使用其他版本YOLOv5,需调整
config中的mean_values和std_values。 - build阶段内存不足:转换过程约需2GB内存,关闭其他大型应用后重试。