- 論文名稱 --- ArcFace: Additive Angular Margin Loss for Deep Face Recognition
- 論文連結 --- https://arxiv.org/abs/1801.07698
- 論文出處 --- CVPR 2019
當前挑戰
Triplet 的數量太多
人臉識別 (Face Recognition) 主要有兩種實作方向:
- 訓練一個 multi-class classifier,把FR當作分類任務,常見的loss function為softmax loss
- 訓練一個model去抽取圖片的embedding,做clustering的任務,常見的loss function為triplet loss
- 此方法為closed-set classification problem → 有新的分類對象加入,就必須重新訓練分類器!
- 分類器的參數量會隨著類別數量而線性增長。
- 在大訓練集下,triplet的數量會爆炸性的增長!
- 這使尋找semi-hard sample與hard sample的時間大幅增加,拖慢了訓練速度。
小筆記
2015年FaceNet的成功,證實了triplet loss在FR的任務上有更傑出的表現,過量的triplet卻造成了訓練上的負擔。
若有\(N\)個類別,每類有\(K\)個samples,這樣將有\(C^N_1C^K_2C^{N-1}_1C^K_1\)\(=N\cdot \frac{K(K-1)}{2}\cdot (N-1) \cdot K\)個triplets,相當於是\(O(K^3N^2)\)的龐大複雜度
若有\(N\)個類別,每類有\(K\)個samples,這樣將有\(C^N_1C^K_2C^{N-1}_1C^K_1\)\(=N\cdot \frac{K(K-1)}{2}\cdot (N-1) \cdot K\)個triplets,相當於是\(O(K^3N^2)\)的龐大複雜度
Margin不夠大

在做分群問題時會遇到的問題之一: 在歐式空間,intra-class distance可能比inter-class distance還大。如G1到G2的距離比G1到B1還大。

在這之前,SphereFace曾提出了A-Softmax loss的想法,使用角度來做為分群的依據,試圖改善這個痛點。

然而因為margin是做在cosine space上的,當\(\theta\)不大時,margin的效果就會不明顯。
主要貢獻
解決: Triplet 的數量太多

ArcFace使用同類別sample的中心替代實際上的sample,這樣就能大幅減少triplet的數目了。為了避免noise sample影響到整體中心的代表性,每個類別下都還會有\(K\)個sub-centers。於是,最終使用triplet是離anchor最近的positive sub-center以及negative sub-center。
解決: Margin不夠大

ArcFace將margin直接加在\(\theta\)上

- Softmax: 沒有margin
- SphereFace: \(\theta\)越小,margin越小
- CosFace: 在cosine space上margin固定,但較不直覺
- ArcFace: 有固定的margin
延伸探討

論文中作者提出了一個有趣的應用,稱作「Inversion of ArcFace 」。他們使用的是ArcFace 損失的梯度以及面部統計先驗(例如存儲在batch normalization layer中的mean和standard deviation)

實作細節如上圖,給定pre-trained model與類別後,先將random noise放進模型並計算loss。接著,持續優化使得新的BN的參數可以接近pre-trained的BN參數。重複\(T\)次之後,便可以以反向傳播來求得想生成的圖片。
- 優點: 重覆再利用原本的分類模型,相較GAN來說也比較好訓練。
- 缺點: 只能生成現有類別的圖片。