← ブログ一覧へ戻る
研究顔認識ArcFace

ニューラルネットワークによる顔認識の進化: DeepFace から ArcFace、そしてその先へ

はじめに

顔認識は、顔画像から個人を識別または認証する技術であり、コンピュータビジョンの中でも特に重要で影響力の大きい分野です。Handcrafted Features から深層ニューラルネットワークへの移行により、精度、頑健性、スケーラビリティは飛躍的に向上しました。

Deep Learning 以前

Eigenfaces と Fisherfaces (1990年代)

初期の顔認識手法は、顔画像を高次元ベクトルとして扱い、次元削減を利用して識別を行いました。Eigenfaces (PCA) や Fisherfaces (LDA) は先駆的でしたが、照明、姿勢、表情の変化に弱いという欠点がありました。

Local Feature Descriptors (2000年代)

LBPH や Gabor features のような局所特徴は、ロバスト性を改善しました。しかし、制約の少ない実環境下での顔認識には、表現力が十分ではありませんでした。

Deep Learning 革命

DeepFace (2014)

Facebook の DeepFace は、LFW ベンチマークで 97.35% を達成し、ほぼ人間並みの性能を示した転換点でした。主な特徴は次の通りです。

  • 前処理としての 3D face alignment
  • 400 万枚規模の学習データ
  • softmax classification を用いた deep CNN architecture
  • 学習特徴が handcrafted features を大きく上回ることを実証

DeepID シリーズ (2014–2015)

香港中文大学の DeepID 系列は、さらに高い精度を達成しました。

  • 顔の複数領域から特徴を抽出する multi-patch approach
  • identification と verification の joint learning
  • DeepID2+ で LFW 99.47% を達成

FaceNet (2015)

Google の FaceNet は triplet loss を導入しました。

  • ユークリッド空間での直接的な embedding learning
  • 効率的な triplet selection strategy
  • 大規模検索に適した 128 次元 embedding
  • LFW 99.63% を達成

ArcFace 革命

ArcFace: Additive Angular Margin Loss (CVPR 2019)

InsightFace チームが開発した ArcFace は、シンプルでありながら極めて効果的な loss function を提示し、顔認識学習の事実上の標準となりました。

主要なイノベーション

ArcFace は、正規化された hypersphere 上で、feature vector と正解 class center の角度に angular margin を加えます。損失関数は次の通りです。

L = -log(e^(s·cos(θ_yi + m)) / (e^(s·cos(θ_yi + m)) + Σ e^(s·cos(θ_j))))

ここで m は additive angular margin、s は scaling factor です。

ArcFace が有効な理由

  • 幾何学的な解釈性: angular margin に明確な幾何学的意味がある
  • 安定した学習: 他の margin-based loss と比べて収束が安定している
  • 高い汎化性能: クラス内の凝集とクラス間の分離を同時に強化できる

影響と普及

ArcFace は現在、最も広く採用されている顔認識 loss function のひとつです。

  • 8,000 件超の引用
  • InsightFace を含む多数の framework に統合
  • NIST FRVT の上位提出の基盤技術として採用

大規模学習への対応: Partial FC (CVPR 2022)

大規模分類層の最適化

顔認識データセットが数百万 ID 規模に達すると、分類層がボトルネックになります。Partial FC はこれを次のように解決します。

  • 各イテレーションで class center の一部のみをランダムにサンプリング
  • 単一マシンでも 1,000 万 ID 超の学習が可能
  • 精度を維持しながらメモリと計算量を大幅削減
  • 実運用モデルに不可欠な設計

ノイズへの対応: Sub-center ArcFace (ECCV 2020)

ノイズを含むデータでの堅牢学習

現実の学習データには誤ラベルが含まれることがあります。Sub-center ArcFace は次の方法で対処します。

  • 各クラスに単一中心ではなく K 個の sub-center を学習
  • dominant sub-center がクリーンサンプルを表現
  • 非支配的な sub-center がノイズサンプルを吸収
  • 自動的なノイズ検出とクリーニングを支援

現在の最先端

InsightFace Recognition Pipeline

InsightFace は、顔認識のための包括的な pipeline を提供します。

from insightface.app import FaceAnalysis

import numpy as np

app = FaceAnalysis(name='buffalo_l')

app.prepare(ctx_id=0, det_size=(640, 640))

# Extract embeddings

face1 = app.get(img1)[0]

face2 = app.get(img2)[0]

# Compute similarity

sim = np.dot(face1.embedding, face2.embedding)

sim = sim / (np.linalg.norm(face1.embedding) * np.linalg.norm(face2.embedding))

print(f"Similarity: {sim:.4f}")

Model Zoo

InsightFace の model zoo は、さまざまな導入要件に合わせた事前学習モデルを提供しています。

ModelBackboneLFWCFP-FPAgeDB-30
buffalo_sMobileFaceNet99.33%95.51%95.13%
buffalo_lResNet-5099.83%99.50%98.23%
antelopev2ResNet-10099.80%99.47%98.10%

今後の方向性

この分野は今後も進化を続けます。

  • Masked face recognition: 部分遮蔽された顔への対応
  • Cross-age recognition: 年齢差をまたぐ頑健な識別
  • Privacy-preserving recognition: Homomorphic Encryption や Federated Learning の活用
  • 3D face recognition: 深度情報を利用したさらなる精度向上

結論

Eigenfaces から ArcFace に至るまで、顔認識は劇的な進化を遂げました。InsightFace の ArcFace、Partial FC、Sub-center ArcFace は、この進化の中心にあり、研究者と企業の双方に最先端の顔認識基盤を提供しています。