LibreFaceRec

LibreFaceRec è il task di face embedding di LibreYOLO: un rilevatore di volti individua e allinea i volti, e una testa di riconoscimento produce un embedding di identità normalizzato L2 per la verifica o la ricerca.

Task
embed
Dimensioni
Installa
pip install libreyolo
Livello di supporto
Solo inferenza, dalla v. Solo predizione, validazione ed esportazione. Le funzionalità di addestramento non si applicano.
Origine
AuraFace-v1 di fal.ai, Apache-2.0. Articolo, sorgente
Licenze
Codice MIT, pesi Apache-2.0. Uso commerciale

Installazione

La testa di riconoscimento di LibreFaceRec passa per onnxruntime, che non fa parte dell'installazione base.

bash
pip install "libreyolo[onnx]"

Predizione

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # I nomi librefacerec-* puntano a questa famiglia a prescindere dal# suffisso del file e al primo uso vengono scaricati dall'org Hugging# Face di LibreYOLO, insieme al rilevatore di volti predefinito.model = LibreYOLO("librefacerec-l.onnx")result = model(SAMPLE_IMAGE) print(result.embeddings.data.shape)   # (N, D), normalizzati L2
CLI
libreyolo predict model=librefacerec-l.onnx source=face.jpg
Verifica
from libreyolo import LibreYOLO model = LibreYOLO("librefacerec-l.onnx") # Confronta il volto più prominente di ciascuna immagine tramite la# similarità coseno dei loro embedding normalizzati L2.result = model.verify("person_a.jpg", "person_b.jpg", threshold=0.4)print(result["similarity"], result["same_person"])
Ricerca in una galleria
from libreyolo import LibreYOLO model = LibreYOLO("librefacerec-l.onnx") query = model("query.jpg").embeddings          # i volti di questa immaginegallery = model.embed(["a.jpg", "b.jpg", "c.jpg"])   # (N_total, D) # Similarità coseno (query_faces, N_total).scores = query.similarity(gallery)

Il rilevamento e il riconoscimento sono due grafi ONNX separati dietro a una sola chiamata: un rilevatore di volti individua e allinea ogni volto a un ritaglio canonico, e la testa di riconoscimento restituisce un embedding normalizzato L2 per ogni volto. Se non intervieni, predict() scarica e abbina automaticamente il rilevatore predefinito incluso. face_detector accetta un callable, un modello di rilevamento LibreYOLO o un'istanza di FaceDetector; face_boxes salta del tutto il rilevamento usando i box che hai già. result.embeddings contiene una riga per ogni volto rilevato, allineata con result.boxes; il suo metodo .similarity() calcola la similarità coseno rispetto a un altro embedding o a un'intera galleria in una sola chiamata. Per confrontare direttamente due immagini invece di due embedding già calcolati, model.verify(image_a, image_b) esegue rilevamento ed embedding su entrambe e confronta il volto con la confidenza più alta. Qualsiasi altro modello di riconoscimento ONNX che segua la convenzione ArcFace (in ingresso un ritaglio allineato, in uscita embedding (N, D)) può essere sostituito passando il percorso del suo file al posto di un nome librefacerec-*. Vedi predizione per sorgenti, streaming e gestione dei risultati.

Esportazione

TaskONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
embedembed to ONNX: non supportatoembed to TorchScript: non supportatoembed to ExecuTorch: non supportatoembed to TensorRT: non supportatoembed to OpenVINO: non supportatoembed to Paddle: non supportatoembed to MNN: non supportatoembed to RKNN: non supportatoembed to ncnn: non supportatoembed to TFLite: non supportatoembed to CoreML: non supportatoembed to Core AI: non supportato

LibreFaceRec incapsula già un grafo ONNX pre-esportato; la riesportazione verso un altro formato non è implementata.

Licenze

Controlla la licenza nel repository Hugging Face degli specifici pesi che scarichi. Ogni checkpoint nell<link>organizzazione LibreYOLO</link> ne include una e non è sempre la stessa per tutta la famiglia. Quel repository è la fonte autorevole; il riepilogo seguente descrive le condizioni applicabili al momento dellultima verifica di questa pagina.

Questa è una descrizione delle licenze coinvolte, non una consulenza legale. Se la risposta è importante a fini commerciali, leggi personalmente le licenze e chiedi una consulenza indipendente.

Lavoro originale
AuraFace-v1, fal.ai
Licenza upstream
Apache-2.0
Codice LibreYOLO
MIT
Pesi
Apache-2.0, distribuiti dai rispettivi autori. LibreYOLO non li ospita né ne mantiene una copia.
Interpretazione
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.

Il rilevatore di volti predefinito incluso è un secondo artefatto con una seconda licenza: YuNet di OpenCV Zoo, MIT, copyright Shiqi Yu. Non è stato portato codice di architettura da nessuno dei due progetti; entrambi i grafi vengono consumati in modo opaco tramite onnxruntime, quindi il wrapper di LibreYOLO non contiene codice di terze parti ed è MIT ovunque.

Citazione

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

Copiato dal blocco di citazione degli autori disponibile su github.com/deepinsight/insightface/tree/master/recognition/arcface_torch#citations.

Verificato con LibreYOLO v1.5.0. Le tabelle di supporto, i checkpoint e i dati dei benchmark in questa pagina vengono generati dalla libreria rilasciata e dai pesi pubblicati, non scritti a mano.