CV / EfficientDet
EfficientDet-Lite0
EfficientDet-Lite0 mit einem BiFPN-Kopf erkennt 80 COCO-Objektklassen auf Hailo-8. NMS und Sigmoid werden On-Chip ausgeführt (Hailo HPP), sodass die App nur den Tensor nach NMS analysiert. Lite0-Variante der EfficientDet-Familie.
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-lite0 \
--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_lite0:latest \
python web_detection.py --model_path model/efficientdet_lite0.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_lite0/predict" \
-F "file=@test.jpg"import requests
response = requests.post(
"http://<Board_IP>:8000/api/models/efficientdet_lite0/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(response.json())Modelldetails
EfficientDet-Lite0 auf reComputer R Series (CM5 + Hailo-8)
EfficientDet-Lite0 führt die Objekterkennung für 80 COCO-Klassen auf Hailo-8 über HailoRT durch. NMS und Sigmoid werden on-chip (Hailo HPP) ausgeführt, sodass der Host nur den Post-NMS-Tensor parsen muss. Dies ist die Lite0-Variante der efficientdet-Familie.
Diese Seite richtet sich an reComputer R Series (CM5 + Hailo-8) mit einem Hailo-8-Beschleuniger über PCIe.
Modellinformationen
| Eigenschaft | Wert |
|---|---|
| Architektur | EfficientDet-Lite0 (BiFPN) |
| Aufgabe | Objekterkennung |
| Eingabe | 320x320x3 RGB (Normalisierung in die HEF kompiliert: mean=127, std=128) |
| Ausgabe | On-Chip-NMS-Tensor, Post-NMS-Shape 89x5x100 |
| Klassen | 89 Slots (COCO-Kategorie-IDs 1..89 über labels_offset=1; 10 ungenutzt) |
| Parameter | 3.56M |
| Operationen | 1.94G |
| Postprocessing | On-Chip-NMS (HPP) + Sigmoid; der Host parst den Post-NMS-Tensor |
| HEF | Hailo Model Zoo v2.19.0, Hailo-8 |
Der Genauigkeitswert ist die Referenz aus dem 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-lite0 \
--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_lite0:latest \
python web_detection.py --model_path model/efficientdet_lite0.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-lite0 \
--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_lite0:latest \
python web_detection.py --model_path model/efficientdet_lite0.hef --camera_id 0REST API
Vorhersage-Endpunkt:
POST http://<Board_IP>:8000/api/models/efficientdet_lite0/predictBeispiel für eine Bildanfrage:
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite0/predict" \
-F "file=@test.jpg"| Endpunkt | Methode | Zweck |
|---|---|---|
/ | GET | Webvorschau-UI |
/api/models/efficientdet_lite0/predict | POST | Erkennungen (JSON) |
/api/video_feed | GET | MJPEG-Vorschau-Stream |
Implementierungshinweise
- Die HEF führt NMS on-chip aus (
device_pre_post_layers: nms=true, sigmoid=true, hpp=true); die Anwendung parst nur den Post-NMS-Tensor (gemäß dem offiziellentf_postproc_nms), daher wirdnms_threshignoriert (nur API-Kompatibilität). - Die Post-NMS-Zeilen haben das Format
[ymin, xmin, ymax, xmax, score]und sind auf [0,1] der letterboxed 320x320-Eingabe normalisiert; die Anwendung skaliert auf Pixel und entfernt das Letterboxing.normalize_in_netmit mean=127/std=128 undpadding_color=127: Die Anwendung verwendet Letterboxing mit grauem Padding (127) und übergibt rohe uint8-RGB-Pixel — es ist keine manuelle Normalisierung erforderlich.- HailoRT kann den NMS-vstream als klassenbezogene Liste (NMS-by-score), als
Objekt-Array oder als dichtes Float32-Array
(1,89,5,100)/(1,89,100,5)zurückgeben. Der Parser verarbeitet alle drei Formate; bei der ersten Inferenz werden der rohe Typ und die Shape protokolliert, damit dies auf der Hardware überprüft werden kann. - Klassen-Mapping:
cls_id(0..88) → COCO-Kategorie-IDcls_id+1(labels_offset=1); die 10 ungenutzten COCO-IDs sind „N/A“ und werden nicht gezeichnet. Wenn die Labels verschoben erscheinen, leiten Sie das Mapping aus dem Log der ersten Inferenz erneut ab.
- Standardwerte: Konfidenz 0.25, IOU 0.45 (IOU hat keine Auswirkung — NMS läuft on-chip). Die Auswertung im Model Zoo verwendet 0.001 / 0.5 — verringern Sie den Konfidenzregler, um weitere Ergebnisse zu untersuchen.
Hinweise zur Entwicklung
- Quellmodul:
src/rpi5_hailo8_efficientdet_lite0/ - Dockerfile:
docker/hailo8/efficientdet_lite0.dockerfile- Container:
ghcr.io/seeed-projects/recomputer-hailo8-cv/efficientdet_lite0:latest
- Container:
- Das Modul verwendet die HailoRT 4.23 VStreams API und eine Hailo-8-spezifische HEF.
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.