L2CS-Net

L2CS-Net є двостадійним оцінювачем погляду: детектор облич знаходить обличчя, а основа ResNet із двома класифікаційними головами кутових інтервалів передбачає тангаж і рискання для кожного обличчя. LibreYOLO обгортає її лише для інференсу.

Задачі
gaze
Розміри
r18, r34, r50, r101, r152 at 448 px
Встановлення
pip install libreyolo
Рівень підтримки
Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
Першоджерело
L2CS-Net, автори: Ahmed A. Abdelrahman et al., ліцензія Gaze360 dataset terms: research and non-commercial use only, no redistribution. Стаття, джерело
Ліцензії
Код: MIT, ваги: Gaze360 dataset terms: research and non-commercial use only, no redistribution. Комерційне використання

Встановлення

L2CS-Net не потребує додаткових залежностей для створення, передбачення чи експорту моделі, контрольна точка якої вже є у вас.

bash
pip install libreyolo

Єдина контрольна точка, яку LibreYOLO може отримати автоматично, модель ResNet-50, навчену на Gaze360, завантажується через gdown, а не звичайне HTTP-дзеркало, оскільки вона розміщена на Google Drive автора, а не в організації LibreYOLO. Для цього шляху потрібен додатковий набір залежностей gaze:

bash
pip install "libreyolo[gaze]"

Без нього LibreYOLO показує інструкції з ручного завантаження замість непомітної помилки.

Передбачення

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Якщо face_detector не задано, використовується комплектний детектор# облич OpenCV (Haar в OpenCV 4, YuNet в OpenCV 5), тому для запуску# не потрібне додаткове завантаження понад саму контрольну точку 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
Джерело облич
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreL2CSr50.pt") # Передайте L2CS рамки з уже запущеного детектора.result = model(SAMPLE_IMAGE, face_boxes=[[34, 12, 90, 80]]) # Або вкажіть конкретний комплектний детектор облич.result = model(SAMPLE_IMAGE, face_detector="yunet")

L2CS-Net є двостадійним оцінювачем: спочатку запускається детектор облич, а голова погляду зчитує тангаж і рискання з кожного поверненого кропа обличчя. Без додаткових налаштувань передбачення використовує комплектний детектор OpenCV, тому після отримання самої контрольної точки L2CS достатньо звичайного виклику без додаткового завантаження. face_boxes приймає рамки з уже запущеного детектора; face_detector приймає "auto", "haar", "yunet", модель виявлення LibreYOLO або звичайний викличний об'єкт. result.gaze містить тангаж і рискання в радіанах, рядок за рядком узгоджені з result.boxes, рамками виявлених облич. Типи джерел, потокове передбачення та обробку результатів описано в розділі передбачення.

Варіанти

П'ять глибин бекбона мають однакову вхідну роздільну здатність і приймають ті самі аргументи. На Gaze360, датасеті єдиної опублікованої контрольної точки, навчено ResNet-50; інші чотири глибини підтримуються архітектурно, але не мають опублікованих ваг.

Експорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
gazegaze to ONNX: підтримуєтьсяgaze to TorchScript: підтримуєтьсяgaze to ExecuTorch: підтримуєтьсяgaze to TensorRT: підтримуєтьсяgaze to OpenVINO: підтримуєтьсяgaze to Paddle: не підтримуєтьсяgaze to MNN: не підтримуєтьсяgaze to RKNN: не підтримуєтьсяgaze to ncnn: не підтримуєтьсяgaze to TFLite: не підтримуєтьсяgaze to CoreML: не підтримуєтьсяgaze to Core AI: не підтримується

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
Використання експортованого файлу
import numpy as npimport onnxruntime as ort # Експортований граф містить лише основу ResNet і дві голови кутових інтервалів:# він приймає попередньо оброблений кроп обличчя 448x448 і повертає необроблені# (yaw_logits, pitch_logits), а не декодовані кути. Softmax, математичне сподівання# інтервалів і перетворення на градуси залишаються в Python; див.# 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)})

Ліцензування

Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.

Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.

Оригінальна робота
L2CS-Net, Ahmed A. Abdelrahman et al.
Ліцензія першоджерела
Gaze360 dataset terms: research and non-commercial use only, no redistribution
Джерело першоджерела
github.com/Ahmednull/L2CS-Net
Код LibreYOLO
MIT
Ваги
Gaze360 dataset terms: research and non-commercial use only, no redistribution, поширюється авторами. LibreYOLO не розміщує й не дублює ці ваги.
Тлумачення
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 не розміщує й не дзеркалює жодної контрольної точки L2CS: на відміну від більшості інших сімейств цього сайту, для цього сімейства нічого немає в організації LibreYOLO на Hugging Face. Єдина контрольна точка, яку бібліотека може отримати автоматично, надходить безпосередньо з власного розповсюдження автора на Google Drive. Перед початком передавання показується повідомлення про ліцензію Gaze360; це не копія, «повторно опублікована на huggingface.co/LibreYOLO», як помилково натякає резюме вище.

Перевірено з LibreYOLO v1.5.0. Таблиці підтримки, контрольні точки й результати бенчмарків на цій сторінці згенеровано з випущеної бібліотеки та опублікованих ваг, а не написано вручну.