4. RKNN Toolkit Lite2介绍¶
RKNN Toolkit Lite2 是Rockchip NPU平台的编程接口(Python),用于在板端部署RKNN模型。
本章将简单介绍下使用Toolkit Lite2使用流程和板卡上部署示例。
4.1. Toolkit Lite2安装¶
Toolkit-lite2适用于板卡端部署模型,更多依赖和使用信息请查看下 Rockchip_RKNPU_User_Guide_RKNN_SDK
板卡上获取RKNN Toolkit Lite2,可以直接从 官方github 或者从配套例程中获取:
环境安装(以LubanCat 2,Debian10为例):
#安装python工具,安装相关依赖和软件包等
sudo apt update
sudo apt-get install python3-dev python3-pip gcc
sudo apt install -y python3-opencv python3-numpy python3-setuptools
Toolkit Lite2工具安装(从下载的whl文件安装):
git clone https://github.com/airockchip/rknn-toolkit2.git --depth 1
# 进入到rknn_toolkit_lite2目录下
cd rknn_toolkit_lite2/
# 根据板卡系统的python版本,选择Debian10 ARM64 with python3.7.3的whl文件安装
# 例如 debian10 python3.7
pip3 install packages/rknn_toolkit_lite2-2.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
# 例如 debian11 python3.9
pip3 install packages/rknn_toolkit_lite2-2.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
# 最新版本也支持直接pip命令安装
pip3 install rknn-toolkit-lite2
安装成功:
# 以debian11系统,python3.9为例:
cat@lubancat:~/rknn-toolkit2/rknn_toolkit_lite2$ python3
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from rknnlite.api import RKNNLite
>>>
如果是ubuntu24.04/debian12等较新发行版系统,推荐使用虚拟环境管理:
# 确保已安装 venv 模块
sudo apt install python3-venv
# 在项目目录下创建虚拟环境
python3 -m venv .venv
# 激活虚拟环境
source .venv/bin/activate
# 正常使用 pip rknn_toolkit_lite2
pip install rknn-toolkit-lite2
# 测试完成退出虚拟环境
deactivate
4.2. Toolkit Lite2接口使用¶
Toolkit Lite2主要用于部署RKNN模型到板卡,可以通过RKNN Toolkit2工具将其他模型转换为RKNN模型。 Toolkit Lite2部署RKNN模型流程:
创建RKNNLite对象;
调用load_rknn接口导入RKNN模型,需要对应平台(rk356x/rk3588)的模型;
调用init_runtime接口初始化运行时环境;
调用inference接口对输入数据进行推理,返回推理结果,对结果进行处理;
推理完成后,调用release接口释放RKNNLite对象。
RKNN Toolkit Lite2详细的接口说明参考下RKNN-Toolkit2工程中rknn_toolkit_lite2/docs目录下的用户手册。
4.3. 板端推理测试¶
板端推理测试,会调用librknnrt.so库,该库是一个板端的runtime库。默认板卡镜像/usr/lib目录下有librknnrt.so库, 如果需要更新请从 rknpu2文件 中获取。
也可以从 云盘资料 (提取码hslu),下载Toolkit2工程文件,切换到rknpu2目录下获取:
librknnrt.so具体在 rknpu2 工程中runtime/目录下, Linux系统选择runtime/Linux/librknn_api/aarch64/目录下的librknnrt.so, 然后复制该库到板卡系统/usr/lib/目录下。
重要
注意RKNN-Toolkit2和RKNPU2 runtime库不同版本号可能会不兼容,可能会出现 Invalid RKNN model verslon 6 等错误,
请使用相同的版本。
4.3.1. resnet18推理测试¶
运行RKNN Toolkit Lite2的Demo,进入获取到的Toolkit Lite2目录,在../examples/resnet18目录下执行命令:
# 从配套例程获取,或者从官方github获取
git clone https://gitee.com/LubanCat/lubancat_ai_manual_code.git --depth 1
# git clone https://github.com/rockchip-linux/rknn-toolkit2.git --depth 1
# 切换到rknn_toolkit_lite2/examples/inference_with_lit目录下
cd lubancat_ai_manual_code/dev_env/rknn_toolkit_lite2/examples/resnet18
# 安装opencv,这里安装并不使用桌面环境版本(无GUI)
pip3 install opencv-python-headless
# 运行推理命令(下面是在lubancat-4板卡上测试)
cat@lubancat:~/rknn_toolkit_lite2/examples/resnet18$ python3 test.py
--> Load RKNN model
done
--> Init runtime environment
I RKNN: [11:22:39.538] RKNN Runtime Information, librknnrt version: 2.3.2 (429f97ae6b@2025-04-09T09:09:27)
I RKNN: [11:22:39.538] RKNN Driver Information, version: 0.9.8
I RKNN: [11:22:39.538] RKNN Model Information, version: 6, toolkit version: 2.3.2(compiler version: 2.3.2 (839b70f037@2025-04-03T10:34:04)),
target: RKNPU v2, target platform: rk3588, framework name: PyTorch, framework layout: NCHW, model inference type: static_shape
W RKNN: [11:22:39.557] query RKNN_QUERY_INPUT_DYNAMIC_RANGE error, rknn model is static shape type, please export rknn with dynamic_shapes
W Query dynamic range failed. Ret code: RKNN_ERR_MODEL_INVALID. (If it is a static shape RKNN model, please ignore the above warning message.)
done
--> Running model
resnet18
-----TOP 5-----
[812] score:0.999680 class:"space shuttle"
[404] score:0.000249 class:"airliner"
[657] score:0.000013 class:"missile"
[466] score:0.000009 class:"bullet train, bullet"
[895] score:0.000008 class:"warplane, military plane"
done
测试例程,会根据板卡(上面测试是在LubanCat-4板卡),使用对应平台的RKNN模型,使用opencv读取./space_shuttle_224.jpg图片,然后初始化运行,设置输入, 推理程序,获取推理结果,然后经过后处理后打印输出。
4.3.2. yolov5推理测试¶
yolov5测试使用的模型,请参考 前面章节 导出对应平台的模型, 例如教程测试Lubancat-4,设置导出rk3588目标平台的模型。
和前面例程一样获取源码,切换到yolov5_inference目录,然后测试程序test.py,该例程和前面Toolkit2上模拟推理逻辑相同,只是api接口不同。
# 切换到rknn_toolkit_lite2/examples/yolov5_inference目录下
cd lubancat_ai_manual_code/dev_env/rknn_toolkit_lite2/examples/yolov5_inference
# 修改test.py中的图像和模型路径,默认都是在当前目录下文件,请根据自己设备的实际路径
RK3566_RK3568_RKNN_MODEL = 'yolov5s_for_rk3566_rk3568.rknn'
RK3588_RKNN_MODEL = 'yolov5s_relu.rknn'
RK3562_RKNN_MODEL = 'yolov5s_for_rk3562.rknn'
RK3576_RKNN_MODEL = 'yolov5s_for_rk3576.rknn'
IMG_PATH = './bus.jpg'
# 推理测试
cat@lubancat:~/xxx/rknn_toolkit_lite2/examples/yolov5_inference$ python test.py
--> Load RKNN model
done
--> Init runtime environment
I RKNN: [15:22:04.855] RKNN Runtime Information, librknnrt version: 2.3.2 (429f97ae6b@2025-04-09T09:09:27)
I RKNN: [15:22:04.855] RKNN Driver Information, version: 0.9.8
I RKNN: [15:22:04.855] RKNN Model Information, version: 6, toolkit version: 2.3.2(compiler version: 2.3.2 (e045de294f@2025-04-07T19:48:25)),
target: RKNPU v2, target platform: rk3588, framework name: ONNX, framework layout: NCHW, model inference type: static_shape
W RKNN: [15:22:04.879] query RKNN_QUERY_INPUT_DYNAMIC_RANGE error, rknn model is static shape type, please export rknn with dynamic_shapes
W Query dynamic range failed. Ret code: RKNN_ERR_MODEL_INVALID. (If it is a static shape RKNN model, please ignore the above warning message.)
done
--> Running model
done
class score xmin, ymin, xmax, ymax
--------------------------------------------------
person 0.884 [ 209, 244, 286, 506]
person 0.868 [ 478, 238, 559, 526]
person 0.825 [ 110, 238, 230, 534]
person 0.339 [ 79, 354, 122, 516]
bus 0.705 [ 94, 129, 553, 468]
运行正常可以显示(或者查看输出图片out.jpg):
默认配套例程yolov5_inference/test.py是没有使用cv2.imshow()显示图片,可以自行查看out.jpg。
