1. 课程导入

欢迎进入《RK3588/RKNN 边缘 AI 交付》课程。本课程面向已经具备一定 Linux 与 Python 基础、希望把训练好的深度学习模型真正部署到 RK3588 硬件上运行的工程师。与"在服务器上跑通一个模型"不同,边缘 AI 交付的核心挑战在于:算力受限、内存受限、功耗受限,同时还要满足实时性、稳定性和量产一致性。RK3588 作为瑞芯微旗舰级 AIoT 芯片,内置 6 TOPS 算力的 NPU,配合 RKNN 工具链,为这类交付提供了完整的软硬件基础。

一、学习目标:从"能跑"到"能交付"

本课程的学习目标可以概括为四个层次。第一层是理解硬件:掌握 RK3588 的 CPU、GPU、NPU 三核异构架构,理解 NPU 的算力边界与内存带宽约束。第二层是掌握工具链:熟练使用 RKNN-Toolkit2 完成模型转换、量化、精度分析,使用 RKNN Runtime 在板端完成推理。第三层是打通流程:从 PyTorch/ONNX 模型出发,经过量化校准、模型转换、板端部署、性能调优,形成可复现的交付流水线。第四层是工程化落地:处理多路视频、模型热更新、异常恢复、功耗与散热等量产问题。

学习完成后,你应当能够独立完成一个典型边缘 AI 项目:给定一个训练好的检测或分类模型,在 RK3588 上实现稳定、可量化、可复现的推理服务,并给出性能与精度报告。

二、核心概念:RKNN 生态的关键名词

在正式进入实操之前,需要先建立统一的概念坐标系。RKNN 并不是一个单一工具,而是一套围绕 NPU 的软件栈。理解下面几个概念,后续章节才不会迷失方向。

  • RKNN:瑞芯微定义的神经网络模型格式,是 NPU 可直接加载执行的中间表示,类似 TensorRT 的 engine 或 TFLite 的 flatbuffer。
  • RKNN-Toolkit2:运行在 PC(x86 Linux/Windows)上的模型转换与量化工具,负责把 ONNX、PyTorch、TensorFlow 等模型转成 RKNN。
  • RKNN Runtime:运行在 RK3588 板端的推理库,提供 C/C++ 与 Python API,负责加载 RKNN 模型并调度 NPU 执行。
  • 量化(Quantization):把 FP32 权重与激活值映射到 INT8,是提升 NPU 利用率、降低内存占用的关键步骤,也是精度损失的主要来源。
  • 异构计算:RK3588 的 CPU、GPU、NPU 各有所长,实际交付中常需要把预处理放在 CPU、后处理放在 CPU/GPU、核心推理放在 NPU。

三、整体框架:一张图看清交付链路

下图展示了从模型训练到 RK3588 板端推理的完整数据流与工具链关系。左侧是 PC 侧工作,右侧是板端工作,中间通过 RKNN 模型文件衔接。请重点观察三个转换节点:ONNX 导出、量化校准、RKNN 编译。

RK3588 / RKNN 边缘 AI 交付链路 PC 侧(x86 Linux / Windows) PyTorch / TF 训练模型 ONNX 导出 opset 固定 量化校准集 200~500 张 RKNN-Toolkit2 转换 + 量化 精度分析 / 逐层对比 cosine / SNR 报告 model.rknn INT8 权重 RK3588 板端(Linux / Android) RKNN Runtime C / Python API NPU 调度 6 TOPS CPU 预处理 RGA / OpenCV 后处理 NMS / 解码 性能剖析 perf / rknn_benchmark

四、交付流程概览:五个阶段与关键检查点

把上图展开为可执行的工程流程,可以归纳为五个阶段。每个阶段都有明确的输入、输出与验收标准,缺少任何一环都会在量产阶段暴露问题。

阶段主要工作关键产物验收标准
1. 模型准备确定输入尺寸、算子兼容性、导出 ONNXmodel.onnxONNX 可被 onnxruntime 正确推理
2. 量化校准准备校准集、选择量化算法、逐层分析量化配置与精度报告余弦相似度 > 0.99
3. 模型转换RKNN-Toolkit2 编译、算子融合model.rknn转换无警告、无回退算子
4. 板端部署Runtime 加载、预处理/后处理对接可执行推理程序单帧推理结果与 PC 一致
5. 性能调优多核调度、零拷贝、批处理性能报告满足帧率与延迟指标

五、典型场景与常见误区

一个典型的交付场景是:在 RK3588 上部署 YOLOv5s 做 4 路 1080p 视频的实时检测。工程师需要把 PyTorch 模型导出为 ONNX,用 300 张现场图片做 INT8 校准,转换成 RKNN 后在板端用多线程加载,并利用 RGA 做硬件缩放。整个链路中,最容易出问题的不是模型本身,而是预处理对齐、量化校准集分布、以及 NPU 与 CPU 之间的数据拷贝。

常见误区一:直接用训练集做校准集。训练集分布与现场差异大,会导致量化后精度骤降。误区二:忽略算子兼容性,ONNX 中某些算子会被回退到 CPU,造成性能断崖。误区三:只看平均帧率,不看 P99 延迟,导致实际体验卡顿。

本课程后续章节将沿着上述五个阶段逐一展开,每一节都会给出可运行的命令、配置与排障方法。建议你在学习过程中准备一块 RK3588 开发板,边看边做,把每个阶段的产物都实际生成一遍。只有亲手跑通整条链路,才能真正理解边缘 AI 交付的工程细节。

# 板端快速验证 RKNN 模型是否可加载
rknn_server &
python3 -c "
from rknnlite.api import RKNNLite
rknn = RKNNLite()
ret = rknn.load_rknn('model.rknn')
print('load_rknn ret =', ret)
ret = rknn.init_runtime()
print('init_runtime ret =', ret)
"

当你能够稳定复现上面这段验证脚本,并且清楚每一步背后的数据流与资源开销,你就已经迈入了 RK3588 边缘 AI 交付的门槛。接下来,我们从硬件架构与 NPU 算力模型开始,逐层拆解这套系统。