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.
pip install "libreyolo[onnx]"Predição
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 L2libreyolo predict model=librefacerec-l.onnx source=face.jpgfrom 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"])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
| Tarefa | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| embed | embed to ONNX: incompatível | embed to TorchScript: incompatível | embed to ExecuTorch: incompatível | embed to TensorRT: incompatível | embed to OpenVINO: incompatível | embed to Paddle: incompatível | embed to MNN: incompatível | embed to RKNN: incompatível | embed to ncnn: incompatível | embed to TFLite: incompatível | embed to CoreML: incompatível | embed 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.