Ver como markdown

LibreFaceRec

O LibreFaceRec é a tarefa de embedding facial do LibreYOLO: um detector de rostos localiza e alinha os rostos, e uma cabeça de reconhecimento produz um embedding de identidade normalizado por L2 para verificação ou busca.

Tarefas
embed
Tamanhos
Instalação
pip install libreyolo
Nível de suporte
Somente inferência, desde a v. Somente predição, validação e exportação. Os recursos de treinamento não se aplicam.
Origem
AuraFace-v1 por fal.ai, Apache-2.0. Artigo, código-fonte
Licenças
Código MIT, pesos Apache-2.0. Uso comercial

Instalação

A cabeça de reconhecimento do LibreFaceRec roda através do onnxruntime, que não faz parte da instalação base.

bash
pip install "libreyolo[onnx]"

Predição

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # nomes librefacerec-* apontam para esta família independentemente do# sufixo do arquivo e são baixados da org do LibreYOLO no Hugging Face# no primeiro uso, junto com o detector de rostos padrão.model = LibreYOLO("librefacerec-l.onnx")result = model(SAMPLE_IMAGE) print(result.embeddings.data.shape)   # (N, D), normalizado por L2
CLI
libreyolo predict model=librefacerec-l.onnx source=face.jpg
Verificar
from libreyolo import LibreYOLO model = LibreYOLO("librefacerec-l.onnx") # Compara o rosto mais proeminente de cada imagem pela similaridade# de cosseno dos seus embeddings normalizados por L2.result = model.verify("person_a.jpg", "person_b.jpg", threshold=0.4)print(result["similarity"], result["same_person"])
Busca na galeria
from libreyolo import LibreYOLO model = LibreYOLO("librefacerec-l.onnx") query = model("query.jpg").embeddings          # os rostos desta imagemgallery = model.embed(["a.jpg", "b.jpg", "c.jpg"])   # (N_total, D) # similaridades de cosseno (query_faces, N_total).scores = query.similarity(gallery)

Detecção e reconhecimento são dois grafos ONNX separados por trás de uma única chamada: um detector de rostos localiza e alinha cada rosto em um recorte canônico, e a cabeça de reconhecimento devolve um embedding normalizado por L2 para cada rosto. Sem nenhuma configuração, o predict() baixa e pareia automaticamente o detector padrão que vem embutido. face_detector aceita um callable, um modelo de detecção do LibreYOLO ou uma instância de FaceDetector; face_boxes pula a detecção por completo usando caixas que você já tem. result.embeddings guarda uma linha por rosto detectado, alinhada com result.boxes; o método .similarity() dele calcula a similaridade de cosseno contra outro embedding ou contra uma galeria inteira em uma única chamada. Para comparar duas imagens diretamente, em vez de dois embeddings já calculados, model.verify(image_a, image_b) roda detecção e embedding nas duas e compara o rosto mais confiante de cada uma. Qualquer outro modelo ONNX de reconhecimento na convenção ArcFace (recorte alinhado na entrada, embeddings (N, D) na saída) pode ser usado no lugar, passando o caminho do arquivo dele em vez de um nome librefacerec-*. Veja predição para fontes, streaming e tratamento de resultados.

Exportação

TarefaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
embedembed to ONNX: incompatívelembed to TorchScript: incompatívelembed to ExecuTorch: incompatívelembed to TensorRT: incompatívelembed to OpenVINO: incompatívelembed to Paddle: incompatívelembed to MNN: incompatívelembed to RKNN: incompatívelembed to ncnn: incompatívelembed to TFLite: incompatívelembed to CoreML: incompatívelembed to Core AI: incompatível

O LibreFaceRec já embrulha um grafo ONNX pré-exportado; reexportá-lo para outro formato não está implementado.

Licenciamento

Confira a licença no repositório do Hugging Face correspondente aos pesos que você baixar. Cada checkpoint na organização LibreYOLO tem uma licença, e ela nem sempre é a mesma em toda a família. Esse repositório é a fonte oficial. O resumo abaixo descreve o que se aplicava na última verificação desta página.

Esta é uma descrição das licenças envolvidas, não uma orientação jurídica. Se a resposta tiver importância comercial, leia as licenças e procure sua própria assessoria.

Trabalho original
AuraFace-v1, fal.ai
Licença original
Apache-2.0
Código-fonte original
huggingface.co/fal/AuraFace-v1
Código do LibreYOLO
MIT
Pesos
Apache-2.0, distribuído pelos autores. O LibreYOLO não hospeda nem espelha esses pesos.
Interpretação
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.

O detector de rostos padrão que vem embutido é um segundo artefato sob uma segunda licença: o YuNet do OpenCV Zoo, MIT, copyright Shiqi Yu. Nenhum código de arquitetura é portado de qualquer um dos dois projetos; ambos os grafos são consumidos de forma opaca através do onnxruntime, então o wrapper do próprio LibreYOLO não carrega nenhum código de terceiros e é MIT por inteiro.

Citação

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

Copiado do bloco de citação dos autores em github.com/deepinsight/insightface/tree/master/recognition/arcface_torch#citations.

Verificado com o LibreYOLO v1.5.0. As tabelas de suporte, os checkpoints e os números de benchmark desta página são gerados a partir da biblioteca lançada e dos pesos publicados, não escritos à mão.