LibreFaceRec

LibreFaceRec ist die Gesichts-Embedding-Aufgabe von LibreYOLO: Ein Gesichtsdetektor lokalisiert und richtet Gesichter aus. Ein Erkennungs-Head erzeugt für Verifizierung oder Suche ein L2-normalisiertes Identitäts-Embedding.

Aufgaben
embed
Größen
Installation
pip install libreyolo
Supportstufe
Nur Inferenz, seit v. Nur Vorhersage, Validierung und Export. Trainingsfunktionen sind nicht verfügbar.
Upstream
AuraFace-v1 von fal.ai, Apache-2.0. Publikation, Quelle
Lizenzen
Code MIT, Gewichte Apache-2.0. Kommerzielle Nutzung

Installation

Der Erkennungs-Head von LibreFaceRec läuft über onnxruntime, das nicht zur Basisinstallation gehört.

bash
pip install "libreyolo[onnx]"

Vorhersage

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # librefacerec-*-Namen führen unabhängig von der Dateiendung zu dieser Familie# und laden sie bei der ersten Verwendung zusammen mit dem Standarddetektor# für Gesichter von der LibreYOLO-Organisation auf Hugging Face herunter.model = LibreYOLO("librefacerec-l.onnx")result = model(SAMPLE_IMAGE) print(result.embeddings.data.shape)   # (N, D), L2-normalisiert
CLI
libreyolo predict model=librefacerec-l.onnx source=face.jpg
Verifizieren
from libreyolo import LibreYOLO model = LibreYOLO("librefacerec-l.onnx") # Vergleicht das auffälligste Gesicht beider Bilder anhand der Kosinusähnlichkeit# ihrer L2-normalisierten Embeddings.result = model.verify("person_a.jpg", "person_b.jpg", threshold=0.4)print(result["similarity"], result["same_person"])
Galeriesuche
from libreyolo import LibreYOLO model = LibreYOLO("librefacerec-l.onnx") query = model("query.jpg").embeddings          # Gesichter dieses Bildesgallery = model.embed(["a.jpg", "b.jpg", "c.jpg"])   # (N_total, D) # Kosinusähnlichkeiten der Form (query_faces, N_total).scores = query.similarity(gallery)

Hinter einem Aufruf stehen zwei getrennte ONNX-Graphen für Erkennung und Wiedererkennung. Ein Gesichtsdetektor lokalisiert jedes Gesicht und richtet es auf einen kanonischen Zuschnitt aus. Der Erkennungs-Head gibt pro Gesicht ein L2-normalisiertes Embedding zurück. Ohne weitere Angaben lädt und verbindet predict() den mitgelieferten Standarddetektor automatisch. face_detector akzeptiert ein Callable, ein LibreYOLO-Erkennungsmodell oder eine FaceDetector-Instanz. Mit face_boxes umgehst du die Erkennung vollständig und übergibst bereits vorhandene Boxen. result.embeddings enthält eine Zeile pro erkanntem Gesicht und ist an result.boxes ausgerichtet. Die Methode .similarity() berechnet in einem Aufruf die Kosinusähnlichkeit gegenüber einem anderen Embedding oder einer ganzen Galerie. Zum direkten Vergleich zweier Bilder statt zweier bereits berechneter Embeddings führt model.verify(image_a, image_b) Erkennung und Embedding für beide aus und vergleicht das Gesicht mit der höchsten Confidence. Du kannst jedes andere ONNX-Erkennungsmodell nach der ArcFace-Konvention (ausgerichteter Zuschnitt rein, Embeddings der Form (N, D) raus) einsetzen, indem du seinen Dateipfad statt eines librefacerec-*-Namens übergibst. Unter Vorhersage findest du Quellen, Streaming und die Verarbeitung von Ergebnissen.

Export

AufgabeONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
embedembed to ONNX: nicht unterstütztembed to TorchScript: nicht unterstütztembed to ExecuTorch: nicht unterstütztembed to TensorRT: nicht unterstütztembed to OpenVINO: nicht unterstütztembed to Paddle: nicht unterstütztembed to MNN: nicht unterstütztembed to RKNN: nicht unterstütztembed to ncnn: nicht unterstütztembed to TFLite: nicht unterstütztembed to CoreML: nicht unterstütztembed to Core AI: nicht unterstützt

LibreFaceRec bindet bereits einen vorab exportierten ONNX-Graphen ein. Ein erneuter Export in ein anderes Format ist nicht implementiert.

Lizenzierung

Prüfe die Lizenz im Hugging-Face-Repository der konkreten Gewichte, die du herunterlädst. Jeder Checkpoint in der LibreYOLO-Organisation hat eine Lizenz, und sie ist innerhalb einer Familie nicht immer gleich. Dieses Repository ist die maßgebliche Quelle. Die Zusammenfassung unten beschreibt den Stand bei der letzten Verifizierung dieser Seite.

Dies ist eine Beschreibung der beteiligten Lizenzen und keine Rechtsberatung. Wenn die Antwort kommerziell relevant ist, lies die Lizenzen selbst und hole eigenen Rechtsrat ein.

Originalarbeit
AuraFace-v1, fal.ai
Upstream-Lizenz
Apache-2.0
LibreYOLO-Code
MIT
Gewichte
Apache-2.0, von den Autoren verbreitet. LibreYOLO hostet oder spiegelt sie nicht.
Einordnung
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.

Der mitgelieferte Standarddetektor für Gesichter ist ein zweites Artefakt mit einer zweiten Lizenz: YuNet aus OpenCV Zoo, MIT, Copyright Shiqi Yu. Aus keinem der beiden Projekte wurde Architekturcode portiert. Beide Graphen werden über onnxruntime als undurchsichtige Artefakte verwendet. Der eigene Wrapper von LibreYOLO enthält daher keinen Drittanbietercode und steht vollständig unter MIT.

Zitieren

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

Aus dem Zitierblock der Autoren unter github.com/deepinsight/insightface/tree/master/recognition/arcface_torch#citations kopiert.

Mit LibreYOLO v1.5.0 verifiziert. Supporttabellen, Checkpoints und Benchmarkwerte auf dieser Seite werden aus der veröffentlichten Bibliothek und den publizierten Gewichten generiert und nicht von Hand geschrieben.