CV / LightFace

LightFace Slim

Détection de visages ultra-légère (0,26M paramètres) sur reComputer R Series avec Hailo-8 ou Hailo-10H.

64 téléchargements
Mémoire
4GB+
Précision
Hailo HEF

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-hailo8-lightface \
  --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/lightface_slim:latest \
  python web_detection.py --model_path model/lightface_slim.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/lightface_slim/predict" \
  -F "file=@test.jpg"
Python
import requests

resp = requests.post(
    "http://<Board_IP>:8000/api/models/lightface_slim/predict",
    files={"file": open("test.jpg", "rb")},
    timeout=30,
)
print(resp.json())

Détails du modèle

reComputer R Series (CM5 + Hailo-8)

LightFace Slim sur reComputer R Series (CM5 + Hailo-8)

Détection de visage ultra-légère (0.26M de paramètres) exécutée sur Hailo-8 via HailoRT 4.23. Le HEF expose des têtes SSD brutes (pas de NMS sur puce) : l'hôte construit les 4,420 ancres, effectue le décodage des boîtes SSD (variances 10/5), le softmax sur les logits arrière-plan/visage, le seuillage du score et le NMS glouton.

Cette page cible les reComputer R Series (CM5 + Hailo-8) avec un accélérateur PCIe Hailo-8.

Informations sur le modèle

PropriétéValeur
ArchitectureUltra-Light-Fast-Generic-Face-Detector-1MB (style SSD, stride 8/16/32/64)
TâcheDétection de visage (classe unique « face », WIDER FACE)
Entrée240×320×3 (l'application fournit du BGR uint8 ; moyenne 127 / écart-type 128 intégrés dans le HEF)
Sortie8 têtes brutes : 4 échelles × {deltas de boîte, logits arrière-plan + visage}
DécodageDécodage SSD côté hôte (variances 10/5) + softmax + NMS glouton (meta_arch=retinaface)
Paramètres0.26M
Opérations0.16G
mAP de référence39.71 (WIDER FACE, précision complète, Hailo Model Zoo ; non mesuré sur cette carte)
LicenceMIT (Ultra-Light-Fast-Generic-Face-Detector-1MB)
SourceHailo Model Zoo

Matériel et configuration de l'hôte

ÉlémentValeur
CartereComputer R Series avec Raspberry Pi CM5
AccélérateurHailo-8 via PCIe, exposé comme /dev/hailo0
RuntimeHailoRT 4.23.x (l'hôte / le conteneur doivent partager le même major.minor)
Python dans le conteneur3.11, aarch64
bash
sudo apt update
sudo apt install hailort hailort-pcie-driver python3-hailort
sudo reboot

# After reboot
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 docker

Installez directement hailort hailort-pcie-driver python3-hailort — pas hailo-all, qui peut tirer les paquets Hailo-10H / HailoRT 5.x.

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

bash
sudo docker run --rm --privileged --net=host \
  --name cm5-hailo8-lightface \
  -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/lightface_slim:latest \
  python web_detection.py --model_path model/lightface_slim.hef --video_path video/test.mp4

Mode caméra USB

bash
sudo docker run --rm --privileged --net=host \
  --name cm5-hailo8-lightface \
  -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/lightface_slim:latest \
  python web_detection.py --model_path model/lightface_slim.hef --camera_id 0

Ouvrez http://<Board_IP>:8000 pour afficher l'aperçu web.

Fichiers HEF

HEFTailleRemarques
lightface_slim.hef1,907,332 bytesbuild Hailo-8 du Hailo Model Zoo v2.19.0 ; 8 têtes brutes

Source :

text
https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v2.19.0/hailo8/lightface_slim.hef

SHA256: e448c0f692f9e907bb7328fc2305ced4d3569f1e0aa26d44439d1a6f003e9314

REST API

text
POST http://<Board_IP>:8000/api/models/lightface_slim/predict
bash
curl -X POST "http://<Board_IP>:8000/api/models/lightface_slim/predict" \
  -F "file=@test.jpg"

Réponse (box est [x1, y1, x2, y2] en pixels de l'image d'origine) :

json
{
  "predictions": [
    {"box": [220, 156, 260, 196], "confidence": 0.98}
  ]
}
EndpointMéthodeRôle
/GETInterface d'aperçu web
/api/models/lightface_slim/predictPOSTBoîtes de visage (JSON)
/api/video_feedGETFlux d'aperçu MJPEG
/api/configGET / POSTSeuils de confiance / IoU

Notes d'implémentation

  • Ensemble d'ancres issu de la configuration du zoo : steps 8/16/32/64, min_sizes [10,16,24] / [32,48] / [64,96] / [128,192,256] → 4,420 ancres.
  • Seuil de confiance de l'aperçu 0.5 ; l'évaluation du zoo utilise 0.1 avec NMS IoU 0.3.
  • L'image est redimensionnée en conservant le rapport d'aspect et complétée en bas/à droite par des 0, conformément au prétraitement de détection de visage du zoo.

Développement

  • Source : src/rpi5_hailo8_lightface_slim/
  • Dockerfile : docker/hailo8/lightface_slim.dockerfile
  • Journal de validation : src/rpi5_hailo8_lightface_slim/TEST_REPORT.md

Entrées et sorties

Input: image (240x320 RGB). Output: face bounding boxes with confidence scores.