LibreFaceRec

LibreFaceRec to zadanie embeddingów twarzy w LibreYOLO: detektor twarzy lokalizuje i wyrównuje twarze, a głowica rozpoznawania tworzy znormalizowany metodą L2 embedding tożsamości do weryfikacji lub wyszukiwania.

Zadania
embed
Rozmiary
Instalacja
pip install libreyolo
Poziom obsługi
Tylko inferencja, od wersji v. Tylko predykcja, walidacja i eksport. Funkcje trenowania nie mają zastosowania.
Projekt źródłowy
AuraFace-v1, autorzy: fal.ai, licencja: Apache-2.0. Publikacja, kod źródłowy
Licencje
Kod: MIT, wagi: Apache-2.0. Użycie komercyjne

Instalacja

Głowica rozpoznawania LibreFaceRec działa przez onnxruntime, które nie jest częścią instalacji podstawowej.

bash
pip install "libreyolo[onnx]"

Predykcja

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Nazwy librefacerec-* kierują do tej rodziny niezależnie od rozszerzenia# pliku i przy pierwszym użyciu pobierają pliki z organizacji LibreYOLO# na Hugging Face, razem z domyślnym detektorem twarzy.model = LibreYOLO("librefacerec-l.onnx")result = model(SAMPLE_IMAGE) print(result.embeddings.data.shape)   # (N, D), normalizacja L2
CLI
libreyolo predict model=librefacerec-l.onnx source=face.jpg
Weryfikacja
from libreyolo import LibreYOLO model = LibreYOLO("librefacerec-l.onnx") # Porównuje najbardziej widoczną twarz na każdym obrazie za pomocą podobieństwa# cosinusowego ich embeddingów znormalizowanych metodą L2.result = model.verify("person_a.jpg", "person_b.jpg", threshold=0.4)print(result["similarity"], result["same_person"])
Wyszukiwanie w galerii
from libreyolo import LibreYOLO model = LibreYOLO("librefacerec-l.onnx") query = model("query.jpg").embeddings          # twarze na tym obraziegallery = model.embed(["a.jpg", "b.jpg", "c.jpg"])   # (N_total, D) # Podobieństwa cosinusowe (query_faces, N_total).scores = query.similarity(gallery)

Za jednym wywołaniem kryją się dwa osobne grafy ONNX do detekcji i rozpoznawania. Detektor twarzy lokalizuje i wyrównuje każdą twarz do kanonicznego przycięcia, a głowica rozpoznawania zwraca dla każdej twarzy embedding znormalizowany metodą L2. Bez dodatkowej konfiguracji predict() automatycznie pobiera i łączy dołączony domyślny detektor. face_detector przyjmuje wywoływalny obiekt, model detekcji LibreYOLO albo instancję FaceDetector. face_boxes całkowicie pomija detekcję, korzystając z już dostępnych ramek. result.embeddings zawiera jeden wiersz na wykrytą twarz, wyrównany z result.boxes. Jego metoda .similarity() oblicza w jednym wywołaniu podobieństwo cosinusowe względem innego embeddingu lub całej galerii. Aby bezpośrednio porównać dwa obrazy zamiast dwóch wcześniej obliczonych embeddingów, model.verify(image_a, image_b) uruchamia detekcję i tworzenie embeddingów dla obu obrazów, a następnie porównuje ich twarze o najwyższej pewności. Można zastąpić głowicę dowolnym innym modelem rozpoznawania ONNX zgodnym z konwencją ArcFace, który przyjmuje wyrównane przycięcie i zwraca embeddingi (N, D). Wystarczy przekazać ścieżkę jego pliku zamiast nazwy librefacerec-*. Więcej informacji o źródłach, streamingu i obsłudze wyników zawiera strona predykcji.

Eksport

ZadanieONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
embedembed to ONNX: brak obsługiembed to TorchScript: brak obsługiembed to ExecuTorch: brak obsługiembed to TensorRT: brak obsługiembed to OpenVINO: brak obsługiembed to Paddle: brak obsługiembed to MNN: brak obsługiembed to RKNN: brak obsługiembed to ncnn: brak obsługiembed to TFLite: brak obsługiembed to CoreML: brak obsługiembed to Core AI: brak obsługi

LibreFaceRec już opakowuje wcześniej wyeksportowany graf ONNX. Ponowny eksport do innego formatu nie jest zaimplementowany.

Licencja

Sprawdź licencję w repozytorium konkretnych pobieranych wag na Hugging Face. Każdy checkpoint w organizacji LibreYOLO ma licencję, która nie zawsze jest taka sama w całej rodzinie. To repozytorium jest źródłem rozstrzygającym, a poniższe podsumowanie opisuje stan z chwili ostatniej weryfikacji tej strony.

To opis obowiązujących licencji, a nie porada prawna. Jeśli odpowiedź ma znaczenie komercyjne, przeczytaj licencje i zasięgnij własnej porady prawnej.

Oryginalna praca
AuraFace-v1, fal.ai
Licencja projektu źródłowego
Apache-2.0
Kod źródłowy projektu
huggingface.co/fal/AuraFace-v1
Kod LibreYOLO
MIT
Wagi
Apache-2.0, rozpowszechniane przez autorów. LibreYOLO ich nie hostuje ani nie udostępnia kopii.
Interpretacja
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.

Dołączony domyślny detektor twarzy jest drugim artefaktem podlegającym osobnej licencji: YuNet z OpenCV Zoo, licencja MIT, prawa autorskie Shiqi Yu. Kod architektury nie jest przenoszony z żadnego projektu. Oba grafy są używane jako nieprzezroczyste artefakty przez onnxruntime, dlatego własny wrapper LibreYOLO nie zawiera kodu zewnętrznego i w całości podlega licencji MIT.

Cytowanie

@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}
}

Skopiowano z bloku cytowania autorów w github.com/deepinsight/insightface/tree/master/recognition/arcface_torch#citations.

Zweryfikowano z LibreYOLO v1.5.0. Tabele obsługi, checkpointy i wyniki benchmarków na tej stronie są generowane na podstawie wydanej biblioteki i opublikowanych wag, a nie wpisywane ręcznie.