Paper Note: CVPR 2019 ArcFace

當前挑戰

Triplet 的數量太多

人臉識別 (Face Recognition) 主要有兩種實作方向:
  1. 訓練一個 multi-class classifier,把FR當作分類任務,常見的loss function為softmax loss
  2. 訓練一個model去抽取圖片的embedding,做clustering的任務,常見的loss function為triplet loss
這兩個作法其實都存在缺點,對於softmax loss方法:
  1. 此方法為closed-set classification problem → 有新的分類對象加入,就必須重新訓練分類器!
  2. 分類器的參數量會隨著類別數量而線性增長。
而對於triplet loss方法:
  1. 在大訓練集下,triplet的數量會爆炸性的增長!
  2. 這使尋找semi-hard sample與hard sample的時間大幅增加,拖慢了訓練速度。

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\)上

延伸探討

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

實作細節如上圖,給定pre-trained model與類別後,先將random noise放進模型並計算loss。接著,持續優化使得新的BN的參數可以接近pre-trained的BN參數。重複\(T\)次之後,便可以以反向傳播來求得想生成的圖片。

  • 優點: 重覆再利用原本的分類模型,相較GAN來說也比較好訓練。
  • 缺點: 只能生成現有類別的圖片。
×

目錄