因为Omni3576搭载了Rockchip RK3576处理器,该处理器采用先进的8nm制程工艺,集成了6 TOPS算力的 NPU。NPU跟RK3588一致,所以这款Omni3576必须试试AI相关功能。
一、RKNN简介
RKNN-Toolkit2工具在 PC 平台上提供 C 或 Python 接口,简化模型的部署和运行。用户可以通过该工具轻松完成以下功能:模型转换、量化、推理、性能和内存评估、量化精度分析以及模型加密。RKNN 软件栈可以帮助用户快速的将 AI 模型部署到 Rockchip 芯片。整体的框架如下:

为了使用 RKNPU,首先需要在计算机(最新的Kit支持X86和ARM,也就是说基本上可以在Omni3576部署RKNN-Toolkit2工具)上运行 RKNN-Toolkit2工具,将训练好的模型转换为 RKNN 格式模型,之后使用 RKNN C API或 Python API在开发板上进行部署。
二、RKNN-Toolkit2工具部署
本人在WSL(Ubuntu22.04 x64)上部署RKNN-Toolkit2工具,其内置python版本为3.12,因为版本新,踏了好几个坑。
Python 3.12.3 (main, Feb 4 2025, 14:48:35) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
(一)下载
下述命令从github下载rknn-toolkit2,大约8G。
git clone https://github.com/airockchip/rknn-toolkit2.git
(二)安装依赖包
pip3 install -r rknn-toolkit2/packages/x86_64/requirements_cp312-2.2.0.txt --break-system-packages -i https://mirrors.aliyun.com/pypi/simple/
**坑1:**因为 Python 3.11+ 引入了外部管理环境 (externally-managed environment) 的概念,用于阻止用户直接在系统 Python 环境中安装第三方包。解决这个问题的方式很多种,本文直接采用了一种比较暴力的方式--break-system-packages;
**坑2:**新的rknn-toolkit2工具包增加了对ARM64的支持,所以在packages/目录下增加了2个文件夹,一个arm64,一个x86_64,在安装依赖的时候记得加上文件夹,否则找不到依赖文件的txt。
跳过了2个坑,终于完成全部依赖安装:

查看下pip的包:
root@Think:~$ pip list
Package Version
attrs 23.2.0
Automat 22.10.0
Babel 2.10.3
bcrypt 3.2.2
blinker 1.7.0
certifi 2023.11.17
chardet 5.2.0
click 8.1.6
cloud-init 24.4.1
colorama 0.4.6
coloredlogs 15.0.1
command-not-found 0.3
configobj 5.0.8
constantly 23.10.4
cryptography 41.0.7
dbus-python 1.3.2
distro 1.9.0
distro-info 1.7+build1
fast-histogram 0.14
filelock 3.18.0
flatbuffers 25.2.10
fsspec 2025.5.0
httplib2 0.20.4
humanfriendly 10.0
hyperlink 21.0.0
idna 3.6
incremental 22.10.0
Jinja2 3.1.2
jsonpatch 1.32
jsonpointer 2.0
jsonschema 4.10.3
launchpadlib 1.11.0
lazr.restfulclient 0.14.6
lazr.uri 1.0.6
markdown-it-py 3.0.0
MarkupSafe 2.1.5
mdurl 0.1.2
mpmath 1.3.0
netifaces 0.11.0
networkx 3.4.2
numpy 1.26.4
nvidia-cublas-cu12 12.1.3.1
nvidia-cuda-cupti-cu12 12.1.105
nvidia-cuda-nvrtc-cu12 12.1.105
nvidia-cuda-runtime-cu12 12.1.105
nvidia-cudnn-cu12 9.1.0.70
nvidia-cufft-cu12 11.0.2.54
nvidia-curand-cu12 10.3.2.106
nvidia-cusolver-cu12 11.4.5.107
nvidia-cusparse-cu12 12.1.0.106
nvidia-nccl-cu12 2.20.5
nvidia-nvjitlink-cu12 12.9.41
nvidia-nvtx-cu12 12.1.105
oauthlib 3.2.2
onnx 1.18.0
onnxruntime 1.22.0
opencv-python 4.11.0.86
packaging 25.0
pip 24.0
protobuf 4.25.4
psutil 7.0.0
pyasn1 0.4.8
pyasn1-modules 0.2.8
pycurl 7.45.3
Pygments 2.17.2
PyGObject 3.48.2
PyHamcrest 2.1.0
PyJWT 2.7.0
pyOpenSSL 23.2.0
pyparsing 3.1.1
pyrsistent 0.20.0
pyserial 3.5
python-apt 2.7.7+ubuntu4
pytz 2024.1
PyYAML 6.0.1
requests 2.31.0
rich 13.7.1
rknn-toolkit2 2.3.2
ruamel.yaml 0.18.10
ruamel.yaml.clib 0.2.12
scipy 1.15.3
service-identity 24.1.0
setuptools 68.1.2
six 1.16.0
sympy 1.14.0
systemd-python 235
torch 2.4.0
tqdm 4.67.1
triton 3.0.0
Twisted 24.3.0
typing_extensions 4.10.0
ubuntu-pro-client 8001
unattended-upgrades 0.1
urllib3 2.0.7
wadllib 1.3.6
wheel 0.42.0
zope.interface 6.1
(三)安装RKNN-ToolKit2
RKNN-ToolKit2的whl文件就在步骤(一)下载好了,执行如下命令:
pip3 install rknn-toolkit2/packages/x86_64/rknn_toolkit2-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl --break-system-packages
安装好后会有如下提示:
Installing collected packages: rknn-toolkit2
Successfully installed rknn-toolkit2-2.3.2
也可以py看看是否出错,若无则OK:

三、rknn_model_zoo下载安装
rknn_model_zoo 是瑞芯微官方提供的 RKNPU 支持的各种主流算法的部署示例,最新的示例支持 mobilenet 模型部署和 yolo 模型部署,直接依托rknn_model_zoo部署 yolov10。
(一)下载ZOO
直接从github下载rknn_model_zoo,文件不大,几百M。
git clone https://github.com/airockchip/rknn_model_zoo.git
(二)下载模型
执行如下命令下载ONNX模型用于转换。
chmod a+x download_model.sh
./download_model.sh

(三)模型转换
RKNN 模型转换是将通用深度学习模型(如 TensorFlow、PyTorch、ONNX 等)转换为 Rockchip 芯片(如 RK3568、RK3588 等)专用推理格式的过程。执行如下命令将ONNX模型转换成RKNN模型。
python3 convert.py ../model/yolov10n.onnx rk3576

默认转换好的模型放在../model/下。
四、应用构建编译
RKNN-Toolkit2工具包带有CPP和python版本demo,先用cpp试试,虽然比较喜欢python。
(一)交叉环境
RK3576是ARM64框架,直接WSL中安装对应的的编译器。
sudo apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
安装好了后再验证下:
aarch64-linux-gnu-gcc --version
aarch64-linux-gnu-gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
设置环境变量,用于下步应用编译。
export GCC_COMPILER=/usr/bin/aarch64-linux-gnu
(二)应用编译
执行 rknn_model_zoo 目录下的 build-linux.sh 脚本,生成可执行程序。

交叉编译完成后在rknn_model_zoo目录下会生成一个install目录,包含编译出来的程序和库文件,可以看看输出文件:
file install/rk3576_linux_aarch64/rknn_yolov10_demo/rknn_yolov10_demo
install/rk3576_linux_aarch64/rknn_yolov10_demo/rknn_yolov10_demo: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=79627693334711274cf7fc2df9172d87998830ef, for GNU/Linux 3.7.0, not stripped
五、测试运行
将可执行文件、RKNN库以及labels_list文件还有测试jpg文件传输到Omni3576开发板。
测试的图片如下:

执行./rknn_yolov10_demo yolov10.rknn bus.jpg命令,相关信息都打印出来了。

最后,生成的out文件如下:

一点感受:RKNN SDK工具还是很丰富,应用部署起来比较简单快捷,第一次使用总体感觉不错。
【收尾】