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-seg | 640×640×3 RGB | 5.3 MB | yolov8n_seg |
| YOLOv8s-seg | 640×640×3 RGB | 17.3 MB | yolov8s_seg |
| YOLOv8m-seg | 640×640×3 RGB | 32.9 MB | yolov8m_seg |
硬件与宿主环境
| 项目 | 值 |
|---|---|
| 主板 | reComputer R 系列,搭载 Raspberry Pi CM5 |
| 加速器 | Hailo-8(PCIe),设备节点 /dev/hailo0 |
| 运行时 | HailoRT 4.23.x(宿主与容器的主.次版本必须一致) |
| 容器内 Python | 3.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.mp4YOLOv8s-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.mp4YOLOv8m-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 0REST API
每个变体有独立接口:
| 变体 | 接口 |
|---|---|
| YOLOv8n-seg | POST /api/models/yolov8n_seg/predict |
| YOLOv8s-seg | POST /api/models/yolov8s_seg/predict |
| YOLOv8m-seg | POST /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-seg | src/rpi5_hailo8_yolov8n_seg/ | docker/hailo8/yolov8n_seg.dockerfile | ghcr.io/seeed-projects/recomputer-hailo8-cv/yolov8n_seg:latest |
| YOLOv8s-seg | src/rpi5_hailo8_yolov8s_seg/ | docker/hailo8/yolov8s_seg.dockerfile | ghcr.io/seeed-projects/recomputer-hailo8-cv/yolov8s_seg:latest |
| YOLOv8m-seg | src/rpi5_hailo8_yolov8m_seg/ | docker/hailo8/yolov8m_seg.dockerfile | ghcr.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 全精度参考值,并非本板实测。