CV / EfficientDet
EfficientDet-Lite2
COCO-Objekterkennung mit 80 Klassen mithilfe von EfficientDet-Lite2 (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-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
reComputer R Series (CM5 + Hailo-8)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.