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.
pip install libreyoloEl ú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:
pip install "libreyolo[gaze]"Sin él, LibreYOLO imprime instrucciones de descarga manual en lugar de fallar en silencio.
Predicción
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)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") # 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
| Tarea | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| gaze | gaze to ONNX: compatible | gaze to TorchScript: compatible | gaze to ExecuTorch: compatible | gaze to TensorRT: compatible | gaze to OpenVINO: compatible | gaze to Paddle: no compatible | gaze to MNN: no compatible | gaze to RKNN: no compatible | gaze to ncnn: no compatible | gaze to TFLite: no compatible | gaze to CoreML: no compatible | gaze to Core AI: no compatible |
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 # 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.