RDK X5 目标检测入门:预装 demo、ROS2 节点、自训模型部署

拿到 RDK X5 之后,目标检测大概是最多人第一个想跑的东西。我整理了一下三条路,从 5 分钟出效果到自训模型部署都有,顺便记几个容易踩的坑。

① 最快:预装 YOLOv5 demo

如果还没自己的模型,这条路径最快,SSH 进去直接跑:

# 确认摄像头
ls -l /dev/video* && v4l2-ctl --list-devices

# YOLOv5 静态图检测
cd /app/pydev_demo/07_yolov5_sample/
sudo python3 ./test_yolov5.py

# 或者 USB 摄像头实时检测 + 浏览器预览
cd /app/pydev_demo/05_web_display_camera_sample/
sudo python3 ./web_display_camera.py

浏览器打开 http://<板子IP>:8000 就能看到实时检测画面。如果不出图,检查 CAM_TYPE 是不是和你的摄像头一致(usb / mipi),USB 摄像头务必把格式锁成 MJPEG

② 集成到 ROS2 系统

如果已经在用 TROS,走 ROS2 节点更自然:

source /opt/tros/humble/setup.bash
ros2 launch hobot_usb_cam hobot_usb_cam.launch.py

# 新终端
source /opt/tros/humble/setup.bash
ros2 launch dnn_node_example dnn_node_example.launch.py config_file:=/opt/tros/humble/lib/dnn_node_example/config/yolov3_workconfig.json

验收看 topic 有没有数据:

ros2 topic list | grep detection
ros2 topic echo /hobot_dnn_detection

③ 自训模型部署(PyTorch → .bin)

如果你有自己的 YOLO 模型,必须走转换:

主机 Docker 端:训练 → 导出 ONNX(用 D-Robotics fork)→ hb_mapper checker → 校准图 → makertbin → .bin
板端:scp .bin → hobot_dnn 加载推理

几个新手最容易卡的地方:

  • 转换必须用地瓜的 yolo fork,ultralytics 官方仓导出的 ONNX 算子 BPU 不认
  • 工具链在主机 Docker 上跑,不在板子里,板上只有 runtime
  • X5 的 march 参数是 bayes-e,别填错
  • .pt / 原生 .onnx 直接上板只会走 CPU,大概 1-2 FPS,不转 .bin 等于没用到 BPU

总结

场景 选哪条
刚开箱想看一眼效果 路径①,5 分钟
已有 ROS2 工作流 路径②
有自己的模型要部署 路径③(半天到数天)

欢迎补充其他踩坑经验 :backhand_index_pointing_down: