CV / NanoDet
NanoDet-RepVGG-a1-640
reComputer R Series (CM5 + Hailo-10H)
Détection d'objets COCO 80 classes avec nanodet_repvgg_a1_640 (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-a1-640 \
--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_a1_640:latest \
python web_detection.py --model_path model/nanodet_repvgg_a1_640.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_a1_640/predict" \
-F "file=@test.jpg"import requests
response = requests.post(
"http://<Board_IP>:8000/api/models/nanodet_repvgg_a1_640/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-a1-640 sur reComputer CM5 + Hailo-10H
NanoDet-RepVGG-a1-640 effectue la détection d'objets COCO 80 classes sur
Hailo-10H avec NMS intégré (Hailo HPP). Même base (base/nanodet.yaml) que
nanodet_repvgg mais avec un backbone RepVGG-A1 plus grand et une entrée
640x640 pour une meilleure précision. 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_a1_640 ; 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-A1 (base/nanodet.yaml) |
| Tâche | Détection d'objets |
| Entrée | 640x640x3 (taille lue du HEF au démarrage) |
| Sortie | Tenseur NMS intégré, forme post-NMS 80x5x100 |
| Classes | 80 (COCO, indexées à partir de 0 via meta_arch=yolov8) |
| HEF | Hailo Model Zoo v5.4.0, Hailo-10H (7.9 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-a1-640 \
--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_a1_640:latest \
python web_detection.py --model_path model/nanodet_repvgg_a1_640.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_a1_640/predict" \
-F "file=@test.jpg"| Endpoint | Méthode | Description |
|---|---|---|
/health | GET | Contrôle de santé |
/api/models/nanodet_repvgg_a1_640/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_a1_640.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_a1_640/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.