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.

bash
pip install libreyolo

Le 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 :

bash
pip install "libreyolo[gaze]"

Sans lui, LibreYOLO affiche les instructions de téléchargement manuel au lieu d'échouer silencieusement.

Prédire

Python
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)
CLI
libreyolo predict model=LibreL2CSr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Source des visages
from 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âcheONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
gazegaze to ONNX : pris en chargegaze to TorchScript : pris en chargegaze to ExecuTorch : pris en chargegaze to TensorRT : pris en chargegaze to OpenVINO : pris en chargegaze to Paddle : non pris en chargegaze to MNN : non pris en chargegaze to RKNN : non pris en chargegaze to ncnn : non pris en chargegaze to TFLite : non pris en chargegaze to CoreML : non pris en chargegaze to Core AI : non pris en charge

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreL2CSr50.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreL2CSr50.pt format=onnx
Utiliser le fichier exporté
import 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.

Vérifié avec LibreYOLO v1.5.0. Les tableaux de support, les checkpoints et les chiffres de benchmark de cette page sont générés à partir de la bibliothèque publiée et des poids publiés, et non rédigés à la main.