LibreFaceRec
LibreFaceRec є завданням LibreYOLO для створення ембедингів облич: детектор знаходить і вирівнює обличчя, а голова розпізнавання створює L2-нормалізований ембединг особи для верифікації або пошуку.
- Задачі
- embed
- Розміри
- Встановлення
pip install libreyolo- Рівень підтримки
- Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
- Ліцензії
- Код: MIT, ваги: Apache-2.0. Комерційне використання
Встановлення
Голова розпізнавання LibreFaceRec працює через onnxruntime, якого немає в
базовому встановленні.
pip install "libreyolo[onnx]"Передбачення
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Назви librefacerec-* спрямовуються до цього сімейства незалежно від# суфікса файлу й під час першого використання завантажуються з# організації LibreYOLO на Hugging Face разом із типовим детектором облич.model = LibreYOLO("librefacerec-l.onnx")result = model(SAMPLE_IMAGE) print(result.embeddings.data.shape) # (N, D), L2-нормалізованоlibreyolo predict model=librefacerec-l.onnx source=face.jpgfrom libreyolo import LibreYOLO model = LibreYOLO("librefacerec-l.onnx") # Порівнює найпомітніше обличчя на кожному зображенні за косинусною# подібністю їхніх L2-нормалізованих ембедингів.result = model.verify("person_a.jpg", "person_b.jpg", threshold=0.4)print(result["similarity"], result["same_person"])from libreyolo import LibreYOLO model = LibreYOLO("librefacerec-l.onnx") query = model("query.jpg").embeddings # обличчя на цьому зображенніgallery = model.embed(["a.jpg", "b.jpg", "c.jpg"]) # (N_total, D) # Косинусні подібності (query_faces, N_total).scores = query.similarity(gallery)За одним викликом приховано два окремі графи ONNX для виявлення та
розпізнавання: детектор знаходить і вирівнює кожне обличчя до канонічного
кропа, а голова розпізнавання повертає один L2-нормалізований ембединг на
обличчя. Без додаткових налаштувань predict() автоматично завантажує та
під'єднує комплектний типовий детектор. face_detector приймає викличний
об'єкт, модель виявлення LibreYOLO або екземпляр FaceDetector;
face_boxes повністю оминає виявлення й використовує надані рамки.
result.embeddings містить один рядок на кожне виявлене обличчя, узгоджений
із result.boxes. Метод .similarity() одним викликом обчислює косинусну
подібність до іншого ембедингу або цілої галереї. Щоб безпосередньо порівняти
два зображення замість двох уже обчислених ембедингів, виклик
model.verify(image_a, image_b) виконує виявлення та створення ембедингів
для обох, а потім порівнює їхні обличчя з найвищою впевненістю. Можна
підставити будь-яку іншу модель розпізнавання ONNX за домовленостями ArcFace
(вирівняний кроп на вході, ембединги (N, D) на виході), передавши шлях до
її файлу замість назви librefacerec-*. Типи джерел, потокове передбачення
та обробку результатів описано в розділі
передбачення.
Експорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| embed | embed to ONNX: не підтримується | embed to TorchScript: не підтримується | embed to ExecuTorch: не підтримується | embed to TensorRT: не підтримується | embed to OpenVINO: не підтримується | embed to Paddle: не підтримується | embed to MNN: не підтримується | embed to RKNN: не підтримується | embed to ncnn: не підтримується | embed to TFLite: не підтримується | embed to CoreML: не підтримується | embed to Core AI: не підтримується |
LibreFaceRec уже обгортає попередньо експортований граф ONNX; повторний експорт до іншого формату не реалізовано.
Ліцензування
Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.
Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.
- Оригінальна робота
- AuraFace-v1, fal.ai
- Ліцензія першоджерела
- Apache-2.0
- Джерело першоджерела
- huggingface.co/fal/AuraFace-v1
- Код LibreYOLO
- MIT
- Ваги
- Apache-2.0, поширюється авторами. LibreYOLO не розміщує й не дублює ці ваги.
- Тлумачення
- Apache-2.0 covers the embedding weights (AuraFace-v1's glintr100 recognition head), so they may be used, modified and redistributed, including commercially, provided the license text and attribution notices travel with any copy. LibreYOLO's default face detector is a separate artifact under a separate license, MIT (OpenCV Zoo's YuNet, copyright Shiqi Yu). No code is ported from either project: both graphs are consumed opaquely through onnxruntime, so LibreYOLO's own wrapper code, which carries no third-party architecture, is MIT throughout. Any other ArcFace-convention ONNX recognition model can be substituted by passing its file path, and that file's own license then applies instead of AuraFace-v1's.
Комплектний типовий детектор облич є другим артефактом з іншою ліцензією:
YuNet з OpenCV Zoo, MIT, авторське право Shiqi Yu. Код архітектури не перенесено
з жодного з двох проєктів; обидва графи непрозоро використовуються через
onnxruntime, тому власна обгортка LibreYOLO не містить стороннього коду й
повністю ліцензована за MIT.
Цитування
@inproceedings{deng2019arcface,
title={Arcface: Additive angular margin loss for deep face recognition},
author={Deng, Jiankang and Guo, Jia and Xue, Niannan and Zafeiriou, Stefanos},
booktitle={CVPR},
year={2019}
}Скопійовано з блоку цитування авторів на сторінці github.com/deepinsight/insightface/tree/master/recognition/arcface_torch#citations.