CV / YOLOv5

YOLOv5-seg

reComputer R Series (CM5 + Hailo-10H)

YOLOv5-seg Instanzsegmentierungsmodelle für reComputer RK3588/RK3576 (RKNN) und reComputer R Series mit Hailo-8 oder Hailo-10H.

662 Downloads
Größe
~5.4MB
Speicher
1GB+
Präzision
INT8 / Hailo HEF

Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.

Erste Schritte

Bereitstellen
sudo docker run --rm \
  --name cm5-hailo10h-yolov5n-seg \
  --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/yolov5n_seg:latest \
  python web_detection.py --model_path model/yolov5n_seg.hef --video_path video/test.mp4

Modelldetails

reComputer R Series (CM5 + Hailo-10H)

YOLOv5-seg auf reComputer R Series (CM5 + Hailo-10H)

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-10H) mit einem PCIe-Hailo-10H-Beschleuniger.

Modellinformationen

VarianteParameterHardware-mAPHEF-Größe
YOLOv5n-seg1.99M23.13.4 MB
YOLOv5s-seg7.61M30.811.6 MB
YOLOv5m-seg32.60M36.718.5 MB

Gemeinsame Eigenschaften:

EigenschaftWert
ArchitekturYOLOv5-seg (3 Anker, Strides 8/16/32)
Eingabe640x640x3 RGB (normalize_in_net, mean 0 / std 255)
Ausgabeproto (160x160x32) + 3 Detektionsköpfe (je 351 Kanäle)
Letterbox-Auffüllfarbe114 (Grau, YOLO-Konvention)
HEFHailo Model Zoo v5.4.0, Hailo-10H

Die Genauigkeitswerte sind Referenzwerte aus Hailo Model Zoo und keine auf CM5 gemessenen Werte.

Hardware- und Host-Einrichtung

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

hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0

Mischen Sie keine HailoRT 4.23.x (Hailo-8) Treiber, Bibliotheken oder Python-Wheels in diesen Hailo-10H-Container.

Image herunterladen

Das Image ist auf GHCR veröffentlicht. Laden Sie es vor dem Start des Containers herunter:

bash
sudo docker pull ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov5n_seg:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov5s_seg:latest
sudo docker pull ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov5m_seg:latest

Mit Demovideo ausführen

YOLOv5n-seg:

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov5n-seg \
  --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/yolov5n_seg:latest \
  python web_detection.py --model_path model/yolov5n_seg.hef --video_path video/test.mp4

YOLOv5s-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

bash
curl -X POST "http://<Board_IP>:8000/api/models/yolov5n_seg/predict" \
  -F "file=@test.jpg"
EndpunktMethodeZweck
/api/models/yolov5n_seg/predictPOSTBoxen + Instanzmasken (JSON)
/api/video_feedGETMJPEG-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 create_infer_model-API von HailoRT 5.1.1 mit persistent konfiguriertem Modell und registrierten FLOAT32-Ausgabepuffern.
  • Quellmodul: src/hailo10h_yolov5n_seg/ (auch ..._s_seg/, ..._m_seg/)
  • Dockerfile: docker/hailo10h/yolov5n_seg.dockerfile