CV / EfficientDet

EfficientDet-Lite1

EfficientDet-Lite1 mit einem BiFPN-Head erkennt 80 COCO-Objektklassen auf Hailo-8. NMS und Sigmoid werden On-Chip ausgeführt (Hailo HPP), sodass die Anwendung nur den Post-NMS-Tensor verarbeitet. Lite1-Variante der EfficientDet-Familie – mit größerem Backbone und einer Eingabegröße von 384x384 für eine höhere Genauigkeit als Lite0.

1 Downloads
Größe
16 MB
Speicher
4GB+
Präzision
Hailo HEF / HailoRT 4.23.x

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

Erste Schritte

Bereitstellen
sudo docker run --rm \
  --name cm5-hailo8-efficientdet-lite1 \
  --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/efficientdet_lite1:latest \
  python web_detection.py --model_path model/efficientdet_lite1.hef --video_path video/test.mp4

REST API

Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.

Curl
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite1/predict" \
  -F "file=@test.jpg"
Python
import requests

response = requests.post(
    "http://<Board_IP>:8000/api/models/efficientdet_lite1/predict",
    files={"file": open("test.jpg", "rb")},
    timeout=30,
)
print(response.json())

Modelldetails

EfficientDet-Lite1 auf reComputer R Series (CM5 + Hailo-8)

EfficientDet-Lite1 führt die Objekterkennung für 80 COCO-Klassen auf Hailo-8 über HailoRT durch. NMS und sigmoid werden auf dem Chip ausgeführt (Hailo HPP), sodass der Host nur den Post-NMS-Tensor analysiert. Dies ist die Lite1-Variante der efficientdet-Familie – mit größerem Backbone und einer Eingabegröße von 384x384 für höhere Genauigkeit als Lite0.

Diese Seite ist für reComputer R Series (CM5 + Hailo-8) mit einem PCIe-Hailo-8- Beschleuniger vorgesehen.

Modellinformationen

EigenschaftWert
ArchitekturEfficientDet-Lite1 (BiFPN)
AufgabeObjekterkennung
Eingabe384x384x3 RGB (Normalisierung in die HEF kompiliert: mean=127, std=128)
AusgabeOn-Chip-NMS-Tensor, Post-NMS-Form 89x5x100
Klassen89 Slots (COCO-Kategorie-IDs 1..89 über labels_offset=1; 10 nicht verwendet)
Parameter4.73M
Operationen4G
NachbearbeitungOn-Chip-NMS (HPP) + sigmoid; der Host analysiert den Post-NMS-Tensor
HEFHailo Model Zoo v2.19.0, Hailo-8

Der Genauigkeitswert stammt aus der Referenz von Hailo Model Zoo. Er wurde nicht auf CM5 gemessen.

Hardware- und Host-Einrichtung

ElementWert
BoardreComputer R Series mit Raspberry Pi CM5
BeschleunigerHailo-8 über PCIe, verfügbar als /dev/hailo0
LaufzeitumgebungHailoRT 4.23.x
Python im Container3.11, aarch64

Installieren Sie die Hailo-8-Pakete auf dem Host und bestätigen Sie, dass Treiber und Gerät bereit sind, bevor Sie den Container starten:

bash
sudo apt update
sudo apt install hailort hailort-pcie-driver python3-hailort
sudo reboot

# After reboot
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0

Die erwartete HailoRT-Version für dieses Image ist 4.23.x.

Mit Demo-Video ausführen

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

Öffnen Sie http://<Board_IP>:8000, um die Webvorschau anzuzeigen.

USB-Kameramodus

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

REST API

Vorhersage-Endpunkt:

text
POST http://<Board_IP>:8000/api/models/efficientdet_lite1/predict

Beispiel für eine Bildanfrage:

bash
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite1/predict" \
  -F "file=@test.jpg"
EndpunktMethodeZweck
/GETWebvorschau-UI
/api/models/efficientdet_lite1/predictPOSTErkennungen (JSON)
/api/video_feedGETMJPEG-Vorschau-Stream

Implementierungshinweise

  • Identischer Eingabe-/Ausgabevertrag und identische Nachbearbeitung wie beim Lite0-Build; nur Backbone und Eingabegröße unterscheiden sich (384x384, 4.73M Parameter → höhere Genauigkeit).
  • Die HEF führt NMS auf dem Chip aus (device_pre_post_layers: nms=true, sigmoid=true, hpp=true); die Anwendung analysiert nur den Post-NMS-Tensor (gemäß dem offiziellen tf_postproc_nms), daher wird nms_thresh ignoriert (nur für API-Parität).
  • Post-NMS-Zeilen haben das Format [ymin, xmin, ymax, xmax, score] und sind auf [0,1] der letterboxed Eingabe mit 384x384 normalisiert; die Anwendung skaliert auf Pixel und entfernt das Letterboxing.
  • normalize_in_net mit mean=127/std=128 + padding_color=127: Die Anwendung versieht die Eingabe mit grauem Padding (127) und übergibt unveränderte uint8-RGB-Pixel – keine manuelle Normalisierung.
    • HailoRT gibt den NMS-vstream als gezackte klassenweise Liste zurück (NMS-by-score); der Parser verarbeitet sowohl dieses Format als auch Objekt-/Dense-Layouts. Die erste Inferenz protokolliert Typ und Form der Rohdaten, damit dies auf der Hardware überprüft werden kann.
    • Klassenzuordnung: cls_id (0..88) → COCO-Kategorie-ID cls_id+1 (labels_offset=1); die 10 nicht verwendeten COCO-IDs sind „N/A“ und werden nicht gezeichnet. Wenn die Labels verschoben wirken, leiten Sie die Zuordnung aus dem Protokoll der ersten Inferenz erneut ab.
    • Standardwerte: confidence 0.25, IOU 0.45 (IOU hat keine Wirkung – NMS wird auf dem Chip ausgeführt). Die Model-Zoo-Auswertung verwendet 0.001 / 0.5 – reduzieren Sie den Confidence-Schieberegler, um mehr zu prüfen.

Entwicklungshinweise

  • Quellmodul: src/rpi5_hailo8_efficientdet_lite1/
  • Dockerfile: docker/hailo8/efficientdet_lite1.dockerfile
  • Container: ghcr.io/seeed-projects/recomputer-hailo8-cv/efficientdet_lite1:latest
  • Das Modul verwendet die HailoRT 4.23 VStreams API und eine Hailo-8-spezifische HEF.
  • Familie: efficientdet (Varianten lite0 / lite1 / lite2); dies ist der lite1- Build.

Eingaben und Ausgaben

Eingabe: Bild, Video oder Frame einer USB-Kamera. Ausgabe: Erkennungsrahmen für 80 COCO-Klassen mit Konfidenzwerten sowie eine annotierte MJPEG-Vorschau.