LibreFaceRec
LibreFaceRecはLibreYOLOの顔埋め込みタスクです。顔検出器が顔を特定して位置合わせし、認識ヘッドが照合または検索用のL2正規化済み識別埋め込みベクトルを生成します。
- タスク
- embed
- サイズ
- インストール
pip install libreyolo- サポートティア
- 推論のみ、v以降。推論、検証、エクスポートのみです。学習機能は対象外です。
- ライセンス
- コード:MIT、重み:Apache-2.0。商用利用
インストール
LibreFaceRecの認識ヘッドは、基本インストールに含まれない onnxruntime を通じて実行されます。
pip install "libreyolo[onnx]"推論
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正規化済みlibreyolo predict model=librefacerec-l.onnx source=face.jpgfrom 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)1回の呼び出しの背後で、検出と認識を別々の2つのONNXグラフが処理します。顔検出器が各顔を特定して標準的なクロップに位置合わせし、認識ヘッドが顔ごとにL2正規化済み埋め込みベクトルを返します。指定を変えなければ、predict() は同梱されたデフォルト検出器を自動的にダウンロードして組み合わせます。face_detector は呼び出し可能オブジェクト、LibreYOLO検出モデル、または FaceDetector インスタンスを受け付けます。face_boxes にはすでに用意したボックスを渡し、検出を完全に省略できます。result.embeddings は検出した顔ごとに1行を持ち、result.boxes と対応しています。その .similarity() メソッドは、別の埋め込みベクトルまたはギャラリー全体に対するコサイン類似度を1回の呼び出しで計算します。計算済みの2つの埋め込みベクトルではなく2枚の画像を直接比較するには、model.verify(image_a, image_b) が両方に対して検出と埋め込みを実行し、最も信頼度の高い顔を比較します。ファイルパスを librefacerec-* 名の代わりに渡せば、ArcFace規約に従う他のONNX認識モデル(位置合わせ済みクロップを入力し、(N, D) の埋め込みベクトルを出力)へ置き換えることもできます。ソース、ストリーミング、結果の処理については、推論を参照してください。
エクスポート
| タスク | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| embed | embed 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 orgの各チェックポイントにはライセンスが付与されており、同じファミリー内でも常に同一とは限りません。そのリポジトリが正式な情報源です。以下の概要は、このページを最後に検証した時点で適用されていた内容を示します。
これは関連するライセンスの説明であり、法的助言ではありません。商用上重要な場合は、自分でライセンスを読み、専門家の助言を受けてください。
- 原著作物
- AuraFace-v1, fal.ai
- アップストリームのライセンス
- Apache-2.0
- アップストリームのソース
- huggingface.co/fal/AuraFace-v1
- 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.
同梱のデフォルト顔検出器は、別のライセンスを持つ2つ目の成果物です。OpenCV ZooのYuNetで、MITライセンス、著作権者は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の引用ブロックからコピーしています。