CV / NanoDet
NanoDet-RepVGG
reComputer R Series (CM5 + Hailo-10H)
Détection d'objets COCO 80 classes avec NanoDet-RepVGG (NMS intégré) sur reComputer R Series avec Hailo-8 ou Hailo-10H.
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-hailo10h-nanodet-repvgg \
--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/nanodet_repvgg:latest \
python web_detection.py --model_path model/nanodet_repvgg.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/nanodet_repvgg/predict" \
-F "file=@test.jpg"import requests
response = requests.post(
"http://<Board_IP>:8000/api/models/nanodet_repvgg/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(response.json())Détails du modèle
reComputer R Series (CM5 + Hailo-10H)NanoDet-RepVGG sur reComputer CM5 + Hailo-10H
NanoDet-RepVGG effectue la détection d'objets COCO 80 classes sur Hailo-10H avec
NMS intégré (Hailo HPP). Le HEF émet des détections déjà décodées et l'app
analyse uniquement le tenseur post-NMS. Porté depuis le module Hailo-8 validé
rpi5_hailo8_nanodet_repvgg ; l'exécuteur utilise le wrapper multi-sorties
create_infer_model de HailoRT 5.1.1 avec sorties FLOAT32.
Informations sur le modèle
| Propriété | Valeur |
|---|---|
| Architecture | NanoDet-RepVGG (COCO-80) |
| Tâche | Détection d'objets |
| Entrée | Lue du HEF au démarrage (affichée à la première exécution) |
| Sortie | Tenseur NMS intégré, forme post-NMS 80x5x100 |
| Classes | 80 (COCO, indexées à partir de 0, sans labels_offset) |
| HEF | Hailo Model Zoo v5.4.0, Hailo-10H (5.2 MB) |
Matériel et configuration de l'hôte
| Élément | Valeur |
|---|---|
| Carte | reComputer R Series avec Raspberry Pi CM5 |
| Accélérateur | Hailo-10H via PCIe, exposé comme /dev/hailo0 |
| Pilote hôte | paquet apt hailo-h10-all |
| Runtime | HailoRT 5.1.1 |
| Python dans le conteneur | 3.13, aarch64 |
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot
# After reboot
hailortcli fw-control identify
ls /dev/hailo0Exécuter avec la vidéo de démonstration
sudo docker run --rm \
--name cm5-hailo10h-nanodet-repvgg \
--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/nanodet_repvgg:latest \
python web_detection.py --model_path model/nanodet_repvgg.hef --video_path video/test.mp4Ouvrez http://<Board_IP>:8000 pour voir l'aperçu web. Pour une caméra USB,
montez /dev/video0 et remplacez --video_path video/test.mp4 par
--camera_id 0.
REST API
curl -X POST "http://<Board_IP>:8000/api/models/nanodet_repvgg/predict" \
-F "file=@test.jpg"| Endpoint | Méthode | Description |
|---|---|---|
/health | GET | Contrôle de santé |
/api/models/nanodet_repvgg/predict | POST | Détections (JSON) |
/api/video_feed | GET | Flux d'aperçu MJPEG |
Notes d'implémentation
- Le HEF exécute le NMS en puce ; l'app analyse uniquement le tenseur post-NMS,
donc
nms_threshest ignoré (parité d'API uniquement). - Les lignes post-NMS sont
[ymin, xmin, ymax, xmax, score], normalisées à [0,1] de l'entrée letterbox ; l'app convertit en pixels et annule le letterbox. - La normalisation/transformation des couleurs est compilée dans le HEF ; l'app fait le letterbox et fournit des pixels uint8 bruts.
- HailoRT peut renvoyer le vstream NMS comme liste ragged par classe (NMS-by-score) ; l'analyseur gère aussi les layouts object/dense. La première inférence journalise le type/forme bruts pour vérification.
- Les sorties de l'exécuteur sont demandées en
FormatType.FLOAT32(déquantifiées par le SDK) ; lire les buffers quantifiés bruts produit des valeurs à dixaines de milliers et zéro détection valide. - Mappage des classes :
cls_id(0..79) → liste COCO de 80 classes directement.
Source du modèle
nanodet_repvgg.hef est la compilation Hailo-10H de Hailo Model Zoo v5.4.0 —
URL, SHA256 et taille enregistrés dans le dépôt
(src/hailo10h_nanodet_repvgg/model/README.md).
Entrées et sorties
Input: image, video, or USB camera frame. Output: COCO 80-class detection boxes with confidences, plus an annotated MJPEG preview.