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 не потребує додаткових залежностей для створення, передбачення чи експорту моделі, контрольна точка якої вже є у вас.
pip install libreyoloЄдина контрольна точка, яку LibreYOLO може отримати автоматично, модель
ResNet-50, навчену на Gaze360, завантажується через gdown, а не звичайне
HTTP-дзеркало, оскільки вона розміщена на Google Drive автора, а не в
організації LibreYOLO. Для цього шляху потрібен додатковий набір залежностей
gaze:
pip install "libreyolo[gaze]"Без нього LibreYOLO показує інструкції з ручного завантаження замість непомітної помилки.
Передбачення
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)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") # Передайте 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; інші чотири глибини підтримуються архітектурно, але не мають опублікованих ваг.
Експорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| gaze | gaze 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: не підтримується |
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 # Експортований граф містить лише основу 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», як помилково натякає резюме вище.