CV / EfficientDet

EfficientDet-Lite1

EfficientDet-Lite1 avec une tête BiFPN détecte 80 classes d’objets COCO sur Hailo-8. La NMS et la fonction sigmoïde s’exécutent sur la puce (Hailo HPP), de sorte que l’application analyse uniquement le tenseur post-NMS. Variante Lite1 de la famille efficientdet : backbone plus grand et entrée 384x384 pour une meilleure précision que Lite0.

1 téléchargements
Taille
16 MB
Mémoire
4GB+
Précision
Hailo HEF / HailoRT 4.23.x

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

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_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())

Détails du modèle

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

EfficientDet-Lite1 effectue la détection d’objets sur 80 classes COCO avec Hailo-8 via HailoRT. NMS et sigmoid s’exécutent sur la puce (Hailo HPP), de sorte que l’hôte analyse uniquement le tenseur post-NMS. Il s’agit de la variante Lite1 de la famille efficientdet — avec un backbone plus grand et une entrée 384x384 pour une meilleure précision que Lite0.

Cette page concerne reComputer R Series (CM5 + Hailo-8) avec un accélérateur Hailo-8 connecté via PCIe.

Informations sur le modèle

PropriétéValeur
ArchitectureEfficientDet-Lite1 (BiFPN)
TâcheDétection d’objets
Entrée384x384x3 RGB (normalisation compilée dans le HEF : mean=127, std=128)
Sortietenseur NMS sur puce, forme post-NMS 89x5x100
Classes89 emplacements (IDs de catégories COCO 1..89 via labels_offset=1 ; 10 inutilisés)
Paramètres4.73M
Opérations4G
Post-traitementNMS sur puce (HPP) + sigmoid ; l’hôte analyse le tenseur post-NMS
HEFHailo Model Zoo v2.19.0, Hailo-8

La valeur de précision correspond à la référence de Hailo Model Zoo. Il ne s’agit pas d’une mesure effectuée sur CM5.

Configuration matérielle et de l’hôte

ÉlémentValeur
CartereComputer R Series avec Raspberry Pi CM5
AccélérateurHailo-8 via PCIe, exposé en tant que /dev/hailo0
RuntimeHailoRT 4.23.x
Python dans le conteneur3.11, aarch64

Installez les paquets Hailo-8 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 hailort hailort-pcie-driver python3-hailort
sudo reboot

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

La version HailoRT attendue pour cette image est 4.23.x.

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

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

Ouvrez http://<Board_IP>:8000 pour afficher l’aperçu Web.

Mode caméra USB

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

Endpoint de prédiction :

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

Exemple de requête d’image :

bash
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite1/predict" \
  -F "file=@test.jpg"
EndpointMéthodeFonction
/GETInterface d’aperçu Web
/api/models/efficientdet_lite1/predictPOSTDétections (JSON)
/api/video_feedGETFlux d’aperçu MJPEG

Notes d’implémentation

  • Le contrat d’entrée/sortie et le post-traitement sont identiques à ceux de la version Lite0 ; seuls le backbone et la taille d’entrée diffèrent (384x384, 4.73M paramètres → meilleure précision).
  • Le HEF exécute NMS sur la puce (device_pre_post_layers: nms=true, sigmoid=true, hpp=true) ; l’application analyse uniquement le tenseur post-NMS (conformément à tf_postproc_nms officiel), de sorte que nms_thresh est ignoré (uniquement pour la parité de l’API).
  • Les lignes post-NMS sont au format [ymin, xmin, ymax, xmax, score], normalisées dans [0,1] par rapport à l’entrée 384x384 avec letterboxing ; l’application les convertit en pixels et supprime le letterboxing.
  • normalize_in_net avec mean=127/std=128 + padding_color=127 : l’application ajoute un padding gris (127) pour le letterboxing et fournit des pixels RGB uint8 bruts — aucune normalisation manuelle.
    • HailoRT renvoie le vstream NMS sous la forme d’une liste irrégulière par classe (NMS-by-score) ; l’analyseur gère également les formats object/dense. La première inférence journalise le type/la forme bruts afin de permettre leur vérification sur le matériel.
    • Mappage des classes : cls_id (0..88) → ID de catégorie COCO cls_id+1 (labels_offset=1) ; les 10 IDs COCO inutilisés sont indiqués par « N/A » et ne sont pas dessinés. Si les libellés semblent décalés, déduisez-les à nouveau à partir du journal de la première inférence.
    • Valeurs par défaut : confiance 0.25, IOU 0.45 (IOU n’a aucun effet — NMS s’exécute sur la puce). L’évaluation de Model Zoo utilise 0.001 / 0.5 — réduisez le curseur de confiance pour examiner davantage de résultats.

Notes de développement

  • Module source : src/rpi5_hailo8_efficientdet_lite1/
  • Dockerfile : docker/hailo8/efficientdet_lite1.dockerfile
  • Conteneur : ghcr.io/seeed-projects/recomputer-hailo8-cv/efficientdet_lite1:latest
  • Le module utilise l’API HailoRT 4.23 VStreams et un HEF spécifique à Hailo-8.
  • Famille : efficientdet (variantes lite0 / lite1 / lite2) ; il s’agit de la version lite1.

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é.