L2CS-Net

L2CS-Net es un estimador de mirada de dos etapas: un detector de caras las localiza, y un tronco ResNet con dos cabezas de clasificación por bins de ángulo predice el pitch y el yaw de cada cara. LibreYOLO lo integra solo para inferencia.

Tareas
gaze
Tamaños
r18, r34, r50, r101, r152 at 448 px
Instalación
pip install libreyolo
Nivel de compatibilidad
Solo inferencia, desde v. Solo permite predecir, validar y exportar. Las funciones de entrenamiento no se aplican.
Proyecto original
L2CS-Net de Ahmed A. Abdelrahman et al., Gaze360 dataset terms: research and non-commercial use only, no redistribution. Artículo, fuente
Licencias
Código MIT, pesos Gaze360 dataset terms: research and non-commercial use only, no redistribution. Uso comercial

Instalación

L2CS-Net no necesita ningún extra para construir un modelo, predecir con él o exportarlo si ya tienes su checkpoint.

bash
pip install libreyolo

El único checkpoint que LibreYOLO puede descargar automáticamente, un ResNet-50 entrenado con Gaze360, se descarga con gdown en lugar de desde un mirror HTTP normal, porque vive en el Google Drive del autor y no en la organización LibreYOLO. Ese camino necesita el extra gaze:

bash
pip install "libreyolo[gaze]"

Sin él, LibreYOLO imprime instrucciones de descarga manual en lugar de fallar en silencio.

Predicción

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Sin face_detector: recurre al detector de caras incluido en# OpenCV (Haar en OpenCV 4, YuNet en OpenCV 5), así que esto# funciona sin más descarga que el propio checkpoint de L2CS.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
Origen de las caras
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreL2CSr50.pt") # Pasa a L2CS los boxes de un detector que ya hayas ejecutado.result = model(SAMPLE_IMAGE, face_boxes=[[34, 12, 90, 80]]) # O indica un detector de caras incluido concreto.result = model(SAMPLE_IMAGE, face_detector="yunet")

L2CS-Net es un estimador de dos etapas: primero se ejecuta un detector de caras, y la cabeza de mirada lee el pitch y el yaw de cada recorte de cara que este devuelve. Si no indicas nada, la predicción recurre al detector incluido en OpenCV, así que una llamada pelada funciona sin descargas adicionales una vez tienes en la mano el checkpoint de L2CS. face_boxes acepta boxes de un detector que ya hayas ejecutado; face_detector acepta "auto", "haar", "yunet", un modelo de detección de LibreYOLO o un callable corriente. result.gaze lleva el pitch y el yaw en radianes, alineados fila a fila con result.boxes, los boxes de las caras detectadas. Consulta predicción para fuentes, streaming y manejo de resultados.

Variantes

Cinco profundidades de backbone comparten una misma resolución de entrada y aceptan los mismos argumentos. Gaze360, el dataset detrás del único checkpoint publicado, entrenó un ResNet-50; las otras cuatro profundidades están soportadas a nivel de arquitectura, pero no tienen pesos publicados que cargar.

Exportación

TareaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
gazegaze to ONNX: compatiblegaze to TorchScript: compatiblegaze to ExecuTorch: compatiblegaze to TensorRT: compatiblegaze to OpenVINO: compatiblegaze to Paddle: no compatiblegaze to MNN: no compatiblegaze to RKNN: no compatiblegaze to ncnn: no compatiblegaze to TFLite: no compatiblegaze to CoreML: no compatiblegaze to Core AI: no compatible

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
Usar el archivo exportado
import numpy as npimport onnxruntime as ort # El grafo exportado es solo el tronco ResNet y las dos cabezas# de bins de ángulo: recibe un recorte de cara de 448x448 ya# preprocesado y devuelve (yaw_logits, pitch_logits) en crudo,# no ángulos decodificados. El softmax, la esperanza sobre los# bins y la conversión a grados se quedan en Python; consulta# 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)})

Licencia

Comprueba la licencia en el repositorio de Hugging Face de los pesos concretos que descargues. Cada checkpoint de la organización de LibreYOLO incluye una, y no siempre es la misma en toda una familia. Ese repositorio es la fuente autorizada; el resumen siguiente describe qué se aplicaba cuando se verificó esta página por última vez.

Esta es una descripción de las licencias implicadas, no asesoramiento legal. Si la respuesta es importante a nivel comercial, lee las licencias y busca tu propio asesoramiento.

Trabajo original
L2CS-Net, Ahmed A. Abdelrahman et al.
Licencia del proyecto original
Gaze360 dataset terms: research and non-commercial use only, no redistribution
Fuente del proyecto original
github.com/Ahmednull/L2CS-Net
Código de LibreYOLO
MIT
Pesos
Gaze360 dataset terms: research and non-commercial use only, no redistribution, distribuidos por sus autores. LibreYOLO no los aloja ni los replica.
Interpretación
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 no aloja ni replica ningún checkpoint de L2CS: en la organización de LibreYOLO en Hugging Face no hay nada de esta familia, a diferencia de la mayoría de las demás familias de este sitio. El único checkpoint que la biblioteca puede descargar automáticamente viene directamente de la distribución en el Google Drive del propio autor, tras el aviso de licencia de Gaze360 que se imprime antes de que empiece la transferencia, y no es la copia «republicada en huggingface.co/LibreYOLO» que da a entender el resumen de arriba.

Verificado con LibreYOLO v1.5.0. Las tablas de compatibilidad, los checkpoints y las cifras de rendimiento de esta página se generan a partir de la biblioteca publicada y los pesos publicados; no se escriben a mano.