CV / NanoDet

NanoDet-RepVGG-a12

reComputer R Series (CM5 + Hailo-10H)

Détection d'objets COCO 80 classes avec nanodet_repvgg_a12 (basé sur YOLOX, NMS intégré) sur reComputer R Series avec Hailo-8 ou Hailo-10H.

40 téléchargements
Taille
7.5 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-nanodet-repvgg-a12 \
  --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_a12:latest \
  python web_detection.py --model_path model/nanodet_repvgg_a12.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/nanodet_repvgg_a12/predict" \
  -F "file=@test.jpg"
Python
import requests

response = requests.post(
    "http://<Board_IP>:8000/api/models/nanodet_repvgg_a12/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-a12 sur reComputer CM5 + Hailo-10H

NanoDet-RepVGG-a12 effectue la détection d'objets COCO 80 classes sur Hailo-10H avec NMS intégré (Hailo HPP). Malgré le nom « nanodet », cette variante est basée sur l'architecture YOLOX (base/yolox.yaml), entrée 640x640. 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_a12 ; 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
ArchitectureBasée sur YOLOX (base/yolox.yaml) + backbone RepVGG-A12
TâcheDétection d'objets
Entrée640x640x3 (taille lue du HEF au démarrage)
SortieTenseur NMS intégré, forme post-NMS 80x5x100
Classes80 (COCO, indexées à partir de 0 ; labels_offset=1 évaluation seule)
HEFHailo Model Zoo v5.4.0, Hailo-10H (4.6 MB)

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
Pilote hôtepaquet apt hailo-h10-all
RuntimeHailoRT 5.1.1
Python dans le conteneur3.13, aarch64
bash
sudo apt update
sudo apt install hailo-h10-all -y
sudo reboot

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

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

bash
sudo docker run --rm \
  --name cm5-hailo10h-nanodet-repvgg-a12 \
  --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_a12:latest \
  python web_detection.py --model_path model/nanodet_repvgg_a12.hef --video_path video/test.mp4

Ouvrez 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

bash
curl -X POST "http://<Board_IP>:8000/api/models/nanodet_repvgg_a12/predict" \
  -F "file=@test.jpg"
EndpointMéthodeDescription
/healthGETContrôle de santé
/api/models/nanodet_repvgg_a12/predictPOSTDétections (JSON)
/api/video_feedGETFlux 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_thresh est 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 (labels_offset=1 évaluation seule ; si les étiquettes semblent décalées, redérivez-les du journal de la première inférence).

Source du modèle

nanodet_repvgg_a12.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_a12/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.