CV / YOLOv5

YOLOv5

reComputer R Series (CM5 + Hailo-10H)

YOLOv5n/s/m Objekterkennungsmodelle für reComputer RK3588/RK3576 (RKNN) und reComputer R Series mit Hailo-8 oder Hailo-10H.

44 Downloads
Größe
~10.7MB
Speicher
2GB+
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-yolov5s \
  --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/yolov5s:latest \
  python web_detection.py --model_path model/yolov5s.hef --video_path video/test.mp4

Modelldetails

reComputer R Series (CM5 + Hailo-10H)

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

YOLOv5s und YOLOv5m führen COCO-Objekterkennung (80 Klassen) auf Hailo-10H über HailoRT aus. NMS und Sigmoid laufen on-chip (Hailo HPP), der Host parst nur den Post-NMS-Tensor.

Diese Seite richtet sich an reComputer R Series (CM5 + Hailo-10H) mit einem PCIe-Hailo-10H-Beschleuniger.

Hardware und Host-Setup

ElementWert
BoardreComputer R Series mit Raspberry Pi CM5
BeschleunigerHailo-10H über PCIe, verfügbar als /dev/hailo0
RuntimeHailoRT 5.1.1
Python im Container3.13, aarch64

Installieren Sie die Hailo-10H-Pakete auf dem Host und prüfen Sie Treiber und Gerät, bevor Sie den Container starten:

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

Die erwartete HailoRT-Version für diese Images ist 5.1.1.

Ausführung mit dem Demo-Video

YOLOv5s:

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

YOLOv5m:

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

Öffnen Sie http://<Board_IP>:8000 für die Webvorschau.

USB-Kameramodus

bash
sudo docker run --rm \
  --name cm5-hailo10h-yolov5s \
  --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/yolov5s:latest \
  python web_detection.py --model_path model/yolov5s.hef --camera_id 0

Ersetzen Sie yolov5s durch yolov5m, um die mittlere Variante zu nutzen.

HEF-Dateien

HEFGrößeHinweise
yolov5s.hef13,029,376 (12.4 MB)Parameter 7.46M, Ops 17.44G
yolov5m.hef19,812,352 (18.9 MB)Parameter 21.78M, Ops 52.17G

YOLOv5s ist die kleine, YOLOv5m die mittlere Variante; beide sind Hailo-10H-Builds aus dem Hailo Model Zoo v5.4.0.

Source: https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v5.4.0/hailo10h/yolov5s.hef (yolov5m.hef in the same directory).

REST API

text
POST http://<Board_IP>:8000/api/models/yolov5s/predict
bash
curl -X POST "http://<Board_IP>:8000/api/models/yolov5s/predict" \
  -F "file=@test.jpg"
EndpunktMethodeZweck
/GETWeb-Vorschau-Oberfläche
/api/models/yolov5s/predictPOSTDetektionen (JSON)
/api/video_feedGETMJPEG-Vorschaustream

Implementierungshinweise

  • Das HEF führt NMS und Sigmoid on-chip aus (zoo base/yolo.yaml: nms: true, hpp: true); nms_thresh wird nur aus API-Gründen akzeptiert.
  • Post-NMS-Zeilen sind [ymin, xmin, ymax, xmax, score], normalisiert auf [0,1] der 640x640-Letterbox-Eingabe; die Anwendung skaliert auf Pixel und hebt das Letterbox auf.
  • Das HEF enthält normalize_in_net (mean 0 / std 255, also /255) und padding_color=114: die Anwendung letterboxt mit Grau (114) und übergibt rohe uint8-RGB-Pixel.
  • Klassen-IDs 0..79 indizieren direkt die standardmäßige COCO-Liste (die Model-Zoo-Evaluierung nutzt labels_offset=1).
  • Der Model Zoo dokumentiert die Post-NMS-Form als 80x5x80; der Parser akzeptiert das tatsächliche Layout zur Laufzeit und protokolliert es einmal ([YOLOv5] raw output type=..., shape=...).
  • Standardwerte: Konfidenz 0.25; der IOU-Regler ist ohne Wirkung, da das NMS on-chip läuft.

Entwicklungshinweise

  • Quellmodule: src/hailo10h_yolov5s/, src/hailo10h_yolov5m/
  • Dockerfiles: docker/hailo10h/yolov5s.dockerfile, docker/hailo10h/yolov5m.dockerfile
  • Container: ghcr.io/seeed-projects/recomputer-hailo10h-cv/yolov5s:latest, .../yolov5m:latest
  • Beide Module nutzen die HailoRT-5.1.1-InferModel-API und Hailo-10H-spezifische HEFs.
  • Unit-Tests laufen ohne Gerät: python -m unittest discover -s tests -v.