1. 环境说明
需要用到 airockchip 提供的三个库, ultralytics_yolov8、rknn_model_zoo、rknn-toolkit2
链接: https://github.com/airockchip
-
- ultralytics_yolov8
瑞芯微官方根据对应平台进行优化过的。
- ultralytics_yolov8
-
- rknn_model_zoo
功能:瑞芯微官方维护的模型仓库,包含预优化的深度学习模型(如 YOLOv5/YOLOv8、MobileNet、ResNet 等)。
核心特点:
模型已针对瑞芯微 NPU(如 RK3588、RK3568)进行量化和优化。
提供 Python 和 C++ 推理示例代码。
包含模型转换脚本,支持从 ONNX/TensorFlow 转为 RKNN 格式。
- rknn_model_zoo
-
- rknn-toolkit2
功能:瑞芯微提供的模型转换和推理工具包,用于将标准深度学习模型(如 ONNX、TensorFlow)转换为 RKNN 格式并在 NPU 上运行。
核心特点:
支持 INT8/FP16 量化,提升推理速度。
提供 Python 和 C++ API,方便集成到应用中。
包含模型性能分析工具(如内存占用、推理时间)。
- rknn-toolkit2
2. pt模型转换onnx
2.1 下载ultralytics_yolov8
https://github.com/airockchip/ultralytics_yolov8
2.2 依赖安装
这里将 ultralytics_yolov8-main 重命名为 ultralytics_yolov8-rknn, 使用vscode打开。
项目的pyproject.toml 中已经定义了相关依赖, 直接安装即可。
我这里使用的是anaconda python3.10环境,可根据自己环境安装即可。
# 依赖安装
pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple
2.3 yolov8 pt模型转 onnx
将之前训练好的yolov8 模型放到上述瑞芯微提供的ultralytics_yolov8-rknn下, 在终端执行转化命令:
yolo export model=模型名称.pt format=rknn
若报错:
缺少ONNX库,安装一下即可:
pip install onnx -i https://pypi.tuna.tsinghua.edu.cn/simple
执行完后会在项目根目录下生成onnx模型。
3. onnx 模型转 rknn模型
3.1 rknn-toolkit 安装
3.1.1 下载
https://github.com/airockchip/rknn-toolkit2
需要准备pc虚拟机,这里使用ubuntu20.04, 下载上述工具包上传到ubuntu虚拟机或者直接使用git clone, 这里使用的是 2.3.0版本
或者: git clone https://github.com/airockchip/rknn-toolkit2 -b v2.3.0
3.1.2 安装
# 创建一个虚拟环境,这里使用anaconda 管理python环境
conda create -n rknn-tk2-py310 python=3.10
# 激活环境
conda activate rknn-tk2-py310
进入上述下载的 rknn-toolkit2/rknn-toolkit2/packages/x86_64 目录
执行安装:
# 先安装依赖
pip install -r requirements_cp310-2.3.0.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
# 安装 安装rknn-toolkit2工具
pip install rknn_toolkit2-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
上述两部安装后转rknn模型工具环境就已经安装完成了
3.2 模型转换
- rknn_model_zoo 下载
根上述一样直接下载zip传入ubuntu pc解压或者直接使用git clone, 版本和之前的rknn-toolkit保持一致。
git clone https://github.com/airockchip/rknn_model_zoo.git -b v2.3.0
- 模型转化
进入 rknn_model_zoo/examples/yolov8/python 目录下, 将之前转过的 onnx上传到次目录下,执行:
python convert.py yolov8n.onnx rk3588
完成后可在上一级目录下找到,或者自定义输出位置,在convert.py中修改:
4. 板端部署
4.1 更新NPU驱动
根据之前下载的rknn-toolkit2/doc/rknn_server_proxy.md 说明,只需要将对应的动态库和文件更新到开发板即可。如果使用文档中adb 更新的话请自行配置adb环境。
4.2 安装RKNNToolkitLite2
RKNNToolkitLite2为RockchipNPU平台提供Python编程接口,帮助用户部署RKNN模型。
- 查看开发板python 版本
从linux虚拟机推送对应的安装文件到开发板:
adb push rknn-toolkit2/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl /home/orangepi/rknn-toolkit
传输完成后在开发板安装:
因为有python2和python3 两个版本的,所以指定使用3版本的pip
python3 -m pip install rknn_toolkit_lite2-2.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
上述安装完成后就可以在开发按官方示例来测试了。
4.3 部署测试
参考瑞芯微官方示例部署到开发板:
https://github.com/airockchip/rknn_model_zoo
上述yolov8示例是基于RKNNToolkit而非RKNNToolkitLite2,可参考RKNNToolkitLite2下的example进行对应修改。
https://github.com/airockchip/rknn-toolkit2/tree/master/rknn-toolkit-lite2/examples