L2CS-Net
L2CS-Net è uno stimatore dello sguardo a due stadi: un rilevatore di volti individua i volti e un tronco ResNet con due teste di classificazione su bin angolari predice pitch e yaw per ogni volto. LibreYOLO lo integra solo per l'inferenza.
- Task
- gaze
- Dimensioni
- r18, r34, r50, r101, r152 at 448 px
- Installa
pip install libreyolo- Livello di supporto
- Solo inferenza, dalla v. Solo predizione, validazione ed esportazione. Le funzionalità di addestramento non si applicano.
- Origine
- L2CS-Net di Ahmed A. Abdelrahman et al., Gaze360 dataset terms: research and non-commercial use only, no redistribution. Articolo, sorgente
- Licenze
- Codice MIT, pesi Gaze360 dataset terms: research and non-commercial use only, no redistribution. Uso commerciale
Installazione
L2CS-Net non richiede nessun extra per costruire un modello, farci una predizione o esportarlo, se ne hai già il checkpoint.
pip install libreyoloL'unico checkpoint che LibreYOLO può scaricare automaticamente, una ResNet-50
addestrata su Gaze360, arriva tramite gdown e non da un semplice mirror HTTP,
perché si trova sul Google Drive dell'autore e non nell'organizzazione
LibreYOLO. Quel percorso richiede l'extra gaze:
pip install "libreyolo[gaze]"Senza di esso, LibreYOLO stampa le istruzioni per il download manuale invece di fallire in silenzio.
Predizione
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Senza face_detector: si ricade sul rilevatore di volti incluso in# OpenCV (Haar su OpenCV 4, YuNet su OpenCV 5), quindi questo gira# senza download aggiuntivi oltre al checkpoint L2CS stesso.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") # Passa a L2CS i box di un rilevatore che hai già eseguito.result = model(SAMPLE_IMAGE, face_boxes=[[34, 12, 90, 80]]) # Oppure indica uno specifico rilevatore di volti incluso.result = model(SAMPLE_IMAGE, face_detector="yunet")L2CS-Net è uno stimatore a due stadi: prima viene eseguito un rilevatore di
volti, poi la testa dello sguardo legge pitch e yaw da ogni ritaglio di volto
che quello restituisce. Se non intervieni, la predizione ricade sul rilevatore
incluso in OpenCV, quindi una chiamata nuda funziona senza download aggiuntivi
una volta che hai in mano il checkpoint L2CS. face_boxes accetta i box di un
rilevatore che hai già eseguito; face_detector accetta "auto", "haar",
"yunet", un modello di rilevamento LibreYOLO o un semplice callable.
result.gaze contiene pitch e yaw in radianti, allineati riga per riga con
result.boxes, i box dei volti rilevati. Vedi
predizione per sorgenti, streaming e gestione dei risultati.
Varianti
Cinque profondità di backbone condividono un'unica risoluzione di ingresso e accettano gli stessi argomenti. Gaze360, il dataset dietro l'unico checkpoint pubblicato, ha addestrato una ResNet-50; le altre quattro profondità sono supportate a livello architetturale ma non hanno pesi pubblicati da caricare.
Esportazione
| Task | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| gaze | gaze to ONNX: supportato | gaze to TorchScript: supportato | gaze to ExecuTorch: supportato | gaze to TensorRT: supportato | gaze to OpenVINO: supportato | gaze to Paddle: non supportato | gaze to MNN: non supportato | gaze to RKNN: non supportato | gaze to ncnn: non supportato | gaze to TFLite: non supportato | gaze to CoreML: non supportato | gaze to Core AI: non supportato |
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 # Il grafo esportato è il solo tronco ResNet con le due teste su bin# angolari: prende un ritaglio di volto 448x448 già preprocessato e# restituisce (yaw_logits, pitch_logits) grezzi, non angoli# decodificati. La softmax, il valore atteso sui bin e la conversione# in gradi restano in Python; vedi# 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)})Licenze
Controlla la licenza nel repository Hugging Face degli specifici pesi che scarichi. Ogni checkpoint nell<link>organizzazione LibreYOLO</link> ne include una e non è sempre la stessa per tutta la famiglia. Quel repository è la fonte autorevole; il riepilogo seguente descrive le condizioni applicabili al momento dellultima verifica di questa pagina.
Questa è una descrizione delle licenze coinvolte, non una consulenza legale. Se la risposta è importante a fini commerciali, leggi personalmente le licenze e chiedi una consulenza indipendente.
- Lavoro originale
- L2CS-Net, Ahmed A. Abdelrahman et al.
- Licenza upstream
- Gaze360 dataset terms: research and non-commercial use only, no redistribution
- Sorgente upstream
- github.com/Ahmednull/L2CS-Net
- Codice LibreYOLO
- MIT
- Pesi
- Gaze360 dataset terms: research and non-commercial use only, no redistribution, distribuiti dai rispettivi autori. LibreYOLO non li ospita né ne mantiene una copia.
- Interpretazione
- 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 non ospita né fa da mirror a nessun checkpoint L2CS: per questa famiglia non esiste nulla nell'organizzazione Hugging Face di LibreYOLO, a differenza della maggior parte delle altre famiglie su questo sito. L'unico checkpoint che la libreria può scaricare automaticamente arriva direttamente dalla distribuzione su Google Drive dell'autore, protetta dall'avviso di licenza Gaze360 stampato prima che il trasferimento inizi, e non è la copia "ripubblicata su huggingface.co/LibreYOLO" che il riepilogo qui sopra lascia intendere.