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.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
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.mp4Modelldetails
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
| Element | Wert |
|---|---|
| Board | reComputer R Series mit Raspberry Pi CM5 |
| Beschleuniger | Hailo-10H über PCIe, verfügbar als /dev/hailo0 |
| Runtime | HailoRT 5.1.1 |
| Python im Container | 3.13, aarch64 |
Installieren Sie die Hailo-10H-Pakete auf dem Host und prüfen Sie Treiber und Gerät, bevor Sie den Container starten:
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot
# After reboot
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0Die erwartete HailoRT-Version für diese Images ist 5.1.1.
Ausführung mit dem Demo-Video
YOLOv5s:
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.mp4YOLOv5m:
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
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 0Ersetzen Sie yolov5s durch yolov5m, um die mittlere Variante zu nutzen.
HEF-Dateien
| HEF | Größe | Hinweise |
|---|---|---|
yolov5s.hef | 13,029,376 (12.4 MB) | Parameter 7.46M, Ops 17.44G |
yolov5m.hef | 19,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
POST http://<Board_IP>:8000/api/models/yolov5s/predictcurl -X POST "http://<Board_IP>:8000/api/models/yolov5s/predict" \
-F "file=@test.jpg"| Endpunkt | Methode | Zweck |
|---|---|---|
/ | GET | Web-Vorschau-Oberfläche |
/api/models/yolov5s/predict | POST | Detektionen (JSON) |
/api/video_feed | GET | MJPEG-Vorschaustream |
Implementierungshinweise
- Das HEF führt NMS und Sigmoid on-chip aus (zoo
base/yolo.yaml:nms: true,hpp: true);nms_threshwird 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) undpadding_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.