CV / SCRFD
SCRFD 2.5G
SCRFD 2.5G équilibre vitesse et précision pour la détection de visages sur reComputer série R.
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-scrfd-2-5g \
--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/scrfd:latest \
python web_detection.py --model_path model/scrfd_2.5g.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/scrfd/predict" \
-F "file=@test.jpg"import requests
resp = requests.post(
"http://<R20_IP>:8000/api/models/scrfd/predict",
files={"file": open("test.jpg", "rb")},
timeout=30,
)
print(resp.json())Détails du modèle
SCRFD sur reComputer série R (CM5 + Hailo)
Détection de visages SCRFD avec boîtes, scores de confiance et points de repère à cinq points sur l'accélérateur Hailo-8.
Cette page est adaptée de rpi5_hailo8_scrfd/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/scrfd:latest \
python web_detection.py --model_path model/scrfd_500m.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/scrfd:latest \
python web_detection.py --model_path model/scrfd_500m.hef --camera_id 0Changer de variante HEF
Remplacez la valeur par défaut de l'image en passant un --model_path différent :
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/scrfd:latest \
python web_detection.py --model_path model/scrfd_2.5g.hef --video_path video/test.mp4Fichiers HEF
| HEF | Taille | Notes |
|---|---|---|
scrfd_500m.hef | 3,13 Mo | Détecteur de visages léger |
scrfd_2.5g.hef | 3,84 Mo | Détecteur de visages équilibré |
scrfd_10g.hef | 6,87 Mo | Détecteur de visages plus large |
API REST
Point de terminaison de prédiction :
POST http://<R20_IP>:8000/api/models/scrfd/predictExemple de requête image :
curl -X POST "http://<R20_IP>:8000/api/models/scrfd/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/scrfd/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_scrfd/ - Dockerfile :
docker/hailo8/scrfd.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 : boîtes de visage, scores, cinq points de repère et aperçu MJPEG annoté.