CV / YOLOv5
YOLOv5-seg
YOLOv5-seg Instanzsegmentierungsmodelle für reComputer RK3588/RK3576 (RKNN) und reComputer R Series mit Hailo-8 oder Hailo-10H.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
sudo docker run --rm \
--name rk3588-yolov5n-seg \
--privileged \
--net=host \
-e PYTHONUNBUFFERED=1 \
-e RKNN_LOG_LEVEL=0 \
--device /dev/video0:/dev/video0 \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
-v /proc/device-tree/compatible:/proc/device-tree/compatible \
ghcr.io/seeed-projects/recomputer-rk-cv/rk3588-yolov5_seg:latest \
python3 web_detection.py --model_path model/yolov5n_seg.rknn --video video/test.mp4Modelldetails
reComputer R Series (CM5 + Hailo-8)YOLOv5-seg auf reComputer R Series (CM5 + Hailo-8)
YOLOv5-seg (anchor-basierte Instanzsegmentierung) erkennt 80 COCO-Klassen und erzeugt pro Instanz eine Pixelmaske. Das HEF gibt drei rohe Detektionsköpfe plus einen Maskenprototyp-Tensor aus; die App dekodiert die Anchors auf der CPU, führt klassenweises NMS aus und setzt die Masken aus dem Prototyp-Tensor zusammen.
Diese Seite richtet sich an die reComputer R Series (CM5 + Hailo-8) mit einem PCIe-Hailo-8-Beschleuniger.
Modellinformationen
| Variante | Parameter | Hardware-mAP | HEF-Größe |
|---|---|---|---|
| YOLOv5n-seg | 1.99M | 22.9 | 4.7 MB |
| YOLOv5s-seg | 7.61M | 30.7 | 8.7 MB |
| YOLOv5m-seg | 32.60M | 36.6 | 28.1 MB |
Gemeinsame Eigenschaften:
| Eigenschaft | Wert |
|---|---|
| Architektur | YOLOv5-seg (3 Anker, Strides 8/16/32) |
| Eingabe | 640x640x3 RGB (normalize_in_net, mean 0 / std 255) |
| Ausgabe | proto (160x160x32) + 3 Detektionsköpfe (je 351 Kanäle) |
| Letterbox-Auffüllfarbe | 114 (Grau, YOLO-Konvention) |
| HEF | Hailo Model Zoo v2.19.0, Hailo-8 |
Die Genauigkeitswerte sind Referenzwerte aus Hailo Model Zoo und keine auf CM5 gemessenen Werte.
Hardware- und Host-Einrichtung
sudo apt update
sudo apt install hailort hailort-pcie-driver python3-hailort
sudo reboot
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0Image herunterladen
Das Image ist auf GHCR veröffentlicht. Laden Sie es vor dem Start des Containers herunter:
sudo docker pull ghcr.io/seeed-projects/recomputer-hailo8-cv/yolov5n_seg:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-hailo8-cv/yolov5s_seg:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-hailo8-cv/yolov5m_seg:latestMit Demovideo ausführen
YOLOv5n-seg:
sudo docker run --rm \
--name cm5-hailo8-yolov5n-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/yolov5n_seg:latest \
python web_detection.py --model_path model/yolov5n_seg.hef --video_path video/test.mp4YOLOv5s-seg / YOLOv5m-seg verwenden denselben Befehl; ersetzen Sie yolov5n_seg durch yolov5s_seg oder yolov5m_seg.
Öffnen Sie http://<Board_IP>:8000, um die Webvorschau mit Instanzmasken zu sehen.
USB-Kameramodus
Fügen Sie --device /dev/video0:/dev/video0 hinzu und ersetzen Sie --video_path video/test.mp4 durch --camera_id 0.
REST-API
curl -X POST "http://<Board_IP>:8000/api/models/yolov5n_seg/predict" \
-F "file=@test.jpg"| Endpunkt | Methode | Zweck |
|---|---|---|
/api/models/yolov5n_seg/predict | POST | Boxen + Instanzmasken (JSON) |
/api/video_feed | GET | MJPEG-Vorschaustream |
Implementierungsdetails
- Die Dekodierung folgt der
yolov5_seg-Nachbearbeitung von Hailo Model Zoo: Anchor-Dekodierung (xy = (sigmoid(xy) * 2 + grid - 0.5) * stride,wh = (sigmoid(wh) * 2) ** 2 * anchor_grid) → Objectness × Klassenscore → klassenweises NMS →sigmoid(coeffs @ proto), auf die Eingabe skaliert und auf jede Box zugeschnitten. - Die drei Detektionsköpfe werden anhand ihrer 351 Kanäle erkannt und nach räumlicher Größe sortiert (Stride 32 → 16 → 8); der Proto-Kopf ist der 160x160x32-Tensor. Die erste Inferenz gibt Name und Form jedes vstreams aus, damit die Zuordnung auf der Hardware überprüft werden kann.
- Der Executor verwendet die VStreams-API von HailoRT 4.23 und ein Hailo-8-spezifisches HEF.
- Quellmodul:
src/rpi5_hailo8_yolov5n_seg/(auch..._s_seg/,..._m_seg/) - Dockerfile:
docker/hailo8/yolov5n_seg.dockerfile