CV / EfficientDet

EfficientDet-Lite0

EfficientDet-Lite0 met een BiFPN-head detecteert 80 COCO-objectklassen op Hailo-8. NMS en sigmoid worden on-chip uitgevoerd (Hailo HPP), waardoor de app alleen de tensor na NMS verwerkt. Lite0-variant van de EfficientDet-familie.

2 downloads
Grootte
9.3 MB
Geheugen
4GB+
Precisie
Hailo HEF / HailoRT 4.23.x

Kies het apparaat dat je gebruikt. De installatiehandleiding en documentatie worden dienovereenkomstig bijgewerkt.

Aan de slag

Implementeren
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

REST API

Gebruik de REST API om inferentie uit te voeren. Kopieer de onderstaande commando's.

Curl
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite0/predict" \
  -F "file=@test.jpg"
Python
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())

Modeldetails

EfficientDet-Lite0 op reComputer R Series (CM5 + Hailo-8)

EfficientDet-Lite0 voert objectdetectie uit op 80 COCO-klassen op Hailo-8 via HailoRT. NMS en sigmoid worden on-chip uitgevoerd (Hailo HPP), zodat de host alleen de post-NMS-tensor hoeft te parseren. Dit is de Lite0-variant van de efficientdet-familie.

Deze pagina is bedoeld voor reComputer R Series (CM5 + Hailo-8) met een PCIe Hailo-8 accelerator.

Modelinformatie

EigenschapWaarde
ArchitectuurEfficientDet-Lite0 (BiFPN)
TaakObjectdetectie
Invoer320x320x3 RGB (normalisatie gecompileerd in de HEF: mean=127, std=128)
Uitvoeron-chip NMS-tensor, post-NMS-vorm 89x5x100
Klassen89 slots (COCO-categorie-ID's 1..89 via labels_offset=1; 10 ongebruikte)
Parameters3.56M
Bewerkingen1.94G
Postprocessingon-chip NMS (HPP) + sigmoid; host parseert de post-NMS-tensor
HEFHailo Model Zoo v2.19.0, Hailo-8

De nauwkeurigheidswaarde is de referentiewaarde van Hailo's Model Zoo. Deze is niet gemeten in een benchmark op CM5.

Hardware- en hostconfiguratie

ItemWaarde
BoardreComputer R Series met Raspberry Pi CM5
AcceleratorHailo-8 via PCIe, beschikbaar als /dev/hailo0
RuntimeHailoRT 4.23.x
Python in container3.11, aarch64

Installeer de Hailo-8-pakketten op de host en controleer of de driver en het apparaat gereed zijn voordat je de container start:

bash
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/hailo0

De verwachte HailoRT-versie voor deze image is 4.23.x.

Uitvoeren met demovideo

bash
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

Open http://<Board_IP>:8000 om de webpreview te bekijken.

USB-cameramodus

bash
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 0

REST API

Voorspellingsendpoint:

text
POST http://<Board_IP>:8000/api/models/efficientdet_lite0/predict

Voorbeeld van een afbeeldingsverzoek:

bash
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite0/predict" \
  -F "file=@test.jpg"
EndpointMethodeDoel
/GETWebpreview-UI
/api/models/efficientdet_lite0/predictPOSTDetecties (JSON)
/api/video_feedGETMJPEG-previewstream

Implementatienotities

  • De HEF voert NMS on-chip uit (device_pre_post_layers: nms=true, sigmoid=true, hpp=true); de app parseert alleen de post-NMS-tensor (volgens de officiële tf_postproc_nms), waardoor nms_thresh wordt genegeerd (alleen voor API-pariteit).
  • Post-NMS-rijen hebben de indeling [ymin, xmin, ymax, xmax, score], genormaliseerd naar [0,1] van de letterbox-invoer van 320x320; de app schaalt naar pixels en verwijdert de letterbox-padding.
  • normalize_in_net met mean=127/std=128 + padding_color=127: de app past letterboxing toe met grijze (127) padding en voert onbewerkte uint8 RGB-pixels aan — er is geen handmatige normalisatie.
    • HailoRT kan de NMS-vstream retourneren als een lijst per klasse (NMS-by-score), een objectarray of een dense float32 (1,89,5,100)/(1,89,100,5). De parser ondersteunt alle drie; bij de eerste inferentie worden het onbewerkte type en de vorm gelogd, zodat deze op de hardware kunnen worden gecontroleerd.
    • Klassenmapping: cls_id (0..88) → COCO-categorie-ID cls_id+1 (labels_offset=1); de 10 ongebruikte COCO-ID's zijn "N/A" en worden niet getekend. Als labels verschoven lijken, leid de mapping opnieuw af uit het log van de eerste inferentie.
    • Standaardwaarden: confidence 0.25, IOU 0.45 (IOU heeft geen effect — NMS is on-chip). Model Zoo-evaluatie gebruikt 0.001 / 0.5 — verlaag de confidence-schuifregelaar om meer te inspecteren.

Ontwikkelingsnotities

  • Bronmodule: src/rpi5_hailo8_efficientdet_lite0/
  • Dockerfile: docker/hailo8/efficientdet_lite0.dockerfile
  • Container: ghcr.io/seeed-projects/recomputer-hailo8-cv/efficientdet_lite0:latest
  • De module gebruikt de HailoRT 4.23 VStreams API en een HEF die specifiek is voor Hailo-8.
  • Familie: efficientdet (varianten lite0 / lite1 / lite2 gepland); dit is de lite0-build.

Invoer en uitvoer

Invoer: afbeelding, video of frame van een USB-camera. Uitvoer: detectiekaders voor 80 COCO-klassen met betrouwbaarheidsscores, plus een geannoteerde MJPEG-preview.