概要
本文分享 YOLOv26 在 RK3588 平台上的部署方案,重点聚焦于 C++ 推理侧的模型适配。核心工作包括基于 Ultralytics YOLOv26 的导出改造、新增 RKNN_ONNX 格式以对接 rknn-toolkit2,以及对 Detect Head 进行结构优化,确保导出的 ONNX 模型更适合 NPU 推理。
该方案适用于 RK3588 / RK356x 等 Rockchip NPU 环境,适合希望保留 Ultralytics 训练生态并采用 C++ + RKNN SDK 部署的用户。
说明:本文不涉及 rknn-toolkit2 的安装与量化流程,仅聚焦模型导出与结构适配。
项目依赖
一、导出格式扩展:新增 RKNN_ONNX
为了让 Ultralytics 支持自定义导出目标,我们需要修改 ultralytics/engine/exporter.py 文件。
1. 修改 exporter.py
1.1 扩展 export_formats
在 export_formats() 返回列表末尾追加一项配置,这样 CLI 就能识别新格式:
["RKNN_ONNX", "rknn_onnx", "_rknn_model", False, False, ["batch", "name"]]
之后即可直接使用以下命令导出:
yolo export model=yolov26.pt format=rknn_onnx
1.2 修改 Exporter.call() 中的 flags 解包
在导出逻辑中,需要在 flags 元组里加入 rknn_onnx 标识,并在后续分支调用对应的导出函数:
# 在 flags 元组中加入 rknn_onnx
( jit, onnx, xml, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle, mnn, ncnn, imx, rknn, executorch, axelera, rknn_onnx ) = flags
# 在导出逻辑中增加判断
if rknn_onnx:
f[17] = self.export_rknn_onnx()
通过上述两步,我们成功将 RKNN_ONNX 纳入了 Ultralytics 的导出体系,为后续的 C++ 推理做好了准备。

