← 研究一覧へ戻る

研究開発&論文

ArcFace

ディープ顔認識のための加法的角度マージン損失

ArcFace は加法的な角度マージンによる目的関数を導入し、本番規模で顔埋め込みの識別力を大きく高めました。

論文情報

ArcFace: Additive Angular Margin Loss for Deep Face Recognition

発表先

CVPR 2019

著者

Jiankang Deng, Jia Guo, Niannan Xue, Stefanos Zafeiriou

論文を見る

研究概要

ArcFace は埋め込み空間における同一人物クラスの分離性を、学習の実用性を保ったまま大幅に向上させたため、最も影響力のある顔認識論文のひとつとなりました。本人確認、識別、検索、アカウントセキュリティなど多くの本番パイプラインで強力なベースラインとして広く採用されています。

実運用での活用シーン

  • 本人確認とデジタル オンボーディング
  • アクセス制御と従業員認証
  • 重複アカウント検知と不正対策
  • 大規模顔検索とウォッチリスト照合

コード例

buffalo_l で 2 つの顔埋め込みを比較

buffalo_l を読み込み、2 枚の画像から正規化済み埋め込みを抽出し、顔認証ワークフロー向けにコサイン類似度を計算します。

demo.py
1import cv2
2import numpy as np
3from insightface.app import FaceAnalysis
4
5app = FaceAnalysis(name="buffalo_l")
6app.prepare(ctx_id=0, det_size=(640, 640))
7
8img1 = cv2.imread("person_a.jpg")
9img2 = cv2.imread("person_b.jpg")
10if img1 is None or img2 is None:
11 raise FileNotFoundError("input image not found")
12
13faces1 = app.get(img1)
14faces2 = app.get(img2)
15if not faces1 or not faces2:
16 raise RuntimeError("face detection failed")
17
18feat1 = faces1[0].normed_embedding
19feat2 = faces2[0].normed_embedding
20similarity = float(np.dot(feat1, feat2))
21
22print("face 1 feature:", feat1[:5])
23print("face 2 feature:", feat2[:5])
24print("cosine similarity:", similarity)

主な貢献

明示的な角度マージンを加えることで、同一人物クラスタをより密に、別人同士の分離をより明確に学習させます。

主要な顔認識ベンチマークで性能を大きく改善し、現代的な顔埋め込みの標準損失として ArcFace を確立しました。

マッチング、重複排除、ウォッチリスト検索など、安定した類似度スコアを必要とする大規模認識システムと自然に組み合わせて利用できます。

法人向けお問い合わせ

ビジネスニーズをご相談ください

モデルライセンス、エンタープライズ導入支援、カスタムAI開発、事業提携については InsightFace までお問い合わせください。

ビジネスメールアドレスからのお問い合わせのみ受け付けております。