LibreFaceRec

LibreFaceRec은 LibreYOLO의 얼굴 임베딩 작업입니다. 얼굴 탐지기가 얼굴을 찾고 정렬하며, 인식 헤드는 검증 또는 검색을 위해 L2 정규화된 신원 임베딩을 생성합니다.

작업
embed
크기
설치
pip install libreyolo
지원 티어
추론 전용, v부터 지원. 예측, 검증, 내보내기만 지원합니다. 학습 기능은 적용되지 않습니다.
업스트림
fal.ai의 AuraFace-v1, Apache-2.0. 논문, 소스
라이선스
코드 MIT, 가중치 Apache-2.0. 상업적 사용

설치

LibreFaceRec의 인식 헤드는 기본 설치에 포함되지 않는 onnxruntime을 사용해 실행합니다.

bash
pip install "libreyolo[onnx]"

예측

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # librefacerec-* 이름은 파일 접미사와 관계없이 이 계열로 라우팅하며# 처음 사용할 때 기본 얼굴 탐지기와 함께 LibreYOLO Hugging Face# 조직에서 내려받습니다.model = LibreYOLO("librefacerec-l.onnx")result = model(SAMPLE_IMAGE) print(result.embeddings.data.shape)   # (N, D), L2 정규화됨
CLI
libreyolo predict model=librefacerec-l.onnx source=face.jpg
검증
from libreyolo import LibreYOLO model = LibreYOLO("librefacerec-l.onnx") # 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          # 이 이미지의 얼굴gallery = model.embed(["a.jpg", "b.jpg", "c.jpg"])   # (N_total, D) # (query_faces, N_total) 코사인 유사도입니다.scores = query.similarity(gallery)

한 번의 호출 뒤에서 탐지와 인식이라는 두 개의 별도 ONNX 그래프가 작동합니다. 얼굴 탐지기가 각 얼굴을 찾아 표준 크롭으로 정렬하고, 인식 헤드는 얼굴마다 L2 정규화된 임베딩을 반환합니다. 그대로 사용하면 predict()가 번들된 기본 탐지기를 자동으로 내려받아 연결합니다. face_detector에는 호출 가능 객체, LibreYOLO 탐지 모델 또는 FaceDetector 인스턴스를 사용할 수 있으며, face_boxes는 이미 보유한 바운딩 박스로 탐지를 완전히 건너뜁니다. result.embeddings에는 탐지된 얼굴마다 result.boxes와 정렬된 행 하나가 들어 있습니다. .similarity() 메서드는 다른 임베딩 또는 전체 갤러리와의 코사인 유사도를 한 번의 호출로 계산합니다. 이미 계산된 두 임베딩 대신 두 이미지를 직접 비교하려면 model.verify(image_a, image_b)가 두 이미지에서 탐지와 임베딩을 실행하고 가장 신뢰도가 높은 얼굴을 비교합니다. 다른 ArcFace 규약 ONNX 인식 모델도 사용할 수 있습니다. 정렬된 크롭을 입력받고 (N, D) 임베딩을 출력하는 모델의 파일 경로를 librefacerec-* 이름 대신 전달합니다. 소스, 스트리밍, 결과 처리는 예측을 참조합니다.

내보내기

작업ONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
embedembed to ONNX: 지원하지 않음embed to TorchScript: 지원하지 않음embed to ExecuTorch: 지원하지 않음embed to TensorRT: 지원하지 않음embed to OpenVINO: 지원하지 않음embed to Paddle: 지원하지 않음embed to MNN: 지원하지 않음embed to RKNN: 지원하지 않음embed to ncnn: 지원하지 않음embed to TFLite: 지원하지 않음embed to CoreML: 지원하지 않음embed to Core AI: 지원하지 않음

LibreFaceRec은 이미 내보낸 ONNX 그래프를 래핑하므로 다른 형식으로 다시 내보내기는 구현되지 않았습니다.

라이선스

내려받는 특정 가중치의 Hugging Face 저장소에서 라이선스를 확인하십시오. LibreYOLO 조직의 모든 체크포인트에는 라이선스가 있으며 한 계열 안에서도 항상 같지는 않습니다. 해당 저장소가 신뢰할 수 있는 기준입니다. 아래 요약은 이 페이지를 마지막으로 검증했을 때 적용된 내용을 설명합니다.

관련 라이선스에 관한 설명이며 법률 자문이 아닙니다. 상업적으로 중요한 사안이라면 라이선스를 직접 읽고 별도의 법률 자문을 받으십시오.

원작
AuraFace-v1, fal.ai
업스트림 라이선스
Apache-2.0
LibreYOLO 코드
MIT
가중치
Apache-2.0, 저자가 배포합니다. LibreYOLO는 이를 호스팅하거나 미러링하지 않습니다.
해석
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.

번들된 기본 얼굴 탐지기는 별도의 라이선스가 적용되는 두 번째 아티팩트입니다. OpenCV Zoo의 YuNet이며 MIT, copyright Shiqi Yu입니다. 어느 프로젝트에서도 아키텍처 코드를 포팅하지 않았습니다. 두 그래프 모두 onnxruntime을 통해 불투명하게 사용하므로 LibreYOLO 자체 래퍼에는 타사 코드가 없으며 전체에 MIT가 적용됩니다.

인용

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

github.com/deepinsight/insightface/tree/master/recognition/arcface_torch#citations에 있는 저자의 인용 블록에서 복사했습니다.

LibreYOLO v1.5.0에서 검증되었습니다. 이 페이지의 지원 표, 체크포인트, 벤치마크 수치는 출시된 라이브러리와 공개된 가중치에서 생성되며 수동으로 작성되지 않습니다.