RK3566 搭建 RKNN-Toolkit2 环境笔记
在基于瑞芯微 RK3566 / RK3568 等芯片(如立创·泰山派、Radxa、鲁班猫)进行边缘 AI 应用开发时,官方的 NPU 工具链主要基于 RKNN-Toolkit2。初学者在刚接触该生态时,极易对官方仓库中多个形态各异的包产生混淆。
在动手部署前,必须首先厘清三者的核心分工与运行位置:
| 组件名称 | 运行环境 | 主要职责与定位 |
|---|---|---|
| rknn-toolkit2 | PC 端(x86_64 Linux) | 模型转换(ONNX/PyTorch/TF 转 .rknn)、量化、PC 端仿真、通过 USB/ADB 远程调试板端 NPU。严禁/无法在 RK3566 开发板上安装! |
| rknpu2 | RK3566 板端(aarch64) | 板端底层 NPU 运行时库,提供 C API(rknn_api.h)、动态库 librknnrt.so 及调试服务 rknn_server,用于 C/C++ 推理。 |
| rknn-toolkit-lite2 | RK3566 板端(aarch64) | 板端专用的 Python 推理库,仅支持加载运行已转换好的 .rknn 格式模型,不具备模型转换与量化功能。 |
官方统一仓库地址:https://github.com/airockchip/rknn-toolkit2
本文将完整记录“PC 端转换环境搭建 $\to$ RK3566 板端驱动检查 $\to$ C++ 运行时部署 $\to$ 板端 Python lite2 推理环境配置”的端到端落地流程。
整体工作流概览
$$\begin{aligned}
\text{【PC 端 x86_64】}&: \text{ONNX / PyTorch 模型} \xrightarrow[\text{指定 target=”rk3566”}]{\text{rknn-toolkit2 转换与量化}} \text{.rknn 模型文件} \
&\quad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\downarrow \text{拷贝至板端} \
\text{【板端 RK3566】}&: \begin{cases}
\text{C/C++ 工程} \longrightarrow \text{引入 rknn_api.h,链接 librknnrt.so} \
\text{Python 工程} \longrightarrow \text{通过 rknn-toolkit-lite2 加载并执行推理}
\end{cases}
\end{aligned}$$
一、PC 端(x86_64 Ubuntu)安装 rknn-toolkit2
⚠️ 红线提示:
rknn-toolkit2的完整包仅支持 x86_64 架构的 Linux/Windows 系统,千万不要尝试在板子(aarch64)上安装它。
1.1 拉取官方仓库
建议使用 --depth 1 浅克隆以节省网络流量与磁盘空间:
1 | |
1.2 创建隔离的 Python 环境
推荐使用 Python 3.8(官方支持与兼容最成熟):
1 | |
1.3 安装依赖与 Wheel 安装包
进入 x86_64 包目录安装依赖与 whl 本体:
1 | |
1.4 PC 端验证
在 Python 终端中导入验证:
1 | |
在导出模型时,必须显式指定目标芯片平台为 rk3566:
1 | |
二、RK3566 板端准备工作
在 RK3566 开发板(如泰山派、Radxa、鲁班猫等)上执行。
2.1 检查并开启板端 NPU 驱动
首先检查系统内核是否已经加载了 rknpu 驱动:
1 | |
- 若看到类似
[rknpu]: driver version: ...等输出,说明内核驱动已就绪。 - 若驱动未启用(例如部分 Radxa 系统):
1
2
3sudo rsetup
# 进入 Overlays -> Manage overlays -> 开启 Enable NPU,保存并重启
sudo reboot - 若使用官方 APT 源自带 NPU 运行时包(如部分 Radxa OS):
1
2sudo apt update
sudo apt install -y rknpu2-rk356x
2.2 安装板端基础依赖
1 | |
三、部署 rknpu2(板端 C/C++ 运行时)
无论是运行 C/C++ 程序还是后续运行 Python 推理库,底层都依赖 librknnrt.so。
在仓库中的源码目录结构如下:
1 | |
方式 A:通过 PC 端 adb 直接推送到板端(适合调试)
在 PC 端终端执行:
1 | |
方式 B:在板端直接下载/部署(推荐独立开发使用)
直接在板端拉取仓库并部署:
1 | |
⚠️ 架构选库说明:
RK3566 / RK3568 属于标准 ARM aarch64 架构,使用的动态库名称为 **librknnrt.so**。切勿拷贝 RV 系列(如 RV1109/RV1126 使用的librknnmrt.so)。
四、板端安装 rknn-toolkit-lite2(Python 推理库)
⚠️ 提示:
rknn-toolkit-lite2专用于板端运行推理,不具备模型转换功能。
4.1 安装对应 Python 版本的 Wheel 包
建议结合前文构建的独立 Python 虚拟环境(如 RK3566 Ubuntu26.04 安装 Python3.12)或系统默认 Python:
1 | |
也可以直接通过 pip 在线源安装(需确保源中有匹配平台构型的 wheel):
1 | |
4.2 板端最小推理验证
编写简单的验证脚本,加载 PC 端转换好拷贝过来的 .rknn 模型测试:
1 | |
五、与硬件加速流水线的衔接(MPP + RGA + RKNN)
至此,RK3566 平台上的视觉处理三大件已全部就绪:
- 环境准备:RK3566 Ubuntu26.04 安装 Python3.12 提供了隔离的多版本 Python 运行环境;
- 硬件编解码与预处理:Rockchip 平台 librga 安装部署与权限问题排坑指南 提供了
MPP高速视频解码与RGA零 CPU 开销的格式转换与缩放; - 边缘 AI 推理:本篇搭建的
rknpu2/rknn-toolkit-lite2负责接收 RGA 预处理完成的张量,直接送进 NPU 硬件完成高速神经网络推理。
六、常见踩坑与排障清单
- **试图在 RK3566 板端执行
pip install rknn-toolkit2**:- 报错无法找到符合架构的包。记住原则:转换在 PC(x86),板端只装
lite2和rknpu2。
- 报错无法找到符合架构的包。记住原则:转换在 PC(x86),板端只装
- **板端运行报错
librknnrt.so: cannot open shared object file**:- 确认动态库已拷贝至
/usr/lib/或/usr/lib/aarch64-linux-gnu/,且必须执行sudo ldconfig刷新系统链接器缓存。
- 确认动态库已拷贝至
- PC 转换的模型在板端初始化失败:
- 检查 PC 端转换脚本中
rknn.config()是否指定了target_platform="rk3566"。若未指定或选错平台,生成的指令集与权重结构板端 NPU 无法识别。
- 检查 PC 端转换脚本中
rknnlite导入时报错版本不兼容:wheel包的文件名必须严格对应 Python 解释器的具体版本(如cp38对应 Python 3.8,cp312对应 Python 3.12)。
- C/C++ 工程编译报错找不到符号:
- 链接参数中需增加
-lrknnrt,并确保头文件目录包含rknn_api.h。若在 PC 端进行交叉编译,请确认使用的是aarch64-linux-gnu-gcc交叉工具链。
- 链接参数中需增加
