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.
Wähle das Gerät, das du verwendest. Die Einrichtungsanleitung und Dokumentation werden entsprechend aktualisiert.
Erste Schritte
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.mp4REST API
Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite1/predict" \
-F "file=@test.jpg"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
| Eigenschaft | Wert |
|---|---|
| Architektur | EfficientDet-Lite1 (BiFPN) |
| Aufgabe | Objekterkennung |
| Eingabe | 384x384x3 RGB (Normalisierung in die HEF kompiliert: mean=127, std=128) |
| Ausgabe | On-Chip-NMS-Tensor, Post-NMS-Form 89x5x100 |
| Klassen | 89 Slots (COCO-Kategorie-IDs 1..89 über labels_offset=1; 10 nicht verwendet) |
| Parameter | 4.73M |
| Operationen | 4G |
| Nachbearbeitung | On-Chip-NMS (HPP) + sigmoid; der Host analysiert den Post-NMS-Tensor |
| HEF | Hailo 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
| Element | Wert |
|---|---|
| Board | reComputer R Series mit Raspberry Pi CM5 |
| Beschleuniger | Hailo-8 über PCIe, verfügbar als /dev/hailo0 |
| Laufzeitumgebung | HailoRT 4.23.x |
| Python im Container | 3.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:
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/hailo0Die erwartete HailoRT-Version für dieses Image ist 4.23.x.
Mit Demo-Video ausführen
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
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 0REST API
Vorhersage-Endpunkt:
POST http://<Board_IP>:8000/api/models/efficientdet_lite1/predictBeispiel für eine Bildanfrage:
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite1/predict" \
-F "file=@test.jpg"| Endpunkt | Methode | Zweck |
|---|---|---|
/ | GET | Webvorschau-UI |
/api/models/efficientdet_lite1/predict | POST | Erkennungen (JSON) |
/api/video_feed | GET | MJPEG-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 offiziellentf_postproc_nms), daher wirdnms_threshignoriert (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_netmit 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-IDcls_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.