Paper name
ArcFace: Additive Angular Margin Loss for Deep Face Recognition
Paper Reading Note
URL: https://arxiv.org/pdf/1801.07698.pdf
TL;DR
該篇文章出自CVPR2019,在SphereFace與CosFace的基礎上提出Additive Angular Margin Loss用於進一步增加提取特徵的類內緊湊性與類間區分度,在十個公開數據集上取得了SOTA效果。
Introduction
-
作者認爲近年來人臉識別最主要的工作都集中在loss函數的設計上
- center loss 通過在歐式空間中懲罰人臉特徵與他們對應的類別中心的距離來達到增加類內緊湊性
- SphereFace假設網絡最後一層的線性變換矩陣可以將特徵表示在一個超球面的特徵空間中,同時通過增加超球面上的角度margin來提升類間區分度。作者認爲angular softmax loss需要一系列的近似才能被計算,導致了網絡訓練過程的不穩定。爲了解決訓練不穩定SphereFace使用了結合標準softmax loss的hybrid loss形式,這可能使softmax loss主導了整個訓練過程,因爲基於整數相乘的angular margin使得目標logit曲線非常陡峭,從而阻礙了收斂
- CosFace直接使用cosine margin 來懲罰目標logit,在SphereFace的基礎上獲得了更佳的結果,同時支持了更簡單的訓練過程,而不需要使用標準softmax loss進行聯合優化
-
作者提出了Additive Angular Margin Loss (ArcFace) 來進一步提高人臉識別模型的判別能力,並且支持更穩定的訓練過程
Dataset/Algorithm/Model/Experiment Detail
實現方式
-
如下圖所示,在經過將fc層權重和輸出feature進行規範化處理後,兩者的點積就可以看做是深度卷積網絡輸出的人臉feature。作者使用了arc-consine 函數來計算輸出feature與目標權重的角度。然後作者在目標角度上增加了附加角邊距 (additive angular margin)。最後作者通過固定的特徵規範化將所有的logits進行重新縮放,剩下的步驟就與基於標準softmax loss的步驟一致。
-
ArcFace使用的loss 函數推導
- 原始softmax loss如下所示,原始softmax loss不直接優化特徵embedding來增加類內相似性與類間區分度。那麼在測試樣本具備較大的類內差異性(如姿態變化、年齡變化等)或者大規模測試場景下(如千萬級別測試集對類間差異性要求較高)表現不佳。
- 與SphereFace與CosFace類似,作者通過規範化fc層權重值,併爲了簡單表示將fc的偏移量設置爲0,同時將特徵進行規範化以及re-scale到s,則得到以下loss函數:
- 將fc輸出的特徵進行規範化操作可以使人臉識別預測結果僅僅依賴於特徵與權重之間的角度,所以能夠將人臉映射到超球面的特徵空間上
- 作者增加了一個額外角邊距(additive Angular margin)懲罰項用於進一步增加類內緊湊性與類間區分度,如下式所示:
- 原始softmax loss如下所示,原始softmax loss不直接優化特徵embedding來增加類內相似性與類間區分度。那麼在測試樣本具備較大的類內差異性(如姿態變化、年齡變化等)或者大規模測試場景下(如千萬級別測試集對類間差異性要求較高)表現不佳。
-
與之前人臉識別文章的套路一樣,作者也做了一個toy實驗用於對所提出的loss的能力進行可視化展示
-
與SphereFace和CosFace的比較
- 作者畫了圖片展示了三種方法在使用相應最佳的margin設置時的目標logit曲線,畫圖區間選取在20°到100°之間,這是因爲隨機初始化的角度一般90°,訓練收斂后角度值集中在30°左右,如下(a)所示。其中(b)圖中不僅分別畫了三種方式的logit曲線,同時還畫了結合三種方式的logit曲線:
- 結合三種方式的loss函數如下所示:
- 三種方式的幾何差異如下所示,SphereFace與CosFace都是一個非線性的角度margin,而ArcFace擁有一個線性的角度margin,這對於不同的角度能夠施加平等的約束:
- 其實三種方法加入這個m的作用機制都是加大分類的難度,從而來使模型學習到的feature具有更強的判別能力。只是與SphereFace與CosFace相比,作者認爲他們提出的加入m的方式對於人臉識別任務能夠有更佳的決策面
- 作者畫了圖片展示了三種方法在使用相應最佳的margin設置時的目標logit曲線,畫圖區間選取在20°到100°之間,這是因爲隨機初始化的角度一般90°,訓練收斂后角度值集中在30°左右,如下(a)所示。其中(b)圖中不僅分別畫了三種方式的logit曲線,同時還畫了結合三種方式的logit曲線:
實驗結果
作者的實驗做得十分豐富,在十個測試集上進行了驗證
-
實現細節
- 數據集使用了CASIA、VGGFace2、MS1MV2和DeepGlint-Face訓練模型
- 作者在多個驗證集上進行了測試,數據集信息如下所示
- 實驗設置:
- 基於檢測的五個人臉關鍵點進行人臉區域提取
- backbone使用了ResNet50和ResNet100
- 同時使用了BN-Dropout-FC-BN 的結構來提取512-D的人臉特徵
- batchsize設置爲512,四卡NVIDIA Tesla P40(24GB)的GPU進行訓練
- momentum設置爲0.9
- weight decay設置爲5e-4
- 測試階段使用去除fc的backbone用於提取512-D的特徵
-
LFW等數據集上的實驗結果,可以看到ArcFace能夠取得最佳的結果,值得注意的是作者提出的將SphereFace、CosFace和ArcFace相結合的方式(CM1、CM2)能夠取得很好的效果,但是並沒有趕上ArcFace的結果
-
與Triplet-loss的對比結果,有相似的類內緊湊性,但是類間區分度Triplet-loss更差
-
不同方法的實驗結果對比,取得了最優結果
-
MegaFace上的實驗結果對比
Thoughts
ArcFace在SphereFace與CosFace的基礎上改進了loss函數,改動不大,效果提升很明顯。這一系列的loss函數變化,以及該篇論文中將三種loss的設計思路進行結合的實驗,可以看出loss的設計確實是人臉識別任務中最重要的環節,感覺這篇文章應該是Angular softmax loss系列的尾聲了。