CV / YOLOv10

YOLOv10

reComputer R Series (CM5 + Hailo-10H)

YOLOv10n/s/b/x 目标检测模型,支持 reComputer RK3576/RK3588(RKNN)以及 reComputer R Series + Hailo-8 或 Hailo-10H。

80 次下载
大小
7.36 MB
内存
4GB+
精度
RKNN / Hailo HEF

选择你正在使用的设备,设置指南和文档将相应更新。

快速开始

部署
sudo docker run --rm \
  --name cm5-hailo10h-yolov10n \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov10n:latest \
  python web_detection.py --model_path model/yolov10n.hef --video_path video/test.mp4

模型详情

reComputer R Series (CM5 + Hailo-10H)

YOLOv10 on reComputer R Series (CM5 + Hailo-10H)

YOLOv10n / YOLOv10s / YOLOv10b / YOLOv10x 通过 HailoRT 在 Hailo-10H 上执行 COCO 80 类目标检测。编译出的 HEF 使用 one2one 头并在片上完成 NMS(HPP),因此宿主只解析 NMS 之后的结果,不做框解码也不跑 NMS。

本页面向搭载 PCIe Hailo-10H 加速器的 reComputer R Series (CM5 + Hailo-10H)。

硬件与主机设置

项目值
开发板reComputer R Series 搭配 Raspberry Pi CM5
加速器Hailo-10H(PCIe 接口),以 /dev/hailo0 暴露
运行时HailoRT 5.1.1
容器内 Python3.13, aarch64

在主机上安装 Hailo-10H 软件包,并在启动容器前确认驱动与设备就绪:

bash
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot

# After reboot
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0

这些镜像要求的 HailoRT 版本为 5.1.1。

使用演示视频运行

YOLOv10n:

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov10n \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov10n:latest \
  python web_detection.py --model_path model/yolov10n.hef --video_path video/test.mp4

YOLOv10s:

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov10s \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov10s:latest \
  python web_detection.py --model_path model/yolov10s.hef --video_path video/test.mp4

YOLOv10b:

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov10b \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov10b:latest \
  python web_detection.py --model_path model/yolov10b.hef --video_path video/test.mp4

YOLOv10x:

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov10x \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov10x:latest \
  python web_detection.py --model_path model/yolov10x.hef --video_path video/test.mp4

浏览器打开 http://<Board_IP>:8000 查看网页预览。

USB 摄像头模式

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov10n \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  --device /dev/video0:/dev/video0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov10n:latest \
  python web_detection.py --model_path model/yolov10n.hef --camera_id 0

把 yolov10n 换成 yolov10s、yolov10b 或 yolov10x 即可切换变体。

HEF 文件

模型大小说明
yolov10n.hef5,230,592 (5.0 MB)参数量 2.3M,运算量 6.8G,mAP 38.5(全精度)
yolov10s.hef10,182,656 (9.7 MB)参数量 7.2M,运算量 21.7G,mAP 45.85(全精度)
yolov10b.hef19,619,840 (18.7 MB)参数量 20.15M,运算量 92.09G,mAP 52.0(全精度)
yolov10x.hef26,251,264 (25.0 MB)参数量 31.72M,运算量 160.56G,mAP 53.7(全精度)

四个变体都是同一 THU-MIG YOLOv10 家族在 Hailo Model Zoo v5.4.0 上的 Hailo-10H 编译产物。

Source: https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v5.4.0/hailo10h/yolov10n.hef (yolov10s.hef, yolov10b.hef, yolov10x.hef in the same directory).

REST API

text
POST http://<Board_IP>:8000/api/models/yolov10n/predict
bash
curl -X POST "http://<Board_IP>:8000/api/models/yolov10n/predict" \
  -F "file=@test.jpg"
接口方法用途
/GET网页预览界面
/api/models/yolov10{n,s,b,x}/predictPOST检测结果(JSON)
/api/video_feedGETMJPEG 预览流

实现说明

  • Model Zoo base/yolov10.yaml 使用 hpp=true 与 device_pre_post_layers.nms=true、meta_arch=yolov8,对三个 one2one 类别卷积在片上做 sigmoid,info.output_shape 为 80x5x100(80 类,每类最多 100 个框)。
  • parser 节点是 one2one 头(/model.23/one2one_cv2.{0,1,2}/Conv 负责框、/model.23/one2one_cv3.{0,1,2}/Conv 负责类别):每个格子一个预测、无锚框。宿主不做任何解码,也不跑 NMS。
  • HailoRT 5.1.1 返回的 NMS-by-class 结果是扁平的一维 FLOAT32 紧凑缓冲区:每类先是一个整数形式的检测数量,随后仅跟该数量的 [ymin, xmin, ymax, xmax, score] 行,数值归一化到 [0, 1]。解析在遇到第一个不合理的类别头时停止,因此最坏情况预留的填充尾部不会被当作数据;ragged NMS-by-score 与稠密 (1,C,5,D)、(1,C,D,5) 布局同样保留支持。
  • IOU 滑块不生效(NMS 在片上完成);置信度滑块用于过滤解析出的检测结果。
  • HEF 已内置 normalize_in_net(mean 0 / std 255)与 padding_color=114:应用用灰色(114)做 letterbox,并把原始 uint8 RGB 像素送入网络,无需手工归一化。
  • 类别 ID 0..79 直接索引标准 COCO 类别表。
  • 首次推理诊断在生产中关闭(web_detection.py 中 _OUTPUT_LOGGED = True);验证新 HEF 时改为 False 可打印原始输出的类型、形状、取值范围与逐类数据。

开发说明

  • 源码模块:reComputer-Hailo10H-CV 仓库中的 src/hailo10h_yolov10{n,s,b,x}/
  • 容器:ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov10{n,s,b,x}:latest
  • Hailo-8(R20 演示)仅发布 n/b/x;Hailo-10H 编译产物覆盖全部四个变体。
  • 模型许可:AGPL-3.0(upstream THU-MIG/yolov10)。

输入与输出

输入:图像、视频或 USB 摄像头画面。输出:检测框、类别、置信度和带标注的 MJPEG 预览。