LibreFaceRec

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

Задачі
embed
Розміри
Встановлення
pip install libreyolo
Рівень підтримки
Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
Першоджерело
AuraFace-v1, автори: fal.ai, ліцензія Apache-2.0. Стаття, джерело
Ліцензії
Код: MIT, ваги: Apache-2.0. Комерційне використання

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

Голова розпізнавання LibreFaceRec працює через onnxruntime, якого немає в базовому встановленні.

bash
pip install "libreyolo[onnx]"

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

Python
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-нормалізовано
CLI
libreyolo predict model=librefacerec-l.onnx source=face.jpg
Верифікація
from 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-*. Типи джерел, потокове передбачення та обробку результатів описано в розділі передбачення.

Експорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
embedembed 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.

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