CV / EfficientDet

EfficientDet-Lite1

EfficientDet-Lite1 met een BiFPN-head detecteert 80 COCO-objectklassen op Hailo-8. NMS en sigmoid worden op de chip uitgevoerd (Hailo HPP), zodat de app alleen de tensor na NMS hoeft te verwerken. Lite1-variant van de efficientdet-familie, met een grotere backbone en een invoerresolutie van 384x384 voor een hogere nauwkeurigheid dan Lite0.

1 downloads
Grootte
16 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-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

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_lite1/predict" \
  -F "file=@test.jpg"
Python
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())

Modeldetails

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

EfficientDet-Lite1 voert objectdetectie met 80 COCO-klassen uit 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 Lite1-variant van de efficientdet-familie — een grotere backbone en een invoer van 384x384 voor hogere nauwkeurigheid dan Lite0.

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

Modelinformatie

EigenschapWaarde
ArchitectuurEfficientDet-Lite1 (BiFPN)
TaakObjectdetectie
Invoer384x384x3 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)
Parameters4.73M
Bewerkingen4G
Postprocessingon-chip NMS (HPP) + sigmoid; de host parseert de post-NMS-tensor
HEFHailo Model Zoo v2.19.0, Hailo-8

De nauwkeurigheidswaarde is de referentiewaarde uit 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-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

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

USB-cameramodus

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

REST API

Voorspellingsendpoint:

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

Voorbeeld van een afbeeldingsverzoek:

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

Implementatienotities

  • Het invoer-/uitvoercontract en de postprocessing zijn identiek aan die van de Lite0-build; alleen de backbone en invoergrootte verschillen (384x384, 4.73M parameters → hogere nauwkeurigheid).
  • 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 API-pariteit).
  • Post-NMS-rijen hebben de vorm [ymin, xmin, ymax, xmax, score] en zijn genormaliseerd naar [0,1] van de letterboxed invoer van 384x384; de app schaalt naar pixels en verwijdert de letterboxing.
  • normalize_in_net met mean=127/std=128 + padding_color=127: de app voegt grijze padding (127) toe met letterboxing en voert onbewerkte uint8 RGB-pixels aan — handmatige normalisatie is niet nodig.
    • HailoRT retourneert de NMS-vstream als een ragged lijst per klasse (NMS-by-score); de parser verwerkt dit, evenals object-/dense-indelingen. De eerste inferentie logt het onbewerkte type/de vorm, zodat dit op de hardware kan worden gecontroleerd.
    • Klassekoppeling: 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 koppeling dan opnieuw af uit het logboek 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_lite1/
  • Dockerfile: docker/hailo8/efficientdet_lite1.dockerfile
  • Container: ghcr.io/seeed-projects/recomputer-hailo8-cv/efficientdet_lite1:latest
  • De module gebruikt de HailoRT 4.23 VStreams API en een Hailo-8-specifieke HEF.
  • Familie: efficientdet (varianten lite0 / lite1 / lite2); dit is de lite1 build.

Invoer en uitvoer

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