人臉識別損失函數疏理與分析

博客:博客園 | CSDN | bloghtml

寫在前面

Closed-set 和 Open-set 人臉識別的對好比下,git

Comparison-of-open-set-and-closed-set-face-recognition.png

兩張人臉圖像,分別提取特徵,經過計算特徵向量間的距離(類似度)來判斷它們是否來自同一我的。選擇與問題背景相契合的度量方式很重要,人臉識別中通常有兩種,歐氏距離餘弦距離(角度距離)github

訓練階段和測試階段採用的度量方式要一致,若是想在測試階段使用歐氏距離,天然在訓練階段就要基於歐氏距離來構造損失進行優化。網絡

實際上,不一樣度量方式間存在着必定的內在聯繫,app

  • 歐氏距離與向量的模和角度都有關,模固定,角度越大歐氏距離也越大,角度固定,模同比增大歐式距離也增大,模分別增大狀況會比較複雜;
  • 餘弦距離和角度距離有單調關係(負相關),但二者分佈的「密度」不一樣,觀察餘弦函數曲線可知,在角度從0向\(\pi\)勻速(線性)前進時,餘弦值在0和\(\pi\)附近緩慢變化,在\(\frac{\pi}{2}\)附近近似線性變化
  • 當向量模長歸一化後,歐氏距離和餘弦距離有單調關係,因此,在預測階段,歸一化後的特徵選取哪一種度量進行判別都可

可對不一樣損失函數按度量方式進行劃分,函數

  • 歐氏距離:Contrastive Loss,Triplet Loss,Center Loss……
  • 餘弦距離(角度距離):Large-Margin Softmax Loss,Angular-Softmax Loss,Large Margin Cosine Loss,Additive Angular Margin Loss……

先從最基本的Softmax Loss開始。學習

Cross-Entropy Loss (softmax loss)

交叉熵損失,也稱爲softmax損失,是深度學習中應用最普遍的損失函數之一。測試

\[\mathcal{L}_{\mathrm{s}}=-\frac{1}{N_b} \sum_{i=1}^{N_b} \log \frac{e^{W_{y_{i}}^{T} x_{i}+b_{y_{i}}}}{\sum_{j=1}^{n} e^{W_{j}^{T} x_{i}+b_{j}}} \]

其中,大數據

  • \(n\)個類別,\(N_b\)爲batch size
  • \(x_{i} \in \mathbb{R}^{d}\),第\(i\)個樣本的特徵,特徵有\(d\)維,屬於\(y_i\)
  • \(W \in \mathbb{R}^{d \times n}\)爲權重矩陣,\(W_j\)表示\(W\)的第\(j\)列,\(b_{j} \in \mathbb{R}^{n}\)爲bias

特徵\(x\)經全鏈接層的權重矩陣\(W\)獲得與類別數相同的\(n\)\((-\infty, +\infty)\)實數,相對越大的實數表明越像某一個類別,Softmax的做用是將\((-\infty, +\infty)\)\(n\)個實數經過指數映射到\((0, +\infty)\),而後歸一化,使和爲1,以得到某種機率解釋。優化

指數操做會將映射前的小差別指數放大,Softmax Loss但願label對應的項越大越好,但由於指數操做的存在,只須要映射前差別足夠大便可,並不須要使出「全力」。

在人臉識別中,可經過對人臉分類來驅動模型學習人臉的特徵表示。但該損失追求的是類別的可分性,並無顯式最優化類間和類內距離,這啓發了其餘損失函數的出現。

Contrastive Loss - CVPR2006

Contrastive Loss由LeCun在《Dimensionality Reduction by Learning an Invariant Mapping》CVPR2006中提出,起初是但願降維後的樣本保持原有距離關係,類似的仍類似,不類似的仍不類似,以下所示,

\[\begin{array}{c} L\left(W, Y, \vec{X}_{1}, \vec{X}_{2}\right)= (1-Y) \frac{1}{2}\left(D_{W}\right)^{2}+(Y) \frac{1}{2}\left\{\max \left(0, m-D_{W}\right)\right\}^{2} \end{array} \]

其中,\(\vec{X}_{1}\)\(\vec{X}_{2}\)爲樣本對,\(Y=\{0, 1\}\)指示樣本對是否類似,\(Y=0\)類似,\(Y=1\)不類似,\(D_W\)爲樣本對特徵間的歐氏距離,\(W\)爲待學習參數。至關於歐氏距離損失+Hinge損失

Graph-of-Contrastive-Loss.png

類內但願距離越小越好,類間但願越大越好(大於margin),這恰與人臉識別特徵學習的目的相一致。Contrastive Loss在DeepID2中得以使用,做爲Verification Loss,與Softmax Loss形式的Identification Loss構成聯合損失,以下所示,

\[\operatorname{Ident}\left(f, t, \theta_{i d}\right)=-\sum_{i=1}^{n}-p_{i} \log \hat{p}_{i}=-\log \hat{p}_{t} \\ \operatorname{Verif}\left(f_{i}, f_{j}, y_{i j}, \theta_{v e}\right)=\left\{\begin{array}{ll} \frac{1}{2}\left\|f_{i}-f_{j}\right\|_{2}^{2} & \text { if } y_{i j}=1 \\ \frac{1}{2} \max \left(0, m-\left\|f_{i}-f_{j}\right\|_{2}\right)^{2} & \text { if } y_{i j}=-1 \end{array}\right. \]

這種Softmax Loss + 其餘損失 構成的聯合損失比較常見,經過引入Softmax Loss可讓訓練更穩定,更容易收斂。

Triplet Loss - CVPR2015

Contrastive Loss的輸入是一對樣本。

Triplet Loss的輸入是3個樣本,1對正樣本(同一我的),1對負樣本(不一樣人),但願拉近正樣本間的距離,拉開負樣本間的距離。Triplet Loss出自《FaceNet: A Unified Embedding for Face Recognition and Clustering》

triplet-loss.png

損失函數以下,

\[\mathcal{L}_t = \sum_{i}^{N}\left[\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{p}\right)\right\|_{2}^{2}-\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{n}\right)\right\|_{2}^{2}+\alpha\right]_{+} \]

該損失但願在拉近正樣本、拉開負樣本的同時,有一個margin,

\[\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{p}\right)\right\|_{2}^{2}+\alpha<\left\|f\left(x_{i}^{a}\right)-f\left(x_{i}^{n}\right)\right\|_{2}^{2} \]

Softmax Loss最後的全鏈接層參數量與人數成正比,在大規模數據集上,對顯存提出了挑戰。

Contrastive Loss和Triplet Loss的輸入爲pair和triplet,方便在大數據集上訓練,但pair和triplet挑選有難度,訓練不穩定難收斂,可與Softmax Loss搭配使用,或構成聯合損失,或一前一後,用Softmax Loss先「熱身」。

Center Loss - ECCV2016

由於人臉表情和角度的變化,同一我的的類內距離甚至可能大於不一樣人的類間距離。Center Loss的出發點在於,不只但願類間可分,還但願類內緊湊,前者經過Softmax loss實現,後者經過Center Loss實現,以下所示,爲每一個類別分配一個可學習的類中心,計算每一個樣本到各自類中心的距離,距離之和越小表示類內越緊湊。

\[\mathcal{L}_{c e}=\frac{1}{2} \sum_{i=1}^{N}\left\|x_{i}-c_{y_{i}}\right\|_{2}^{2} \]

聯合損失以下,經過超參數\(\lambda\)來平衡兩個損失,並給兩個損失分配不一樣的學習率,

\[\begin{aligned} L_{c} &=L_{s}+\lambda L_{c e} \\ &=-\sum_{i=1}^{N_{b}} \log \frac{e^{W_{y_{i}}^{T} x_{i}+b_{y_{i}}}}{\sum_{j=1}^{n} e^{W_{j}^{T} x_{i}+b_{j}}}+\frac{\lambda}{2} \sum_{i=1}^{N_b}\left\|x_{i}-c_{y_{i}}\right\|_{2}^{2} \end{aligned} \]

center-loss-algorithm.png

但願達成的效果以下,

center-loss-distribution-of-features.png

以上損失在歐氏距離上優化,下面介紹在餘弦距離上優化的損失函數。

L-Softmax Loss - ICML2016

L-Softmax 即 large-margin softmax,出自《Large-Margin Softmax Loss for Convolutional Neural Networks》

若忽略bias,FC+softmax+cross entropy可寫成以下形式,

\[L_{i}=-\log \left(\frac{e^{\left\|\boldsymbol{W}_{y_{i}}\right\|\left\|\boldsymbol{x}_{i}\right\| \cos \left(\theta_{y_{i}}\right)}}{\sum_{j} e^{\left\|\boldsymbol{W}_{j}\right\|\left\|\boldsymbol{x}_{i}\right\| \cos \left(\theta_{j}\right)}}\right) \]

可將\(\boldsymbol{W}_{j}\)視爲第\(j\)類的類中心向量,對\(x_i\),但願\(\left\|\boldsymbol{W}_{y_{i}}\right\|\left\|\boldsymbol{x}_{i}\right\| \cos \left(\theta_{y_{i}}\right)\)相比\(\left\|\boldsymbol{W}_{j}\right\|\left\|\boldsymbol{x}_{i}\right\| \cos \left(\theta_{j}\right), j \neq y_i\)越大越好,有兩個影響因素,

  • \(\boldsymbol{W}\)每一列的模
  • \(\boldsymbol{x}_i\)\(\boldsymbol{W}_j\)的夾角

L-Softmax主要關注在第2個因素 夾角上,相比Softmax,但願\(\boldsymbol{x}_i\)\(\boldsymbol{W}_{y_i}\)靠得更近,因而對\(\cos \left(\theta_{y_{i}}\right)\)施加了更強的約束,對角度\(\theta_{y_i}\)乘上個因子\(m\)若是想得到與Softmax相同的內積值,須要\(\theta_{y_i}\)更小

\[L_{i}=-\log \left(\frac{e^{\left\|\boldsymbol{W}_{y_{i}}\right\|\left\|\boldsymbol{x}_{i}\right\| \psi\left(\theta_{y_{i}}\right)}}{e^{\left\|\boldsymbol{W}_{y_{i}}\right\|\left\|\boldsymbol{x}_{i}\right\| \psi\left(\theta_{y_{i}}\right)}+\sum_{j \neq y_{i}} e^{\left\|\boldsymbol{W}_{j}\right\|\left\|\boldsymbol{x}_{i}\right\| \cos \left(\theta_{j}\right)}}\right) \]

爲此,須要構造\(\psi(\theta)\),需知足以下條件

  • \(\psi(\theta) < cos(\theta)\)
  • 單調遞減

文中構造的\(\psi(\theta)\)以下,經過\(m\)調整margin大小

\[\psi(\theta)=(-1)^{k} \cos (m \theta)-2 k, \quad \theta \in\left[\frac{k \pi}{m}, \frac{(k+1) \pi}{m}\right], k \in [0, m-1] \]

\(m=2\)時,以下所示,

L-Softmax-phi.png

二分類狀況下,結合解釋以下,

L-Softmax-Geometric-Interpretation.png

爲了梯度計算和反向傳播,將\(\cos(\theta)\)替換爲僅包含\(W\)\(w_i\)的表達式\(\frac{\boldsymbol{W}_{j}^{T} \boldsymbol{x}_{i}}{\left\|\boldsymbol{W}_{j}\right\|\left\|\boldsymbol{x}_{i}\right\|}\),經過倍角公式計算\(\cos(m \theta)\)

\[\begin{aligned} \cos \left(m \theta_{y_{i}}\right) &=C_{m}^{0} \cos ^{m}\left(\theta_{y_{i}}\right)-C_{m}^{2} \cos ^{m-2}\left(\theta_{y_{i}}\right)\left(1-\cos ^{2}\left(\theta_{y_{i}}\right)\right) \\ &+C_{m}^{4} \cos ^{m-4}\left(\theta_{y_{i}}\right)\left(1-\cos ^{2}\left(\theta_{y_{i}}\right)\right)^{2}+\cdots \\ &(-1)^{n} C_{m}^{2 n} \cos ^{m-2 n}\left(\theta_{y_{i}}\right)\left(1-\cos ^{2}\left(\theta_{y_{i}}\right)\right)^{n}+\cdots \end{aligned} \]

同時,爲了便於訓練,定義超參數\(\lambda\),將\(\left\|\boldsymbol{W}_{y_{i}}\right\|\left\|\boldsymbol{x}_{i}\right\| \psi\left(\theta_{y_{i}}\right)\)替換爲\(f_{y_i}\)

\[f_{y_{i}}=\frac{\lambda\left\|\boldsymbol{W}_{y_{i}}\right\|\left\|\boldsymbol{x}_{i}\right\| \cos \left(\theta_{y_{i}}\right)+\left\|\boldsymbol{W}_{y_{i}}\right\|\left\|\boldsymbol{x}_{i}\right\| \psi\left(\theta_{y_{i}}\right)}{1+\lambda} \]

訓練時,從較大的\(\lambda\)開始,而後逐漸減少,近似於用Softmax「熱身」。

A-Softmax Loss - CVPR2017

A-Softmax即Angular-Softmax,出自《SphereFace: Deep Hypersphere Embedding for Face Recognition》

L-Softmax中,在對\(x_i\)歸類時,會同時考慮類中心向量的模夾角

A-Softmax的最大差別在於對每一個類中心向量進行歸一化,即令\(||W_j|| = 1\),同時令bias爲0,在分類時只考慮\(x_i\)\(W_j\)的夾角,並引入和L-Softmax相同的margin,以下所示,

\[\mathcal{L}_{\mathrm{AS}}=-\frac{1}{N} \sum_{i=1}^{N} \log \left(\frac{e^{\left\|\boldsymbol{x}_{i}\right\| \psi\left(\theta_{y_{i}, i}\right)}}{e^{\left\|\boldsymbol{x}_{i}\right\| \psi\left(\theta_{y_{i}, i}\right)}+\sum_{j \neq y_{i}} e^{\left\|\boldsymbol{x}_{i}\right\| \cos \left(\theta_{j, i}\right)}}\right) \\ \psi(\theta_{y_i, i})=(-1)^{k} \cos (m \theta_{y_i, i})-2 k, \quad \theta_{y_i, i} \in\left[\frac{k \pi}{m}, \frac{(k+1) \pi}{m}\right], k \in [0, m-1] \]

\(m=1\)時,即不引入margin時,稱之爲 modified softmax loss

Softmax Loss、Modified Softmax Loss和A-Softmax Loss,三者的決策面以下,

A-Softmax-decision-boundaries.png

可視化以下,

A-Softmax-Geometry-Interpretation.png

AM-Softmax Loss-CVPR2018

AM-Softmax即Additive Margin Softmax,出自論文《Additive Margin Softmax for Face Verification》,同CosFace 《CosFace: Large Margin Cosine Loss for Deep Face Recognition》,CosFace中損失名爲LMCL(Large Margin Cosine Loss)。

與A-Softmax相比,有2點變化,

  • \(x_i\)也作歸一化,同時保留對\(W\)每一列的歸一化以及bias爲0
  • \(\cos(m \theta)\)變成\(s \cdot (\cos \theta - m)\)

\[\mathcal{L}_{\mathrm{AM}}=-\frac{1}{N} \sum_{i=1}^{N} \log \frac{e^{s \cdot\left(\cos \theta_{y_{i}}-m\right)}}{e^{s \cdot\left(\cos \theta_{y_{i}}-m\right)}+\sum_{j=1, j \neq y_{i}}^{c} e^{s \cdot \cos \theta_{j}}} \]

相比Softmax,但願得到更大的類間距離和更小類內距離,若是採用的是餘弦距離,意味着,要想得到與Softmax相同的\(y_i\)對應的份量,須要更小的夾角\(\theta\),爲此須要構建\(\psi(\theta)\),如前所述,須要

  • \(\psi(\theta) < cos(\theta)\)
  • 單調遞減

前面構建的\(\psi(\theta)\),始於\(\cos(m \theta)\)\(m\)\(\theta\)是乘的關係,這裏令\(\varphi(\theta)= s(\cos (\theta)-m)\)

  • \(\cos(\theta) - m\)\(m\)變乘法爲加法,\(\cos(m\theta)\)將margin做用在角度上,\(\cos(\theta) - m\)直接做用在餘弦距離上,前者的問題在於對類中心向量夾角較小的狀況懲罰較小,夾角小則margin會相對更小,同時計算複雜,後者能夠當作是Hard Margin Softmax,但願在保證類間「硬」間距的狀況下學習特徵映射。

    Additive-Margin.png

  • \(s\):將\(x_i\)也歸一化後,至關於將特徵嵌入到單位超球上,表徵空間有限,特徵和權重歸一化後\(\mid \boldsymbol{W}_{j}\|\| \boldsymbol{x}_{i} \| \cos \left(\theta_{ij}\right)=cos(\theta_{ij})\)的值域爲\([-1, 1]\),即\(x_i\)到每一個類中心向量的餘弦距離,最大爲1,最小爲-1,Softmax 指數歸一化前,各種的份量差別太小,因此要乘個因子\(s\),將特徵映射到半徑爲\(s\)的超球上,放大表徵空間,拉開各份量的差距。

AM-Softmax-visualization.png

ArcFace Loss - CVPR2019

ArcFace Loss 即 Additive Angular Margin Loss,出自《ArcFace: Additive Angular Margin Loss for Deep Face Recognition》

AM-Softmax Loss將margin做用在餘弦距離上,與之不一樣的是,ArcFace將margin做用在角度上,其損失函數以下,

\[\mathcal{L}_{\mathrm{AF}}=-\frac{1}{N} \sum_{i=1}^{N} \log \frac{e^{s \cdot\left(\cos \left(\theta_{y_{i}}+m\right)\right)}}{e^{s \cdot\left(\cos \left(\theta_{y_{i}}+m\right)\right)}+\sum_{j=1, j \neq y_{i}}^{n} e^{s \cdot \cos \theta_{j}}} \]

ArcFace.png

把margin是加在餘弦距離(CosFace)仍是加在角度(ArcFace)上,在《Additive Margin Softmax for Face Verification》中有這樣一段分析,

Angular-Margin-or-Cosine-Margin.png

ArcFace中並無求取arccos,因此計算並不複雜,而是把margin加在了角度上,但優化的還是餘弦距離。

還有一點須要注意的是,不管margin是加在餘弦距離上仍是加在角度上,單純看示意圖,很容易看出減小了類內距離,那類間距離增長呢?

文中,給出了類內距離和類間距離的數學描述,以下:

\[L_{Intra}=\frac{1}{\pi N} \sum_{i=1}^{N} \theta_{y_{i}} \\ L_{Inter}=-\frac{1}{\pi N(n-1)} \sum_{i=1}^{N} \sum_{j=1, j \neq y_{i}}^{n} \arccos \left(W_{y_{i}}^{T} W_{j}\right) \]

\(W\)是待學習的參數,特徵\(x_i\)也是經過前面層的權重學習獲得,在訓練過程當中\(x_i\)\(W\)都會發生變化,都會被梯度驅使着向Loss減少的方向移動。margin的引入有意壓低了類標籤對應份量的值,去儘可能「壓榨」模型的潛力,在softmax中本來能夠收斂的位置還須要繼續降低,降低能夠經過提升類標籤對應份量的值,也能夠經過下降其餘份量的值。因此,\(x_i\)在向\(W_{y_i}\)靠近的同時,\(W_j, j\neq y_i\)也可能在向遠離\(x_i\)的方向移動,最終達成的效果就多是\(x_i\)儘量地靠近\(W_{y_i}\),而\(W_j, j\neq y_i\)遠離了\(W_{y_i}\)

歐氏距離or角度距離與歸一化

這裏,再討論下爲何對\(W\)\(x\)的模進行歸一化,主觀思考偏多,未經驗證。

在文章爲何要作特徵歸一化/標準化?中,咱們提到,

歸一化/標準化的目的是爲了得到某種「無關性」——偏置無關、尺度無關、長度無關……當歸一化/標準化方法背後的物理意義和幾何含義與當前問題的須要相契合時,其對解決該問題就有正向做用,反之,就會起副作用。

特徵\(x\)\(W\)每一個類中心向量內積的結果,取決於\(x\)的模、\(W_j\)的模以及它們的夾角,模的大小和夾角的大小都將影響內積結果的大小。

  • \(W_j\)歸一化:若是訓練集存在較嚴重的類別不均衡,網絡將傾向於把輸入圖像劃分到圖片數量多的類別,這種傾向將反映在類中心向量的模上,即圖片數量多的類別其類中心向量的模將偏大,這一點論文One-shot Face Recognition by Promoting Underrepresented Classes中有實驗驗證。因此,\(W_j\)的模歸一化至關於強迫網絡同等看待每個類別,至關於把同等看待每個人的先驗作進網絡,來緩解類別不均衡問題。

  • \(x\)歸一化:對某一個具體的\(x_i\),其與每一個類中心的內積 爲 \(x_i \cdot W_j = |x_i||W_j|\cos \theta_{ij} = |x_i|\cos \theta_{ij}\),由於每一個類別的內積結果都含\(x_i\)的模,\(x_i\)的模是否歸一化彷佛並不影響內積結果間的大小關係,但會影響損失的大小,好比內積結果分別爲\([4,1,1,1]\),模同時放大1倍,變成\([8,2,2,2]\),通過Softmax的指數歸一化後,後者的損失更小。在卷積神經網絡之卷積計算、做用與思想中,咱們知道模式蘊含在卷積核的權重當中,特徵表明着與某種模式的類似程度,越類似響應越大。什麼樣的輸入圖像容易獲得模小的特徵,首先是數值尺度較小的輸入圖像,這點能夠經過對輸入圖像作歸一化解決(若是輸入圖像的歸一化不夠,對特徵進行歸一化可能能夠緩解這個問題),而後是那些模糊的、大角度的、有遮擋的人臉圖像其特徵的模會較小,這些圖在訓練集中至關於困難樣本,若是他們的數量很少,就可能會被簡單樣本淹沒掉。從這個角度看,對\(x\)進行歸一化,可能可讓網絡相對更關注到這些困難樣本,去找到更細節的特徵,專一在角度上進行判別,進一步壓榨網絡的潛能。有點Focal Loss思想的感受。

網絡會利用它可能利用上的一切手段來下降損失,有些手段可能並非你所指望的,此時,經過融入先驗、添加正則等方式抑制那些你不但願網絡採起的手段,修正網絡進化的方式,以此讓網絡朝着你指望的方向成長。

以上。

參考

相關文章
相關標籤/搜索