CV / CenterNet
CenterNet (resnet_v1_18)
COCO 80-class object detection with CenterNet (ResNet-18) on reComputer R Series with Hailo-8.
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-centernet \
--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/centernet_resnet_v1_18_postprocess:latest \
python web_detection.py --model_path model/centernet_resnet_v1_18_postprocess.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/centernet_resnet_v1_18_postprocess/predict" \
-F "file=@test.jpg"import requests
response = requests.post(
"http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(response.json())Détails du modèle
reComputer R SeriesCenterNet (resnet_v1_18) sur reComputer R Series (CM5 + Hailo-8)
CenterNet avec squelette ResNet-18 effectue la détection d'objets sur 80 classes COCO sur Hailo-8 via HailoRT, en utilisant la variante de post-traitement max_finder intégrée à la puce.
Cette page cible la reComputer R Series (CM5 + Hailo-8) avec un accélérateur Hailo-8 PCIe.
Informations sur le modèle
| Propriété | Valeur |
|---|---|
| Architecture | CenterNet (squelette ResNet-18) |
| Tâche | Détection d'objets |
| Entrée | 512x512x3 RGB (normalisation compilée dans le HEF) |
| Sortie | 3 têtes : wh (128x128x2), reg (128x128x2), carte thermique creuse (128x128x80) |
| Classes | 80 (COCO) |
| Paramètres | 14.22M |
| Opérations | 31.21G |
| mAP matériel | 25.0 (COCO, référence Hailo Model Zoo) |
| HEF | Hailo Model Zoo v2.19.0, Hailo-8 |
La valeur de précision provient du tableau de détection d'objets Hailo Model Zoo pour Hailo-8. Ce n'est pas une mesure 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 sur PCIe, exposé en /dev/hailo0 |
| Runtime | HailoRT 4.23.x |
| Python dans le conteneur | 3.11, aarch64 |
Installez les paquets correspondants 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
# Les deux candidats doivent être en 4.23.x avant l'installation.
apt-cache policy hailort hailort-pcie-driver
sudo apt install hailort=4.23.0 hailort-pcie-driver=4.23.0
sudo reboot
# Après redémarrage
hailortcli --version
hailortcli fw-control identify
ls -l /dev/hailo0La version HailoRT attendue pour cette image est 4.23.x. Ne continuez pas si apt-cache policy sélectionne HailoRT 5.x ; ce runtime cible Hailo-10H et n'est pas compatible avec ce conteneur Hailo-8.
Exécuter avec la vidéo de démonstration
sudo docker run --rm \
--name cm5-hailo8-centernet \
--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/centernet_resnet_v1_18_postprocess:latest \
python web_detection.py --model_path model/centernet_resnet_v1_18_postprocess.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-centernet \
--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/centernet_resnet_v1_18_postprocess:latest \
python web_detection.py --model_path model/centernet_resnet_v1_18_postprocess.hef --camera_id 0API REST
Point de terminaison de prédiction :
POST http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predictExemple de requête image :
curl -X POST "http://<Board_IP>:8000/api/models/centernet_resnet_v1_18_postprocess/predict" \
-F "file=@test.jpg"| Point de terminaison | Méthode | Objectif |
|---|---|
| / | GET | Interface d'aperçu web |
| /api/models/centernet_resnet_v1_18_postprocess/predict | POST | Détections (JSON) |
| /api/video_feed | GET | Flux d'aperçu MJPEG |
Notes d'implémentation
- Le HEF a été compilé avec
normalize_in_net=true(moyenne/écart-type ImageNet, RGB) ; l'application applique donc un letterbox vers 512x512, convertit BGR en RGB et fournit des pixels uint8 bruts — sans normalisation manuelle. - La tête de carte thermique est déjà creuse : le
max_finderintégré et le seuil de score (0.2) ne conservent que les maxima locaux au-dessus du seuil. Le décodeur prend ces pics, litwh/regà chaque pic et reconstruit les boîtes avec la formule officielle de Hailo Model Zoo (stride 4, carte de caractéristiques 128x128 → entrée 512x512), puis annule le letterbox vers l'image d'origine. - Les deux têtes à 2 canaux (wh, reg) sont mappées par nom de vstream lorsque le numéro de convolution est exposé (conv3 → wh, conv5 → reg), sinon par ordre de sortie du réseau. La première inférence affiche le nom et la forme de chaque vstream ainsi que le mappage résolu, pour vérification sur le matériel.
Notes de développement
- Module source :
src/rpi5_hailo8_centernet_resnet_v1_18_postprocess/ - Dockerfile :
docker/hailo8/centernet_resnet_v1_18_postprocess.dockerfile - Conteneur :
ghcr.io/seeed-projects/recomputer-hailo8-cv/centernet_resnet_v1_18_postprocess:latest - Le module utilise l'API VStreams de HailoRT 4.23 et un HEF spécifique Hailo-8.
Entrées et sorties
Entrée : image, vidéo ou image provenant d’une caméra USB. Sortie : boîtes de détection pour les 80 classes COCO avec scores de confiance, ainsi qu’un aperçu MJPEG annoté.