CV / SegFormer
SegFormer B0 BN
SegFormer B0 BN exécute la segmentation sémantique via le service de démonstration HailoRT du R20.
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-hailo-segformer-b0-bn \
--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-r20-cv/segformer_b0_bn:latest \
python web_detection.py --model_path model/segformer_b0_bn.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://<R20_IP>:8000/api/models/segformer/predict" \
-F "file=@test.jpg"import requests
resp = requests.post(
"http://<R20_IP>:8000/api/models/segformer/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(resp.json())Détails du modèle
SegFormer B0 BN sur reComputer série R (CM5 + Hailo)
Segmentation sémantique SegFormer B0 BN avec HailoRT, aperçu en direct et inférence REST.
Cette page est adaptée de rpi5_hailo8_segformer_b0_bn/README.md dans reComputer-R20-CV. Elle cible reComputer série R (CM5 + Hailo) avec un accélérateur PCIe Hailo-8.
Configuration matérielle et hôte
| Élément | Valeur |
|---|---|
| Carte | reComputer série R avec Raspberry Pi CM5 |
| Accélérateur | Hailo-8 M.2 sur PCIe, exposé comme /dev/hailo0 |
| OS | Raspberry Pi OS Bookworm, aarch64 |
| Pilote hôte | Paquet apt hailo-all |
| HailoRT validé | 4.23.x ; le pilote hôte, le firmware, la bibliothèque native et le wheel Python doivent partager la même version majeure.mineure |
sudo apt update
sudo apt install hailo-all
sudo reboot
# Après redémarrage
hailortcli fw-control identify
ls /dev/hailo0
# Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
sudo systemctl enable docker
sudo systemctl start dockerExécuter avec une vidéo de démonstration
sudo docker run --rm --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-r20-cv/segformer_b0_bn:latest \
python web_detection.py --model_path model/segformer_b0_bn.hef --video_path video/test.mp4Ouvrez http://<R20_IP>:8000 pour visualiser l'aperçu web. L'image inclut le code source du module, la vidéo de démonstration, le wheel Python HailoRT et les fichiers HEF listés ci-dessous.
Les montages bind libhailort.so proviennent intentionnellement de l'hôte. Si votre firmware n'est pas 4.23.0, remplacez les deux chemins par la version rapportée par hailortcli fw-control identify ; reconstruisez l'image si la version majeure.mineure diffère.
Mode caméra USB
sudo docker run --rm --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-r20-cv/segformer_b0_bn:latest \
python web_detection.py --model_path model/segformer_b0_bn.hef --camera_id 0Fichiers HEF
| HEF | Taille | Notes |
|---|---|---|
segformer_b0_bn.hef | 4,68 Mo | Modèle SegFormer B0 BN |
API REST
Point de terminaison de prédiction :
POST http://<R20_IP>:8000/api/models/segformer/predictExemple de requête image :
curl -X POST "http://<R20_IP>:8000/api/models/segformer/predict" \
-F "file=@test.jpg"Points de terminaison courants du service :
| Point de terminaison | Méthode | Objectif |
|---|---|---|
/ | GET | Interface d'aperçu web |
/api/models/segformer/predict | POST | Inférence image unique à partir d'une image/vidéo téléchargée ou de la trame actuelle |
/api/video_feed | GET | Flux d'aperçu MJPEG |
/api/config | GET / POST | Lire ou mettre à jour les seuils d'exécution |
/api/video/upload | POST | Télécharger une vidéo pour analyse hors ligne |
/api/video/analyze | POST | Démarrer l'analyse hors ligne |
/api/video/status | GET | Interroger la progression de l'analyse |
/api/video/list | GET | Lister les vidéos téléchargées et traitées |
/api/video/download/{filename} | GET | Télécharger la sortie traitée |
Notes de développement
- Module source :
src/rpi5_hailo8_segformer_b0_bn/ - Dockerfile :
docker/hailo8/segformer_b0_bn.dockerfile - Service principal :
web_detection.pyenveloppe l'inférence HailoRT, le post-traitement, l'aperçu MJPEG, la prédiction REST et l'analyse vidéo hors ligne. - Lors du remplacement par un HEF personnalisé, gardez la disposition de sortie compatible avec le code de post-traitement du module ou mettez à jour
post_process_hailo().
Entrées et sorties
Entrée : image, vidéo ou flux caméra USB. Sortie : masque sémantique ou superposition et aperçu MJPEG annoté.