Survey: ArcFace: Additive Angular Margin Loss for Deep Face Recognition

2026-08-16
| CVPR 2019

Jiankang Deng, Jia Guo, Niannan Xue, Stefanos Zafeiriou

當前挑戰

人臉辨識(Face Recognition, FR)的實作路線主要分為兩派:
1. 分類任務路線:訓練一個 multi-class classifier,將不同身分視為不同類別,常見採用 Softmax Loss
2. 度量學習路線:訓練模型抽取人臉 embedding,透過特徵分群進行比對,代表性方法為 Triplet Loss

但這兩條路線在實際大規模落地時,都存在難以忽視的痛點:

傳統分類與分群方法的本質限制

Softmax Loss 屬於封閉集合(Closed-set)問題:只要有新的人臉類別加入,整個分類器就必須重新訓練,且最後一層 FC 的參數量會隨類別數線性暴增。
Triplet Loss 雖適用於開放集合(Open-set),但在大訓練集下,triplet 的數量會爆炸性地增長!這導致挖掘 semi-hard 與 hard sample 的耗時大幅攀升,拖垮訓練速度。

小筆記:Triplet 組合爆炸
2015 年 FaceNet 證實了 triplet loss 在 FR 上的優異表現,但若資料庫有 N 個類別、每類 K 張照片,理論上的 triplet 組合數為:

    \[C^N_1 C^K_2 C^{N-1}_1 C^K_1 = N \cdot \frac{K(K-1)}{2} \cdot (N-1) \cdot K = O(K^3N^2)\]


面對百萬級人臉資料集,這種採樣複雜度極其沉重。

特徵邊界 Margin 不夠大且幾何意涵不直覺

在歐氏空間中做特徵分群時,常會遇到 intra-class distance(同類距離)反而大於 inter-class distance(異類距離)的情況。

歐氏空間中的類內與類間距離問題
在歐氏空間中做分群時常遇到的痛點:同類別樣本間的距離(如 G1 到 G2)可能反而大於不同類別樣本間的距離(如 G1 到 B1)。

在此之前,SphereFace 提出了 A-Softmax Loss,將特徵投影到超球面、用角度 \theta 作為分群依據:

SphereFace A-Softmax loss
SphereFace 引入的角度邊界設計。
Cosine space margin
SphereFace 的 margin 是做在 cosine space 上的乘法因子,當角度 \theta 較小時,邊界的區隔效果會大幅減弱;CosFace 雖改為固定減法 margin,但在幾何角度上的意涵依然較不直覺。

主要貢獻

ArcFace (Additive Angular Margin Loss) 在超球面座標系上給出了一個極為乾淨且直覺的解法:直接在角度空間加上固定的加法 margin m

解決: 傳統分類與分群方法的本質限制

ArcFace 採用權重中心向量 W_j 代表每個類別的特徵中心,大幅縮減了樣本對樣本比對的計算量。

ArcFace Sub-centers
ArcFace 利用同類別樣本的中心代表整體類別,免去了龐大的 triplet 組合採樣。為避免 noise sample 影響中心的代表性,每個類別還可設定 K 個 sub-centers,選取距離最近的 sub-center 計算 loss。

解決: 特徵邊界 Margin 不夠大且幾何意涵不直覺

ArcFace 將特徵與權重向量進行 L_2 正則化,使內積純粹等於夾角餘弦 \cos\theta。接著直接在角度 \theta 上加上加法邊界 m

    \[\mathcal{L} = -\frac{1}{N}\sum_{i=1}^N \log \frac{e^{s \cos(\theta_{y_i} + m)}}{e^{s \cos(\theta_{y_i} + m)} + \sum_{j \neq y_i} e^{s \cos\theta_j}}\]

ArcFace margin formula
ArcFace 的幾何邊界示意圖,直接在角度空間施加固定加法 margin m,幾何意義最為明確。

![Margin Comparison](https://cdn.jsdelivr.net/gh/pyshen-wilson/pyshen-wp-image@main/paper_survey/ArcFace_Additive_Angular_Margin_Loss_CVPR2019/06.jpg)
各類 Loss 的 Margin 幾何對比:
Softmax:無決策邊界 margin
SphereFace:乘法角度 margin,\theta 越小 margin 越小
CosFace:在 cosine space 上施加固定減法 margin(\cos\theta - m),幾何較不直覺
ArcFace:在測地線角度空間施加等距加法 margin(\cos(\theta + m)),幾何意義最清晰且全角度一致


延伸探討

Inversion of ArcFace:模型逆向人臉重建

論文中作者展示了一個有趣的應用:利用 ArcFace 分類模型進行人臉重建。

Inversion of ArcFace
Inversion of ArcFace 架構。利用已訓練好的分類器梯度與存儲在 Batch Normalization 中的均值和標準差先驗,逆向還原訓練集中的人臉特徵。
Inversion of ArcFace Implementation
實作流程:給定預訓練模型與目標類別後,輸入 random noise 圖像,透過反向傳播持續優化圖像,使特徵符合目標類別且中間各層的統計量逼近預訓練的 BN 參數。重複 T 次迭代後即可生成還原圖像。
  • 優點:直接重複利用既有的分類模型,免去額外訓練 GAN 的不穩定性與開銷。
  • 限制:受限於分類器的類別空間,只能生成模型已知類別的人臉。

心得

ArcFace 堪稱人臉識別領域最具里程碑意義的工作之一。它把 metric learning 提煉成一條非常優美且實作簡單的 loss 函數,在超球面上直接對角度動手腳,解決了 FaceNet 時代 triplet sampling 的痛點。後續許多 SOTA 人臉模型幾乎都以此為基石進行微調與演進。