平台参考与来源
本文依据 RKNN V2.5.0 原厂 PDF 整理。适用于原文列出的芯片和接口;ArmSoM 板卡须先核对 SoC、NPU 驱动、Toolkit/Runtime、SDK/BSP 和内核版本。尚未进行 ArmSoM 硬件验证,原文示例及测量值不是 ArmSoM 实测。
系列导航
- 环境、依赖与对象生命周期
- 模型配置与量化参数
- 加载 Caffe、TensorFlow、ONNX 与 PyTorch
- 构建、混合量化与导出
- 运行时、算子注册与推理
- 精度、性能、内存与设备查询
- 生成、编译与运行 C++ 部署示例
1 环境说明
1.1 支持芯片
RKNN-Toolkit2当前版本所支持芯片的型号如下:
RV1103
RV1103B
RV1106
RV1106B
RV1126B
RK2118
RK3562
RK3566系列
RK3568系列
RK3576系列
RK3588系列
注:后文用RK3566 / RK3568 / RK3576 / RK3588分别统称RK3566系列 / RK3568系列 / RK3576系列 /RK3588系列。
1.2 系统依赖说明
使用RKNN-Toolkit2时需要满足以下运行环境要求:
| 操作系统版本 | Ubuntu18.04(x64) | Ubuntu20.04(x64) | Ubuntu22.04(x64) | Ubuntu24.04(x64) |
|---|---|---|---|---|
| Python版本 | 3.6 / 3.7 | 3.8 / 3.9 | 3.10 / 3.11 | 3.12 |
ARM64版本运行环境要求:
| 操作系统版本 | Debian10(x64) | Debian11(x64) | Debian12(x64) |
|---|---|---|---|
| Python版本 | 3.6 / 3.7 | 3.8 / 3.9 | 3.10 / 3.11 / 3.12 |
注: 1. 具体python库依赖详⻅doc/requirements*.txt 2. 本文档主要以Ubuntu 20.04 / Python3.8为例进行说明
1.3 适用的深度学习框架
RKNN-Toolkit2支持的深度学习框架包括Caffe、TensorFlow、TensorFlow Lite、ONNX、DarkNet和PyTorch。
它和各深度学习框架的版本对应关系如下:
| RKNN-Toolkit2 | Caffe | TensorFlow | TF Lite | ONNX | DarkNet | PyTorch |
|---|---|---|---|---|---|---|
| 1.4.0 1.4.2 1.5.0 1.5.2 |
1.0 | 1.12.0 ~2.8.0 |
Schema version=3 |
1.7.0 ~1.10.0 |
Commit ID: 810d7f7 |
1.6.0 ~1.10.1 |
| 1.6.0 | 1.0 | 1.12.0 ~2.14.0 |
Schema version=3 |
1.7.0 ~1.14.0 |
Commit ID: 810d7f7 |
1.6.0 ~1.13.1 |
| 2.0.0 2.1.0 2.2.0 |
1.0 | 1.12.0 ~2.14.0 |
Schema version=3 |
1.7.0 ~1.14.1 |
Commit ID: 810d7f7 |
1.10.1 ~2.1.0 |
| 2.3.0 ~2.5.0 |
1.0 | 1.12.0 ~2.14.0 |
Schema version=3 |
1.7.0 ~1.17.0 |
Commit ID: 810d7f7 |
1.10.1 ~2.4.0 |
注:
- 由于TensorFlow版本兼容特性,TensorFlow 1.12.0之前版本的导出的pb文件,理论上也是支持的。关于TensorFlow版本兼容性的更多信息,可以参考官方资料:https://www.tensorflow.org/guide/versions?hl=zh-cn
- 因为TFLite不同版本的schema之间是互不兼容的,所以构建TFLite模型时使用与RKNN-Toolkit2不同版本的schema可能导致加载失败。
- RKNN-Toolkit2使用的Caffe protocol是基于berkeley官方修改的protocol:https://github.com/BVLC/caffe/tree/master/src/caffe/proto,commit值为828dd10,RKNN-Toolkit2在此基础上新增了一些OP。
- ONNX release version和opset version、IR version之间的关系参考onnxruntime官网说明:https://github.com/microsoft/onnxruntime/blob/v1.6.0/docs/Versioning.md
- DarkNet官方Github链接:https://github.com/pjreddie/darknet。RKNN-Toolkit2现在的转换规则是基于master分支的最新提交(commit值:810d7f7)制定的。
- 加载PyTorch模型(torchscript模型)时,推荐使用相同版本的PyTorch导出模型并转为RKNN模型,前后版本不一致时有可能会导致转RKNN模型失败。
- ARM64版本仅支持PyTorch和ONNX框架,其他框架暂时不支持。
2 RKNN 对象与资源生命周期
在使用RKNN-Toolkit2的所有API接口时,都需要先调用RKNN()方法初始化RKNN对象,不再使用该对象时通过调用该对象的release()方法进行释放。
初始化RKNN对象时,可以设置verbose和verbose_file参数,以打印详细的日志信息。其中verbose参数指定是否要打印详细日志信息;如果设置了verbose_file参数,且verbose参数值为True,日志信息还将写到该参数指定的文件中。
举例如下:
# 打印详细的日志信息
rknn = RKNN(verbose=True)
...
rknn.release()
来源与校对说明
原始技术章节按用途拆分,代码、标识符和参数保留。中文采用中文原稿;英文、俄文、德文采用对应英文稿。无图章节不添加虚构配图。
校对提示:原文日志示例仍显示 SDK 1.5.2,按历史示例保留,不作为 V2.5.0 实测结果。中英文环境表对 Ubuntu20.04 的 Python 列写法不同(中文 3.8/3.9、英文 3.8/3.8,Debian11 也存在相同差异),ARM64 段的 Debian 表头仍写 x64,均保留来源并提醒按实际安装包核对。V2.5.0 已新增 C++ codegen 章节并细化量化与内存策略;未用旧版参数替换新版。
