CV / EfficientDet
EfficientDet-Lite1
COCO-Objekterkennung mit 80 Klassen durch EfficientDet-Lite1 (On-Chip-NMS) auf der 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-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
reComputer R Series (CM5 + Hailo-8)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.