CV / U-Net
U-Net MobileNet v2
U-Net MobileNet v2 fournit des masques sémantiques via la démonstration FastAPI 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-unet-mobilenet-v2 \
--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/unet_mobilenet_v2:latest \
python web_detection.py --model_path model/unet_mobilenet_v2.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/unet/predict" \
-F "file=@test.jpg"import requests
resp = requests.post(
"http://<R20_IP>:8000/api/models/unet/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(resp.json())Détails du modèle
U-Net MobileNet v2 sur reComputer série R (CM5 + Hailo)
Segmentation sémantique U-Net MobileNet v2 avec HailoRT, aperçu en direct et inférence REST.
Cette page est adaptée de rpi5_hailo8_unet_mobilenet_v2/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/unet_mobilenet_v2:latest \
python web_detection.py --model_path model/unet_mobilenet_v2.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/unet_mobilenet_v2:latest \
python web_detection.py --model_path model/unet_mobilenet_v2.hef --camera_id 0Fichiers HEF
| HEF | Taille | Notes |
|---|---|---|
unet_mobilenet_v2.hef | 3,17 Mo | Modèle U-Net |
API REST
Point de terminaison de prédiction :
POST http://<R20_IP>:8000/api/models/unet/predictExemple de requête image :
curl -X POST "http://<R20_IP>:8000/api/models/unet/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/unet/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_unet_mobilenet_v2/ - Dockerfile :
docker/hailo8/unet_mobilenet_v2.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é.