边缘设备RK3588下RKNN的推理适配

这篇文章主要梳理一件事:如何把训练侧模型,稳定地落到 RK3588 上跑起来。

RKNN 是什么

RKNN 是瑞芯微(Rockchip)围绕自研 NPU 推出的完整软件栈,用来解决模型从训练框架到板端推理的落地问题。

常用到的核心组件有两个:

  1. RKNN-Toolkit2

运行在 PC 端(通常是 Ubuntu)的开发工具链,负责把第三方框架模型(如 PyTorch、TensorFlow、ONNX)转换、量化、优化为 .rknn 文件。

项目地址:

https://github.com/airockchip/rknn-toolkit2

  1. RKNN Runtime

运行在嵌入式板卡端(如 RK3588)的运行时库,负责加载 .rknn 模型并调用 NPU 执行推理。

RKNN 的典型工作流

从开发到部署,一般可以分成 4 个阶段:

  1. 模型转换

.onnx.pt 模型导入 Toolkit,完成图转换与算子适配。

  1. 量化与优化

这是 RKNN 提速的关键步骤。NPU 更擅长整数计算(INT8),通常会把 FP32 模型量化为 INT8,在保证精度可接受的前提下换取更高吞吐和更低延迟。

  1. 模型导出

导出目标模型文件:.rknn

  1. 板端推理

在 RK3588 上通过 C/C++ 或 Python 接口调用 Runtime,完成加载、预处理、推理和后处理。

推荐转换链路

实际项目里,更推荐这条链路:

PyTorch (.pt) -> ONNX (.onnx) -> RKNN-Toolkit2 -> .rknn

原因很简单:ONNX 在中间层更通用,便于调试和排查算子兼容问题;如果直接从训练框架到 RKNN,遇到兼容性问题时排错成本更高。

适配过程中的几个经验点

  1. 优先保证 ONNX 导出稳定

在进入 RKNN 转换前,先用 ONNXRuntime 做一次基线推理,确认输入输出 shape、数值范围和后处理逻辑都正确。

  1. 量化数据集要贴近真实场景

INT8 量化效果高度依赖校准数据分布。采样越接近线上真实输入,精度掉点通常越可控。

  1. 板端前后处理要和训练侧对齐

比如颜色空间(RGB/BGR)、归一化参数、resize 方式、padding 策略,任意一个不一致都会直接影响最终效果。

  1. 先跑通,再压榨性能

第一阶段优先打通端到端流程;等结果稳定后,再逐步做 batch、线程、流水线和内存复用优化。

小结

RKNN 的核心价值,在于让模型在边缘设备上跑得快、跑得稳,还能持续优化。

如果你正在做 RK3588 的部署,建议先把链路固定在 ONNX 中间层,先验证精度一致性,再做性能优化,这样整体节奏会顺很多。

版权声明: 本文首发于 指尖魔法屋-边缘设备RK3588下RKNN的推理适配https://blog.thinkmoon.cn/post/992-%E8%BE%B9%E7%BC%98%E8%AE%BE%E5%A4%87rk3588%E4%B8%8Brknn%E7%9A%84%E6%8E%A8%E7%90%86%E9%80%82%E9%85%8D/) 转载或引用必须申明原指尖魔法屋来源及源地址!