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.
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-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.mp4REST API
Verwende die REST API für die Inferenz. Kopiere die folgenden Befehle.
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite2/predict" \
-F "file=@test.jpg"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
| Eigenschaft | Wert |
|---|---|
| Architektur | EfficientDet-Lite2 (BiFPN) |
| Aufgabe | Objekterkennung |
| Eingabe | 448x448x3 RGB (Normalisierung ist 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 ungenutzt) |
| Parameter | 5.93M |
| Operationen | 6.84G |
| Nachverarbeitung | On-Chip-NMS (HPP) + Sigmoid; der Host analysiert den Post-NMS-Tensor |
| HEF | Hailo 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
| Komponente | 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 vergewissern Sie sich vor dem Start des Containers, dass Treiber und Gerät bereit sind:
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 Demovideo ausführen
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
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 0REST API
Vorhersage-Endpunkt:
POST http://<Board_IP>:8000/api/models/efficientdet_lite2/predictBeispiel für eine Bildanfrage:
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite2/predict" \
-F "file=@test.jpg"| Endpunkt | Methode | Zweck |
|---|---|---|
/ | GET | Webvorschau-UI |
/api/models/efficientdet_lite2/predict | POST | Erkennungen (JSON) |
/api/video_feed | GET | MJPEG-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 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 Letterbox-Eingabe mit 448x448 normalisiert; die App skaliert auf Pixel und entfernt das Letterboxing. normalize_in_netmit 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-IDcls_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.