CV / EfficientDet

EfficientDet-Lite2

reComputer R Series (CM5 + Hailo-10H)

Détection d’objets des 80 classes COCO avec EfficientDet-Lite2 (NMS intégré à la puce) sur reComputer R Series avec Hailo-8 ou Hailo-10H.

52 téléchargements
Taille
14 MB
Mémoire
4GB+
Précision
Hailo HEF / HailoRT

Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.

Pour commencer

Déployer
sudo docker run --rm \
  --name cm5-hailo10h-efficientdet-lite2 \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/efficientdet_lite2:latest \
  python web_detection.py --model_path model/efficientdet_lite2.hef --video_path video/test.mp4

API REST

Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.

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

Détails du modèle

reComputer R Series (CM5 + Hailo-10H)

EfficientDet-Lite2 sur reComputer R Series (CM5 + Hailo-10H)

EfficientDet-Lite2 effectue la détection d'objets COCO (80 classes) sur Hailo-10H via HailoRT. Le NMS et le sigmoid s'exécutent sur la puce (Hailo HPP) : l'hôte ne fait qu'analyser le tenseur post-NMS. C'est la variante lite2 de la famille efficientdet.

Cette page cible reComputer R Series (CM5 + Hailo-10H) avec un accélérateur PCIe Hailo-10H.

Informations du modèle

PropriétéValeur
ArchitectureEfficientDet-Lite2 (BiFPN)
TâcheDétection d'objets
Entrée448x448x3 RGB (normalisation compilée dans le HEF : mean=127, std=128)
Sortietenseur NMS embarqué, forme post-NMS 89x5x100
Classes89 emplacements (IDs de classe COCO 1..89 via labels_offset=1 ; 10 inutilisés)
Paramètres5.93M
Opérations6.84G
Post-traitementNMS embarqué (HPP) + sigmoid ; l'hôte analyse le tenseur post-NMS
HEFHailo Model Zoo v5.4.0, Hailo-10H (9,953,280 bytes)

La précision est la référence Hailo Model Zoo ; ce n'est pas un benchmark mesuré sur CM5.

Matériel et configuration de l'hôte

ÉlémentValeur
CartereComputer R Series avec Raspberry Pi CM5
AccélérateurHailo-10H via PCIe, exposé comme /dev/hailo0
RuntimeHailoRT 5.1.1
Python dans le conteneur3.13, aarch64

Installez les paquets Hailo-10H sur l'hôte et vérifiez que le pilote et le périphérique sont prêts avant de démarrer le conteneur :

bash
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot

# After reboot
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0

La version HailoRT attendue pour cette image est 5.1.1.

Exécution avec la vidéo de démonstration

bash
sudo docker run --rm \
  --name cm5-hailo10h-efficientdet-lite2 \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/efficientdet_lite2:latest \
  python web_detection.py --model_path model/efficientdet_lite2.hef --video_path video/test.mp4

Ouvrez http://<Board_IP>:8000 pour afficher l'aperçu web.

Mode caméra USB

bash
sudo docker run --rm \
  --name cm5-hailo10h-efficientdet-lite2 \
  --privileged \
  --net=host \
  -e PYTHONUNBUFFERED=1 \
  --device /dev/hailo0:/dev/hailo0 \
  --device /dev/video0:/dev/video0 \
  -v /usr/lib/libhailort.so.5.1.1:/usr/lib/libhailort.so.5.1.1:ro \
  -v /usr/lib/libhailort.so:/usr/lib/libhailort.so:ro \
  ghcr.io/seeed-projects/recomputer-hailo10h-cv/efficientdet_lite2:latest \
  python web_detection.py --model_path model/efficientdet_lite2.hef --camera_id 0

REST API

text
POST http://<Board_IP>:8000/api/models/efficientdet_lite2/predict
bash
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite2/predict" \
  -F "file=@test.jpg"
EndpointMéthodeRôle
/GETInterface d'aperçu web
/api/models/efficientdet_lite2/predictPOSTDétections (JSON)
/api/video_feedGETFlux d'aperçu MJPEG

Notes d'implémentation

  • Le HEF exécute le NMS et le sigmoid sur la puce (device_pre_post_layers: nms=true, sigmoid=true, hpp=true) ; l'application ne fait qu'analyser le tenseur post-NMS, donc nms_thresh est ignoré (compatibilité d'API uniquement).
  • Les lignes post-NMS sont [ymin, xmin, ymax, xmax, score], normalisées sur [0,1] de l'entrée letterboxée 448x448 ; l'application met à l'échelle en pixels puis annule le letterbox.
  • normalize_in_net avec mean=127/std=128 et padding_color=127 : l'application applique un letterbox gris (127) et transmet des pixels uint8 RGB bruts.
  • L'analyseur gère les formats NMS de HailoRT : le tampon compact par classe, les formes denses 89x5x100 / 89x100x5 et la liste ragged (NMS-by-score). La première inférence journalise une fois le type et la forme.
  • Mappage des classes : cls_id (0..88) correspond à l'ID de classe COCO cls_id+1 (labels_offset=1) ; les 10 IDs inutilisés sont "N/A" et ne sont pas dessinés.
  • Valeurs par défaut : confiance 0.25, IOU 0.45 (l'IOU est sans effet — NMS embarqué). Baissez le curseur de confiance pour voir plus de détections.

Notes de développement

  • Module source : src/hailo10h_efficientdet_lite2/
  • Dockerfile : docker/hailo10h/efficientdet_lite2.dockerfile
  • Conteneur : ghcr.io/seeed-projects/recomputer-hailo10h-cv/efficientdet_lite2:latest
  • Le module utilise l'API InferModel de HailoRT 5.1.1 et un HEF dédié à Hailo-10H.
  • Les tests unitaires s'exécutent sans appareil : python -m unittest discover -s tests -v.

Entrées et sorties

Entrée : image, vidéo ou image provenant d’une caméra USB. Sortie : boîtes de détection des 80 classes COCO avec scores de confiance, ainsi qu’un aperçu MJPEG annoté.