CV / EfficientDet

EfficientDet-Lite2

EfficientDet-Lite2 mit einem BiFPN-Head erkennt auf Hailo-8 80 COCO-Objektklassen. NMS und Sigmoid werden On-Chip ausgeführt (Hailo HPP), sodass die Anwendung nur den Tensor nach der NMS verarbeitet. Lite2-Variante der EfficientDet-Familie – mit dem größten Backbone und einer Eingabeauflösung von 448x448 für die höchste Genauigkeit der drei Varianten.

2 Downloads
Größe
14 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-lite2 \
  --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_lite2:latest \
  python web_detection.py --model_path model/efficientdet_lite2.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_lite2/predict" \
  -F "file=@test.jpg"
Python
import requests

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

Modelldetails

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

EfficientDet-Lite2 führt über HailoRT eine Objekterkennung für 80 COCO-Klassen auf Hailo-8 durch. NMS und Sigmoid werden On-Chip ausgeführt (Hailo HPP), sodass der Host nur den Post-NMS-Tensor analysiert. Dies ist die Lite2-Variante der efficientdet-Familie – mit dem größten Backbone und einer Eingabegröße von 448x448 für die höchste Genauigkeit der drei Varianten (lite0/lite1/lite2).

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

Modellinformationen

EigenschaftWert
ArchitekturEfficientDet-Lite2 (BiFPN)
AufgabeObjekterkennung
Eingabe448x448x3 RGB (Normalisierung ist 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 ungenutzt)
Parameter5.93M
Operationen6.84G
NachverarbeitungOn-Chip-NMS (HPP) + Sigmoid; der Host analysiert den Post-NMS-Tensor
HEFHailo Model Zoo v2.19.0, Hailo-8

Der Genauigkeitswert ist der Referenzwert aus dem Hailo Model Zoo. Es handelt sich nicht um einen auf CM5 gemessenen Benchmark.

Hardware- und Host-Einrichtung

KomponenteWert
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 vergewissern Sie sich vor dem Start des Containers, dass Treiber und Gerät bereit sind:

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 Demovideo ausführen

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

REST API

Vorhersage-Endpunkt:

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

Beispiel für eine Bildanfrage:

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

Implementierungshinweise

  • Identischer Ein-/Ausgabevertrag und identische Nachverarbeitung wie bei den Lite0-/Lite1-Builds; nur Backbone und Eingabegröße unterscheiden sich (448x448, 5.93M Parameter → höchste Genauigkeit der drei Varianten).
  • Die HEF führt NMS On-Chip aus (device_pre_post_layers: nms=true, sigmoid=true, hpp=true); die App analysiert nur den Post-NMS-Tensor (entsprechend 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 Letterbox-Eingabe mit 448x448 normalisiert; die App skaliert auf Pixel und entfernt das Letterboxing.
  • normalize_in_net mit mean=127/std=128 + padding_color=127: Die App verwendet graues Padding (127) für das Letterboxing und übergibt unverarbeitete uint8-RGB-Pixel – ohne manuelle Normalisierung.
  • HailoRT gibt den NMS-vstream als unregelmäßige klassenbezogene Liste (NMS nach Score) zurück; der Parser unterstützt dieses sowie Objekt- und Dense-Layouts. Bei der ersten Inferenz werden Rohdatentyp und -form protokolliert, damit sie auf der Hardware überprüft werden können.
  • Klassenzuordnung: cls_id (0..88) → COCO-Kategorie-ID cls_id+1 (labels_offset=1); die 10 ungenutzten COCO-IDs sind mit „N/A“ gekennzeichnet und werden nicht dargestellt. Falls die Labels verschoben erscheinen, leiten Sie die Zuordnung erneut aus dem Protokoll der ersten Inferenz ab.
  • Standardwerte: Konfidenz 0.25, IOU 0.45 (IOU hat keine Auswirkung – NMS wird On-Chip ausgeführt). Die Model-Zoo- Evaluierung verwendet 0.001 / 0.5 – senken Sie den Konfidenzregler, um mehr Erkennungen zu prüfen.

Entwicklungshinweise

  • Quellmodul: src/rpi5_hailo8_efficientdet_lite2/
  • Dockerfile: docker/hailo8/efficientdet_lite2.dockerfile
  • Container: ghcr.io/seeed-projects/recomputer-hailo8-cv/efficientdet_lite2: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 lite2- Build.

Eingaben und Ausgaben

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