L2CS-Net
L2CS-Net est un estimateur de regard en deux étapes : un détecteur de visages localise les visages, puis un tronc ResNet doté de deux têtes de classification par bins d'angle prédit le pitch et le yaw de chaque visage. LibreYOLO l'encapsule en inférence seule.
- Tâches
- gaze
- Tailles
- r18, r34, r50, r101, r152 at 448 px
- Installer
pip install libreyolo- Niveau de support
- Inférence uniquement, depuis v. Prédiction, validation et export uniquement. Les fonctionnalités d'entraînement ne s'appliquent pas.
- Origine
- L2CS-Net par Ahmed A. Abdelrahman et al., Gaze360 dataset terms: research and non-commercial use only, no redistribution. Article, source
- Licences
- Code MIT, poids Gaze360 dataset terms: research and non-commercial use only, no redistribution. Usage commercial
Installation
L2CS-Net ne demande aucun extra pour construire, prédire ou exporter un modèle dont vous avez déjà le checkpoint.
pip install libreyoloLe seul checkpoint que LibreYOLO peut récupérer automatiquement, un ResNet-50
entraîné sur Gaze360, se télécharge via gdown plutôt que depuis un simple
miroir HTTP, car il réside sur le Google Drive de l'auteur et non dans
l'organisation LibreYOLO. Ce chemin exige l'extra gaze :
pip install "libreyolo[gaze]"Sans lui, LibreYOLO affiche les instructions de téléchargement manuel au lieu d'échouer silencieusement.
Prédire
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Aucun face_detector fourni : repli sur le détecteur de visages# livré avec OpenCV (Haar sur OpenCV 4, YuNet sur OpenCV 5), donc# aucun téléchargement au-delà du checkpoint L2CS lui-même.model = LibreYOLO("LibreL2CSr50.pt")result = model(SAMPLE_IMAGE) print(result.gaze.pitch, result.gaze.yaw)libreyolo predict model=LibreL2CSr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreL2CSr50.pt") # Passez à L2CS les boîtes d'un détecteur déjà exécuté.result = model(SAMPLE_IMAGE, face_boxes=[[34, 12, 90, 80]]) # Ou nommez un détecteur de visages livré avec la bibliothèque.result = model(SAMPLE_IMAGE, face_detector="yunet")L2CS-Net est un estimateur en deux étapes : un détecteur de visages s'exécute
d'abord, et la tête de regard lit le pitch et le yaw dans chaque crop de visage
qu'il renvoie. Laissée à elle-même, la prédiction retombe sur le détecteur livré
avec OpenCV, si bien qu'un appel nu fonctionne sans téléchargement
supplémentaire dès que vous disposez du checkpoint L2CS lui-même. face_boxes
accepte les boîtes d'un détecteur que vous avez déjà exécuté ; face_detector
accepte "auto", "haar", "yunet", un modèle de détection LibreYOLO ou un
simple callable. result.gaze porte le pitch et le yaw en radians, alignés
ligne à ligne avec result.boxes, les boîtes de visages détectées. Voir
la prédiction pour les sources, le streaming et le traitement
des résultats.
Variantes
Cinq profondeurs de backbone partagent une même résolution d'entrée et prennent les mêmes arguments. Gaze360, le dataset derrière le seul checkpoint publié, a servi à entraîner un ResNet-50 ; les quatre autres profondeurs sont prises en charge sur le plan architectural, mais n'ont aucun poids publié à charger.
Exporter
| Tâche | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| gaze | gaze to ONNX : pris en charge | gaze to TorchScript : pris en charge | gaze to ExecuTorch : pris en charge | gaze to TensorRT : pris en charge | gaze to OpenVINO : pris en charge | gaze to Paddle : non pris en charge | gaze to MNN : non pris en charge | gaze to RKNN : non pris en charge | gaze to ncnn : non pris en charge | gaze to TFLite : non pris en charge | gaze to CoreML : non pris en charge | gaze to Core AI : non pris en charge |
from libreyolo import LibreYOLO model = LibreYOLO("LibreL2CSr50.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreL2CSr50.pt format=onnximport numpy as npimport onnxruntime as ort # Le graphe exporté se limite au tronc ResNet et aux deux têtes de# bins d'angle : il prend un crop de visage 448x448 prétraité et# renvoie des (yaw_logits, pitch_logits) bruts, pas des angles# décodés. Softmax, espérance des bins et conversion en degrés# restent en Python ; voir# libreyolo.models.l2cs.utils.bin_logits_to_angles.session = ort.InferenceSession("LibreL2CSr50.onnx")name = session.get_inputs()[0].nameyaw_logits, pitch_logits = session.run( None, {name: np.zeros((1, 3, 448, 448), dtype=np.float32)})Licence
Vérifiez la licence dans le dépôt Hugging Face des poids précis que vous téléchargez. Chaque checkpoint de l<link>organisation LibreYOLO</link> en possède une, et elles ne sont pas toujours identiques au sein dune même famille. Ce dépôt fait autorité ; le résumé ci-dessous décrit les conditions applicables lors de la dernière vérification de cette page.
Ceci décrit les licences concernées et ne constitue pas un conseil juridique. Si la réponse a une importance commerciale, lisez vous-même les licences et consultez votre propre avocat.
- Travail d'origine
- L2CS-Net, Ahmed A. Abdelrahman et al.
- Licence du projet d'origine
- Gaze360 dataset terms: research and non-commercial use only, no redistribution
- Source du projet d'origine
- github.com/Ahmednull/L2CS-Net
- Code de LibreYOLO
- MIT
- Poids
- Gaze360 dataset terms: research and non-commercial use only, no redistribution, distribués par leurs auteurs. LibreYOLO ne les héberge pas et n'en fournit pas de miroir.
- Interprétation
- The L2CS-Net source is MIT and may be used, modified and redistributed, including commercially. The one checkpoint LibreYOLO can fetch automatically, a ResNet-50 trained on Gaze360, is not covered by that grant: the Gaze360 dataset license restricts use of models trained on it to research and non-commercial purposes and forbids redistribution. LibreYOLO does not mirror or host that checkpoint. It downloads it, on request, directly from the author's own distribution and prints the Gaze360 terms once before the transfer starts. A model trained on data you hold the rights to, using this MIT architecture, carries none of those restrictions.
LibreYOLO n'héberge ni ne met en miroir aucun checkpoint L2CS : rien de cette famille n'existe dans l'organisation Hugging Face LibreYOLO, contrairement à la plupart des autres familles de ce site. Le seul checkpoint que la bibliothèque peut récupérer automatiquement provient directement de la distribution Google Drive de l'auteur, derrière l'avis de licence Gaze360 affiché avant le début du transfert, et n'est pas la copie « republiée sur huggingface.co/LibreYOLO » que laisse entendre le résumé ci-dessus.