LibreFaceRec
LibreFaceRec — задача эмбеддингов лиц в LibreYOLO: детектор лиц находит и выравнивает лица, а голова распознавания выдаёт L2-нормированный эмбеддинг личности для верификации или поиска.
- Задачи
- embed
- Размеры
- Установка
pip install libreyolo- Уровень поддержки
- Только инференс, начиная с v. Только предсказание, валидация и экспорт. Функции обучения неприменимы.
- Исходный проект
- AuraFace-v1 от fal.ai, Apache-2.0. Статья, исходный код
- Лицензии
- Код: 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.