我正在使用 RDK X5 上的 YOLO26 detect 示例,并已完成 ONNX→BIN 转换与板端推理,环境与观察如下。
环境(RDK X5)
-
Repo / branch:rdk_model_zoo (rdk_x5)
-
Sample path:samples/vision/yolo26/detect
-
Task:detect
-
Board:D-Robotics RDK X5 V1.0(Board Id = 302),8GB
-
OS / version:
-
Ubuntu 22.04.5 LTS (GNU/Linux 6.1.83 aarch64)
-
RDK OS Version: 3.4.1(/etc/version: 3.4.1)
-
Kernel: Linux 6.1.83 #4 SMP PREEMPT Fri Dec 19 10:54:38 CST 2025 aarch64
-
-
Runtime(推理 log):
-
HBRT version = 3.15.55.0
-
DNN Runtime version = 1.24.5_(3.15.55 HBRT)
-
Model builder version = 1.24.3
-
BPU Platform Version = 1.3.6
-
模型(我实际使用)
-
model (.bin):yolo26n_detect_bpu_bayese_640x640_nv12.bin
-
input size:640x640,input type:nv12(由 toolchain 转换 log 显示)
-
校准:使用 COCO 图片(person + car)1000 张,但 mapper sampling 默认只抽 20 张做校准(如有需要我可以改成更多)
备注:我使用 OpenExplorer toolchain docker 进行 ONNX→BIN(hb_mapper makertbin),成功产出 .bin 并在 RDK X5 上跑通。
Observation(重点)
-
detect 示例的推理脚本中仍包含 NMS 后处理,使用
cv2.dnn.NMSBoxes。-
参数也提供
--score-thres与--nms-thres。 -
代码位置(摘要):
-
argparse 中有
--score-thres/--nms-thres(confidence / IoU) -
NMS:
indices = cv2.dnn.NMSBoxes(..., opt.score_thres, opt.nms_thres)
-
-
-
但 Ultralytics YOLO26 官方文档与博客强调 YOLO26 为 End-to-End / NMS-free inference:
https://docs.ultralytics.com/models/yolo26/ -
我在 RDK X5 上实测推理成功,例如:
-
Pre-process 约 58.7ms、Forward 约 14.2ms、Post-process 约 9.1ms(单张图片)
-
检测结果包含 person / bus / car 等 COCO 类别(符合 80 类通用检测)
-
Questions
-
请问你们提供的 YOLO26
.bin输出是否已经是 one-to-one / end-to-end(理论上 NMS-free)?- 如果是,为什么 sample 仍需要做
NMSBoxes?
- 如果是,为什么 sample 仍需要做
-
sample 目前做 NMS 是仅用于 demo 显示更干净(visualization)?
还是模型输出本身仍需要 NMS 才能得到合理结果? -
官方建议的 YOLO26 后处理(post-processing)应该是哪一种?
-
只做 score threshold?
-
score threshold + top-k?
-
仍建议 NMS?如果需要,建议的 score_thres / nms_thres 范围是多少?
-
-
是否能提供一个官方选项 / flag,让 sample 可以关闭 NMS(例如
--use-nms 0/1),以便验证 YOLO26 的 NMS-free pipeline?
感谢协助,感谢维护与支持。