人臉識別-arcface損失函數


參考博客:

L-margin softmax loss:https://blog.csdn.net/u014380165/article/details/76864572

A-softmax loss:https://blog.csdn.net/u011808673/article/details/80491361

AM-softmax loss:https://blog.csdn.net/fire_light_/article/details/79602310

arcface:https://blog.csdn.net/Fire_Light_/article/details/79602705

softmax loss:

N是樣本的數量,i代表第i個樣本,j代表第j個類別,fyi代表着第i個樣本所屬的類別的分數

fyi是全連接層的輸出,代表着每一個類別的分數,

   每一個分數即為權重W和特征向量X的內積

每個樣本的softmax值即為:

 

L-softmax loss:

假設一個2分類問題,x屬於類別1,那么原來的softmax肯定是希望:

也就是屬於類別1的概率大於類別2的概率,這個式子和下式是等效的:

large margin softmax就是將上面不等式替換為:

m是正整數,cos函數在0到π范圍又是單調遞減的,所以cos(mx)要小於cos(x)。通過這種方式定義損失會逼得模型學到類間距離更大的,類內距離更小的特征。

從幾何的角度看兩種損失的差別:

設置為cos(mx)后,使得學習到的W參數更加的扁平,可以加大樣本的類間距離。

Large-Margin Softmax的實驗效果:

 

A-softmax loss

A-softmax loss簡單講就是在large margin softmax loss的基礎上添加了兩個限制條件||W||=1和b=0,使得預測僅取決於W和x之間的角度。

softmax的計算:

可以寫成

若引入兩個限制條件,

decision boundary變為,只取決於角度了

 

則損失函數變為:

在這兩個限制條件的基礎上,作者又添加了和large margin softmax loss一樣的角度參數,使得公式變為:

 

AM-softmax

在A-softmax的基礎上,修改Cos(mθ)為一個新函數: 

與ASoftmax中定的的類似,可以達到減小對應標簽項的概率,增大損失的效果,因此對同一類的聚合更有幫助

然后根據Normface,對f進行歸一化,乘上縮放系數s,最終的損失函數變為:

 

這樣做的好處在於A-Softmax的倍角計算是要通過倍角公式,反向傳播時不方便求導,而只減m反向傳播時導數不用變化

Asoftmax是用m乘以θ,而AMSoftmax是用cosθ減去m,這是兩者的最大不同之處:一個是角度距離,一個是余弦距離。

之所以選擇cosθ-m而不是cos(θ-m),這是因為我們從網絡中得到的是W和f的內積,如果要優化cos(θ-m)那么會涉及到arccos操作,計算量過大。 

arcface

 

分類正確label的值為,cos函數在(0,1)內是單調遞減的,加上m,會使該值變得更小,從而loss會變得很大。

 

這樣修改的原因:角度距離比余弦距離在對角度的影響更加直接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM