CV / YOLOv8

YOLOv8-seg

reComputer RK3588/RK3576(RKNN)与 reComputer R Series(Hailo-8 / Hailo-10H,HailoRT)上的 YOLOv8n/s/m 实例分割。

400 次下载
大小
~7.2MB
内存
1GB+
精度
INT8

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

快速开始

部署
sudo docker run --rm \
  --name rk3588-yolov8n-seg \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  -e RKNN_LOG_LEVEL=0 \
  --device /dev/video1:/dev/video1 \
  --device /dev/dri/renderD129:/dev/dri/renderD129 \
  -v /proc/device-tree/compatible:/proc/device-tree/compatible \
  ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov8_seg:latest \
  python web_detection.py --model_path model/yolov8n_seg.rknn --video video/test.mp4

模型详情

reComputer R Series (CM5 + Hailo-8)

reComputer R 系列(CM5 + Hailo-8)上的 YOLOv8-seg

YOLOv8n/s/m-seg 通过 HailoRT 4.23 在 Hailo-8 上运行。HEF 输出原始分支头(无片上 NMS):主机侧完成 DFL 框解码、sigmoid 与逐类 NMS,并合成实例掩码(32 个系数 × 160×160×32 原型,按框裁剪),支持 80 个 COCO 类别。

模型信息

变体输入打包 HEF容器镜像
YOLOv8n-seg640×640×3 RGB5.3 MByolov8n_seg
YOLOv8s-seg640×640×3 RGB17.3 MByolov8s_seg
YOLOv8m-seg640×640×3 RGB32.9 MByolov8m_seg

硬件与宿主环境

项目值
主板reComputer R 系列,搭载 Raspberry Pi CM5
加速器Hailo-8(PCIe),设备节点 /dev/hailo0
运行时HailoRT 4.23.x(宿主与容器的主.次版本必须一致)
容器内 Python3.11,aarch64
bash
sudo apt update
sudo apt install hailort hailort-pcie-driver python3-hailort
sudo reboot

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

# Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
sudo systemctl enable docker
sudo systemctl start docker

使用内置演示视频运行

按所用变体选择对应命令。

YOLOv8n-seg

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

YOLOv8s-seg

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

YOLOv8m-seg

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

浏览器打开 http://<Board_IP>:8000 查看 Web 预览(按类别着色的实例掩码 + 检测框)。

USB 摄像头模式

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

REST API

每个变体有独立接口:

变体接口
YOLOv8n-segPOST /api/models/yolov8n_seg/predict
YOLOv8s-segPOST /api/models/yolov8s_seg/predict
YOLOv8m-segPOST /api/models/yolov8m_seg/predict

示例:

bash
curl -X POST "http://<Board_IP>:8000/api/models/yolov8n_seg/predict" \
  -F "file=@test.jpg"

返回的 predictions 条目包含 class、confidence 与 box 字段(box 为原图 像素坐标的 x1/y1/x2/y2)。实例掩码绘制在 MJPEG 预览中,/api/video_feed 提供带标注的视频流。

实现说明

  • HEF 输出 10 个原始张量:每个 stride(32/16/8)各有 64 通道 DFL 框回归头、 80 通道类别头、32 通道掩码系数头,另有 160×160×32 掩码原型。首次推理会打印 全部张量的名称、形状与数值范围。
  • 框解码使用 DFL softmax 期望(16 个 bin)并以网格中心为锚点;若编译时把 DFL 折叠为 4 通道直推,则直接解码。
  • 类别头可能已在片上完成 sigmoid(Model Zoo alls 脚本);仅当数值仍是原始 logits 时模块才补做 sigmoid。
  • one2many 预测经逐类 NMS(由置信度与 IoU 滑块驱动);掩码为 sigmoid(coeffs @ proto),上采样到输入尺寸并按框裁剪(阈值 0.5)。
  • letterbox 填充为 114(Model Zoo base/yolo.yaml);mean 0 / std 255 归一化已 编译进 HEF。

开发说明

变体源码Dockerfile容器镜像
YOLOv8n-segsrc/rpi5_hailo8_yolov8n_seg/docker/hailo8/yolov8n_seg.dockerfileghcr.io/seeed-projects/recomputer-hailo8-cv/yolov8n_seg:latest
YOLOv8s-segsrc/rpi5_hailo8_yolov8s_seg/docker/hailo8/yolov8s_seg.dockerfileghcr.io/seeed-projects/recomputer-hailo8-cv/yolov8s_seg:latest
YOLOv8m-segsrc/rpi5_hailo8_yolov8m_seg/docker/hailo8/yolov8m_seg.dockerfileghcr.io/seeed-projects/recomputer-hailo8-cv/yolov8m_seg:latest
  • 执行器为 HailoRT 4.23 的 InferVStreams 封装(Python 3.11 + 随模块附带的 cp311 wheel);libhailort.so 由宿主提供。
  • HEF 来自 Hailo Model Zoo v2.19.0 的 Hailo-8 构建。
  • 文中引用的 mAP(COCO 实例分割)为 Model Zoo 全精度参考值,并非本板实测。