當前挑戰
人臉辨識(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 上的優異表現,但若資料庫有個類別、每類
張照片,理論上的 triplet 組合數為:
面對百萬級人臉資料集,這種採樣複雜度極其沉重。
特徵邊界 Margin 不夠大且幾何意涵不直覺
在歐氏空間中做特徵分群時,常會遇到 intra-class distance(同類距離)反而大於 inter-class distance(異類距離)的情況。

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


較小時,邊界的區隔效果會大幅減弱;CosFace 雖改為固定減法 margin,但在幾何角度上的意涵依然較不直覺。主要貢獻
ArcFace (Additive Angular Margin Loss) 在超球面座標系上給出了一個極為乾淨且直覺的解法:直接在角度空間加上固定的加法 margin
。
解決: 傳統分類與分群方法的本質限制
ArcFace 採用權重中心向量
代表每個類別的特徵中心,大幅縮減了樣本對樣本比對的計算量。

個 sub-centers,選取距離最近的 sub-center 計算 loss。解決: 特徵邊界 Margin 不夠大且幾何意涵不直覺
ArcFace 將特徵與權重向量進行
正則化,使內積純粹等於夾角餘弦
。接著直接在角度
上加上加法邊界
:
![Rendered by QuickLaTeX.com \[\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}}\]](https://pyshen.net/wp-content/ql-cache/quicklatex.com-1932ac322bb71f4163cb914b57574d32_l3.png)

,幾何意義最為明確。
各類 Loss 的 Margin 幾何對比:
– Softmax:無決策邊界 margin
– SphereFace:乘法角度 margin,
越小 margin 越小
– CosFace:在 cosine space 上施加固定減法 margin(
),幾何較不直覺
– ArcFace:在測地線角度空間施加等距加法 margin(
),幾何意義最清晰且全角度一致
延伸探討
Inversion of ArcFace:模型逆向人臉重建
論文中作者展示了一個有趣的應用:利用 ArcFace 分類模型進行人臉重建。


次迭代後即可生成還原圖像。- 優點:直接重複利用既有的分類模型,免去額外訓練 GAN 的不穩定性與開銷。
- 限制:受限於分類器的類別空間,只能生成模型已知類別的人臉。
心得
ArcFace 堪稱人臉識別領域最具里程碑意義的工作之一。它把 metric learning 提煉成一條非常優美且實作簡單的 loss 函數,在超球面上直接對角度動手腳,解決了 FaceNet 時代 triplet sampling 的痛點。後續許多 SOTA 人臉模型幾乎都以此為基石進行微調與演進。