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.
pip install "libreyolo[onnx]"Predykcja
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 L2libreyolo predict model=librefacerec-l.onnx source=face.jpgfrom 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"])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
| Zadanie | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| embed | embed to ONNX: brak obsługi | embed to TorchScript: brak obsługi | embed to ExecuTorch: brak obsługi | embed to TensorRT: brak obsługi | embed to OpenVINO: brak obsługi | embed to Paddle: brak obsługi | embed to MNN: brak obsługi | embed to RKNN: brak obsługi | embed to ncnn: brak obsługi | embed to TFLite: brak obsługi | embed to CoreML: brak obsługi | embed 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.