CV / EfficientDet
EfficientDet-Lite2
EfficientDet-Lite2 avec une tête BiFPN détecte 80 classes d’objets COCO sur Hailo-8. Le NMS et la fonction sigmoïde s’exécutent sur la puce (Hailo HPP) ; l’application analyse donc uniquement le tenseur post-NMS. Variante Lite2 de la famille efficientdet — backbone le plus grand et entrée 448x448 pour la meilleure précision des trois variantes.
Choisissez l'appareil que vous utilisez. Le guide de configuration et la documentation seront mis à jour en conséquence.
Pour commencer
sudo docker run --rm \
--name cm5-hailo8-efficientdet-lite2 \
--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_lite2:latest \
python web_detection.py --model_path model/efficientdet_lite2.hef --video_path video/test.mp4API REST
Utilisez l'API REST pour exécuter l'inférence. Copiez les commandes ci-dessous.
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite2/predict" \
-F "file=@test.jpg"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
EfficientDet-Lite2 sur reComputer R Series (CM5 + Hailo-8)
EfficientDet-Lite2 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 Lite2 de la famille efficientdet — le backbone le plus grand et une entrée 448x448 pour la meilleure précision des trois variantes (lite0/lite1/ lite2).
Cette page cible reComputer R Series (CM5 + Hailo-8) avec un accélérateur Hailo-8 PCIe.
Informations sur le modèle
| Propriété | Valeur |
|---|---|
| Architecture | EfficientDet-Lite2 (BiFPN) |
| Tâche | Détection d’objets |
| Entrée | 448x448x3 RGB (normalisation intégrée au HEF : mean=127, std=128) |
| Sortie | tenseur NMS sur puce, forme post-NMS 89x5x100 |
| Classes | 89 emplacements (ID de catégories COCO 1..89 via labels_offset=1 ; 10 inutilisés) |
| Paramètres | 5.93M |
| Opérations | 6.84G |
| Post-traitement | NMS sur puce (HPP) + sigmoid ; l’hôte analyse le tenseur post-NMS |
| HEF | Hailo Model Zoo v2.19.0, Hailo-8 |
La valeur de précision correspond à la référence du Hailo Model Zoo. Il ne s’agit pas d’une mesure de benchmark effectuée sur CM5.
Configuration matérielle et de l’hôte
| Élément | Valeur |
|---|---|
| Carte | reComputer R Series avec Raspberry Pi CM5 |
| Accélérateur | Hailo-8 via PCIe, exposé en tant que /dev/hailo0 |
| Runtime | HailoRT 4.23.x |
| Python dans le conteneur | 3.11, aarch64 |
Installez les packages 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 :
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/hailo0La version HailoRT attendue pour cette image est 4.23.x.
Exécution avec une vidéo de démonstration
sudo docker run --rm \
--name cm5-hailo8-efficientdet-lite2 \
--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_lite2:latest \
python web_detection.py --model_path model/efficientdet_lite2.hef --video_path video/test.mp4Ouvrez http://<Board_IP>:8000 pour afficher l’aperçu Web.
Mode caméra USB
sudo docker run --rm \
--name cm5-hailo8-efficientdet-lite2 \
--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_lite2:latest \
python web_detection.py --model_path model/efficientdet_lite2.hef --camera_id 0REST API
Endpoint de prédiction :
POST http://<Board_IP>:8000/api/models/efficientdet_lite2/predictExemple de requête d’image :
curl -X POST "http://<Board_IP>:8000/api/models/efficientdet_lite2/predict" \
-F "file=@test.jpg"| Endpoint | Méthode | Fonction |
|---|---|---|
/ | GET | Interface utilisateur d’aperçu Web |
/api/models/efficientdet_lite2/predict | POST | Détections (JSON) |
/api/video_feed | GET | Flux d’aperçu MJPEG |
Notes d’implémentation
- Contrat d’entrée/sortie et post-traitement identiques à ceux des builds Lite0/Lite1 ; seul le backbone et la taille d’entrée diffèrent (448x448, 5.93M paramètres → meilleure précision des trois).
- 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 autf_postproc_nmsofficiel), doncnms_threshest ignoré (uniquement pour la parité de l’API). - Les lignes post-NMS sont
[ymin, xmin, ymax, xmax, score], normalisées dans [0,1] par rapport à l’entrée 448x448 avec letterboxing ; l’application les convertit en pixels et annule le letterboxing. normalize_in_netavec mean=127/std=128 +padding_color=127: l’application applique un letterboxing avec un remplissage gris (127) et transmet les pixels RGB uint8 bruts — aucune normalisation manuelle.- HailoRT renvoie le vstream NMS sous forme de liste irrégulière par classe (NMS par score) ; le parser gère également les formats object/dense. La première inférence journalise le type et la forme bruts afin de permettre leur vérification sur le matériel.
- Mappage des classes :
cls_id(0..88) → ID de catégorie COCOcls_id+1(labels_offset=1) ; les 10 ID COCO inutilisés sont indiqués par « N/A » et ne sont pas dessinés. Si les labels semblent décalés, déduisez à nouveau le mappage à 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 du 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_lite2/ - Dockerfile :
docker/hailo8/efficientdet_lite2.dockerfile - Conteneur :
ghcr.io/seeed-projects/recomputer-hailo8-cv/efficientdet_lite2: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 du build lite2.
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é.