淺談人臉識別中的loss 損失函數
在人臉識別中,算法的提高主要體現在損失函數的設計上,損失函數會對整個網絡的優化有着導向性的作用。我們看到許多常用的損失函數,從傳統的softmax loss到cosface, arcface 都有這一定的提高,這篇文章自己就來整理下這幾個算法。
無論是SphereFace、CosineFace還是ArcFace的損失函數,都是基於Softmax loss來進行修改的。
Base line | Softmax loss |
各種延伸的算法 | Triplet loss, center loss |
最新算法 | A-Softmax Loss(SphereFace), Cosine Margin Loss, Angular Margin Loss, Arcface |
1. Softmax loss
這就是softmax loss函數,表示全連接層的輸出。在計算Loss下降的過程中,我們讓
的比重變大,從而使得log() 括號內的數更變大來更接近1,就會 log(1) = 0,整個loss就會下降。
這種方式只考慮了能否正確分類,卻沒有考慮類間距離。所以提出了center loss 損失函數。(paper)
2. Center loss
center loss 考慮到不僅僅是分類要對,而且要求類間有一定的距離。上面的公式中表示某一類的中心,
表示每個人臉的特征值。作者在softmax loss的基礎上加入了
,同時使用參數
來控制類內距離,整體的損失函數如下:
3. Triplet Loss
三元組損失函數,三元組由Anchor, Negative, Positive這三個組成。從上圖可以看到,一開始Anchor離Positive比較遠,我們想讓Anchor和Positive盡量的靠近(同類距離),Anchor和Negative盡量的遠離(類間距離)。
表達式左邊為同類距離 ,右邊為不同的類之間的距離。使用梯度下降法優化的過程就是讓類內距離不斷下降,類間距離不斷提升,這樣損失函數才能不斷地縮小。
上面的幾個算法都是比較傳統老舊的,下面說一下比較新的算法。
4. L-softmax
前面Softmax loss函數沒有考慮類間距離,Center loss函數可以使類內變得緊湊,但沒有類間可分,而Triplet loss函數比較耗時,就產生了一下新的算法。
L-softmax函數開始就做了比較精細的改動,從softmax 函數log里面的轉化到
。L-softmax函數不僅希望類間距離拉的更大,還能夠把類內距離壓縮的更緊湊。
把其中的cosθ改成了cos(mθ),
m倍θ起到了增加 margin 的效果,讓類內距離更加緊湊,同時類間距離變大。m越大類間距離就越大,因為在(0, π)區間cos函數單調遞減,m越大 cos(mθ)趨向於0。
5. SphereFace(A-Softmax)
A-softmax 是在 L-softmax 函數上做了一個很小的修改,A-softmax 在考慮 margin時添加兩個限制條件:將權重W歸一化 ,b = 0。這使得模型的預測僅取決於 W 和 X 之間的角度。
6. CosFace
cosface的loss函數如下:
上式中,s為超球面的半徑,m為margin。
7. ArcFace
對比arcface和cosface這兩個函數,發現arcface是直接在角度空間中最大化分類界限,而cosface是在余弦空間中最大化分類界限,這樣修改是因為角度距離比余弦距離在對角度的影響更加直接。
分類的決策邊界如下:
arcface算法流程如下: