目錄html
人臉識別系統一般由如下構建模塊組成:git
人臉識別相關方法的發展以下圖所示:github
對於基於 CNN 的人臉識別方法,影響準確度的因素主要有三個:訓練數據、CNN 架構和損失函數。算法
由於在大多數深度學習應用中,都須要大訓練集來防止過擬合。通常而言,爲分類任務訓練的 CNN 的準確度會隨每類的樣本數量的增加而提高。這是由於當類內差別更多時,CNN 模型可以學習到更穩健的特徵。可是,對於人臉識別,咱們感興趣的是提取出可以泛化到訓練集中不曾出現過的主體上的特徵。所以,用於人臉識別的數據集還須要包含大量主體,這樣模型也能學習到更多類間差別。網絡
人臉識別實驗中經常使用到close-set和open-set:架構
在光照較差,遮擋,形變(大笑),側臉等諸多條件下,神經網絡很難提取出與「標準臉」類似的特徵,異常臉在特徵空間裏落到錯誤的位置,致使識別和驗證失敗。這是現代人臉識別系統的侷限,必定程度上也是深度學習(深度神經網絡)的侷限。ide
面對這種侷限,一般採起三種應對措施,令人臉識別系統能正常運做:函數
1. 工程角度:研發質量模型,對檢測到人臉質量進行評價,質量較差則不識別/檢驗。post
2. 應用角度:施加場景限制,好比刷臉解鎖,人臉閘機,會場簽到時,都要求用戶在良好的光照條件下正對攝像頭,以免採集到質量差的圖片。性能
3. 算法角度:提高人臉識別模型性能,在訓練數據裏添加更多複雜場景和質量的照片,以加強模型的抗干擾能力。
DeepID1並不屬於contrastive loss系列,只是做爲DeepID系列的開山之做而放在這裏。
DeepID1:《Deep Learning Face Representation from Predicting 10,000 Classes》
DeepID2:《Deep learning face representation by joint identification-verification》
DeepID2+:《Deeply learned face representations are sparse, selective, and robust》
DeepID3:《Deepid3: Face recognition with very deep neural networks》
\[ \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. \]
DeepID1:
DeepID2:
DeepID2+:
DeepID3:
《Facenet: A unified embedding for face recognition and clustering》
\[ \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] \]
《A Discriminative Feature Learning Approach for Deep Face Recognition》
\[ \begin{aligned} \mathcal{L} &=\mathcal{L}_{S}+\lambda \mathcal{L}_{C} \\ &=-\sum_{i=1}^{m} \log \frac{e^{W_{y_{i}}^{T} \boldsymbol{x}_{i}+b_{y_{i}}}}{\sum_{j=1}^{n} e^{W_{j}^{T} \boldsymbol{x}_{i}+b_{j}}}+\frac{\lambda}{2} \sum_{i=1}^{m}\left\|\boldsymbol{x}_{i}-\boldsymbol{c}_{y_{i}}\right\|_{2}^{2} \end{aligned} \]
\(c_{y_i}\)表明樣本\(i\)對應類別\(y_i\)所屬的類中心。理想狀況下,這個類中心在每次迭代時都須要利用整個數據集的特徵來更新,可是這會須要巨大的計算量。所以,在實際使用中,作了以下修改:
雖然center loss取得了良好的結果,可是也有一些不足之處。Center Loss考慮到了使得類內緊湊,卻不能使類間可分;另外訓練樣本對的選擇也較爲麻煩。在論文中,做者也提到了,選取合適的樣本對對於模型的性能相當重要,論文中採用的方法是每次選擇比較難以分類的樣本對從新訓練,相似於hard-mining。同時,合適的訓練樣本還能夠加快收斂速度。
《Deep face recognition with center invariant loss》
\[ \begin{aligned} L=& L_{s}+\gamma L_{I}+\lambda L_{c} \\=&-\log \left(\frac{e^{\mathbf{w}_{y}^{T} \mathbf{x}_{i}+b_{y}}}{\sum_{j=1}^{m} e^{\mathbf{w}_{j}^{T} \mathbf{x}_{i}+b_{j}}}\right)+\frac{\gamma}{4}\left(\left\|\mathbf{c}_{y}\right\|_{2}^{2}-\frac{1}{m} \sum_{k=1}^{m}\left\|\mathbf{c}_{k}\right\|_{2}^{2}\right)^{2} \\ &+\frac{\lambda}{2}\left\|\mathbf{x}_{i}-\mathbf{c}_{y}\right\|^{2} \end{aligned} \]
《Range loss for deep face recognition with long-tail》
\[ \mathcal{L}_{R}=\alpha \mathcal{L}_{R_{i n t r a}}+\beta \mathcal{L}_{R_{i n t e r}} \]
\[ \mathcal{L}_{R_{i n t r a}}=\sum_{i \subseteq I} \mathcal{L}_{R_{i n t r a}}^{i}=\sum_{i \subseteq I} \frac{k}{\sum_{j=1}^{k} \frac{1}{\mathcal{D}_{j}}} \]
\[ \begin{aligned} \mathcal{L}_{R_{\text { inter }}} &=\max \left(m-\mathcal{D}_{\text {Center}}, 0\right) \\ &=\max \left(m-\left\|\overline{x}_{Q}-\overline{x}_{\mathcal{R}}\right\|_{2}^{2}, 0\right) \end{aligned} \]
\[ \mathcal{L}=\mathcal{L}_{M}+\lambda \mathcal{L}_{R}=-\sum_{i=1}^{M} \log \frac{e^{W_{y_{i}}^{T} x_{i}+b_{v_{i}}}}{\sum_{j=1}^{n} e^{W_{j}^{T} x_{i}+b_{j}}}+\lambda \mathcal{L}_{R} \]
基於歐式距離的Metric Learning符合人的認知規律,在實際應用中也取得了不錯的效果,可是它有很是致命的兩個問題:
\[ L=\frac{1}{N} \sum_{i} L_{i}=\frac{1}{N} \sum_{i}-\log \left(\frac{e^{f_{y_{i}}}}{\sum_{j} e^{f_{j}}}\right) \]
\[ L_{i}=-\log \left(\frac{e^{\left\|\mathbf{W}_{y_{i}}\right\|\left\|\mathbf{x}_{i}\right\| \cos \left(\theta_{y_{i}}\right)}}{\sum_{j} e^{\left\|\mathbf{W}_{j}\right\|\left\|\mathbf{x}_{\mathbf{i}}\right\| \cos \left(\theta_{j}\right)})}\right) \]
這裏的W能夠理解爲一組基向量,每個維度對應一個類別。\(W_iX_i\)即將數據\(X_i\)映射到類別\(i\)對應的維度上,\(X_i\)與基向量\(W_i\)的夾角越小,則數據\(X_i\)屬於類別\(i\)的機率越大。所以,對於一個二分類問題而言,只要\(X_i\)與其中一個基向量\(W_i\)的夾角小於45°,則\(X_i\)即被分類爲類別\(i\)。
從上述分析能夠看出,基於Softmax的分類只要求可以獲得正確的分類結果,可是這種形式並不可以有效地學習獲得使得類內較爲緊湊、類間較離散的特徵。
《Large-margin softmax loss for convolutional neural networks》
\[ L_{i}=-\log \left(\frac{e^{\left\|\mathbf{W}_{y_{i}}\right\|\left\|\mathbf{x}_{i}\right\| \psi\left(\theta_{y_{i}}\right)}}{\left\|\mathbf{W}_{y_{i}}\right\|\left\|\mathbf{x}_{i}\right\| \psi\left(\theta_{y_{i}}\right)+\sum_{j \neq y_{i}} e^{\left\|\mathbf{W}_{j}\right\|\left\|\mathbf{x}_{i}\right\| \cos \left(\theta_{j}\right)})}\right) \]
其中,\(\psi(\theta)\)能夠表示爲:
\[ \psi(\theta)=\left\{\begin{array}{l}{\cos (m \theta), 0 \leq \theta \leq \frac{\pi}{m}} \\ {\mathcal{D}(\theta), \frac{\pi}{m}<\theta \leq \pi}\end{array}\right. \]
公式中的\(\mathcal{D}(\theta)\)必須是一個單調減函數,且\(\mathcal{D}\left(\frac{\pi}{m}\right)=\cos \left(\frac{\pi}{m}\right)\), 以保證 \(\psi(\theta)\)是一個連續函數。
爲了簡化前向和後向傳播的計算,做者構建了一種等價的函數形式 \(\psi(\theta)\):
\[ \psi(\theta)=(-1)^{k} \cos (m \theta)-2 k, \theta \in\left[\frac{k \pi}{m}, \frac{(k+1) \pi}{m}\right] \]
Large-Margin Softmax Loss是Softmax Loss引入margin思想的改進版本。即要是數據\(X_i\)不只可以正確分類,並且與正確類別對應基向量的夾角要大於不一樣類別基向量的夾角必定的margin角度。所以在學習同類樣本時,加強了同類學習的難度,這個難度要比不一樣類的難度要大些。這樣的區別對待使得特徵的可區分性加強。
爲了簡單明瞭地代表L-Softmax Loss的有效性,做者討論了一個二分類問題,只包含\(W_1\)和\(W_2\)。分析結果以下圖所示:
《Sphereface: Deep hypersphere embedding for face recognition》
\[ L_{a n g}=\frac{1}{N} \sum_{i}-\log \left(\frac{\exp \left(\left\|x_{i}\right\| \psi\left(\theta_{y i, i}\right)\right)}{\exp \left(\left\|x_{i}\right\| \psi\left(\theta_{y i}, i\right)\right)+\sum_{j \neq y_{i}} \exp \left(\left\|x_{i}\right\| \cos \left(\theta_{j, i}\right)\right)}\right) \]
A-Softmax與L-Softmax的最大區別在於A-Softmax的權重歸一化了,而L-Softmax則沒有。A-Softmax權重的歸一化致使特徵上的點映射到單位超球面上,而L-Softmax則不沒有這個限制,這個特性使得二者在幾何的解釋上是不同的。如圖1所示,若是在訓練時兩個類別的特徵輸入在同一個區域時,以下圖10所示。A-Softmax只能從角度上分度這兩個類別,也就是說它僅從方向上區分類,分類的結果如圖2所示;而L-Softmax,不只能夠從角度上區別兩個類,還能從權重的模(長度)上區別這兩個類,分類的結果如圖3所示。在數據集合大小固定的條件下,L-Softmax能有兩個方法分類,訓練可能沒有使得它在角度與長度方向都分離,致使它的精確可能不如A-Softmax。
問題:
A-Softmax雖然效果很好,可是存在着顯著的問題。在測試階段,A-Softmax經過特徵間的餘弦值來衡量類似性,即以角度爲類似性的度量;但在訓練階段,A-Softmax並非直接優化特徵與類中心的角度,而是優化特徵與類中心的角度再乘上一個特徵的長度。所以,優化的方向還有一部分是去增大特徵的長度。下圖是A-Softmax在Mnist數據集上的實驗,分別對應m=1和m=4時的特徵可視化。注意座標的尺度,就能驗證上述觀點。
NormFace: \(L_2\) Hypersphere Embedding for Face Verification Feng
\[ \mathcal{L}_{\mathcal{S},}=-\frac{1}{m} \sum_{i=1}^{m} \log \frac{e^{s \tilde{W}_{y_{i}}^{T} \tilde{\mathrm{f}}_{i}}}{\sum_{j=1}^{n} e^{s \tilde{W}_{j}^{T} \tilde{\mathrm{f}}_{i}}} \]
《Additive Margin Softmax for Face Verification 》
\[ L_{A M S}=-\frac{1}{n} \sum_{i=1}^{n} \log \frac{e^{s \cdot\left(\cos \theta_{y_{i}}-m\right)}}{e^{s\left(\cos \theta_{y_{i}}-m\right)}+\sum_{j=1, j \neq y_{i}}^{c} e^{s \cdot \cos \left(\theta_{j}\right)}} \]
AM-Softmax令\(||x||=1, ||W||=1, b=0\)。\(s\)爲縮放因子,論文裏固定爲30。
角度距離和與餘弦距離:
A-Softmax中爲\(\cos m\theta_{y_{i}}\),而AM-Softmax爲\(\cos\theta_{y_{i}}-m\)。一個是角度距離(angular margin),一個是餘弦距離(cosine margin)。當使用傳統的softmax做爲損失函數時,角度距離和餘弦距離是等價的,即:\(\cos \left(\theta_{1}\right)=\cos \left(\theta_{2}\right) \Rightarrow \theta_{1}=\theta_{2}\)。但當試圖改變決策邊界時,角度距離和餘弦距離便再也不等價。最終的決策邊界是和餘弦相關的,根據cos的性質,優化角度距離比優化餘弦距離更有效果,由於餘弦距離相對更密集。(爲何論文采用優化餘弦距離?)
AM-Softmax的好處在於A-Softmax的倍角計算是要經過倍角公式,反向傳播時不方便求導,而只減m反向傳播時導數不用變化。
特徵歸一化:
高質量的圖片提取出來的特徵範數大,低質量的圖片提取出來的特徵範數小,如圖:
Softmax的目標是儘量最大化正確分類的機率。它會忽略掉一些比較難分辨的圖片(低質量的圖片),優先擬合高質量的圖片。而L2-Softmax中提到,質量較差的人臉圖片的特徵範數越小。在進行了特徵歸一化後,這些質量較差的圖片特徵會產生更大的梯度,致使網絡在訓練過程當中將更多的注意力集中在這些樣本上。所以,對於數據集圖片質量較差時,更適合採用特徵歸一化。
以下圖所示,對一個具備二維的特徵,正則化後,特徵被表示在一個圓中。傳統softmax的決策邊界便是向量\(P_0\),則有\(W_{1}^{T} P_{0}=W_{2}^{T} P_{0}\);而AM-softmax是以決策區域替代決策邊界,對於類別1的邊界爲向量\(P_1\),定義\(W_{1}^{T} P_{1}-m=W_{2}^{T} P_{1}\),那麼\(m=\left(W_{1}-W_{2}\right)^{T} P_{1}=\cos \left(\theta_{W_{1}}, P_{1}\right)-\cos \left(\theta_{W_{2}}, P_{1}\right)\)。更進一步假設全部的類別都具備相同的方差,\(P_2\)是類別2的邊界向量,那麼\(\cos \left(\theta_{W_{2}}, P_{1}\right)=\cos \left(\theta_{W_{1}}, P_{2}\right)\),因此\(m=\cos \left(\theta_{W_{1}}, P_{1}\right)-\cos \left(\theta_{W_{1}}, P_{2}\right)\)。
CosFace: Large Margin Cosine Loss for Deep Face Recognition
\[ L_{l m c}=\frac{1}{N} \sum_{i}-\log \frac{e^{s\left(\cos \left(\theta_{y_{i}, i}\right)-m\right)}}{e^{s\left(\cos \left(\theta_{y_{i}, i}\right)-m\right)}+\sum_{j \neq y_{i}} e^{s \cos \left(\theta_{j, i}\right)}} \]
subject to:
\[ \begin{aligned} W &=\frac{W^{*}}{\left\|W^{*}\right\|} \\ x &=\frac{x^{*}}{\left\|x^{*}\right\|} \\ \cos \left(\theta_{j}, i\right) &=W_{j}^{T} x_{i} \end{aligned} \]
ArcFace: Additive Angular Margin Loss for Deep Face Recognition
\[ L_{3}=-\frac{1}{N} \sum_{i=1}^{N} \log \frac{e^{s\left(\cos \left(\theta_{y_{i}}+m\right)\right)}}{e^{s\left(\cos \left(\theta_{y_{i}}+m\right)\right)}+\sum_{j=1, j \neq y_{i}}^{n} e^{s \cos \theta_{j}}} \]
\(\\cos \left(\theta_{y_{i}}+m\right)\)至關於原始的餘弦函數在x軸上向左偏移。論文中將餘弦餘量\(m\)設置爲 0.35(AM-Softmax, CosFace)。與 SphereFace 相比,附加餘弦餘量(CosineFace)有三個優勢:
L-Softmax(\(\cos m\theta_{y_{i}}\))、A-Softmax(\(\cos m\theta_{y_{i}}\))、AM-Softmax(\(\cos\theta_{y_{i}}-m\))、CosFace(\(\cos\theta_{y_{i}}-m\))、ArcFace(\(\\cos \left(\theta_{y_{i}}+m\right)\))的本質都是對cosine函數以及margin形式進行改進。區別在於不一樣的函數形式在前向傳播和反向傳播時所需的計算量有所不一樣。
cosine函數的圖像爲:
可是上述全部損失函數嚴格要求每一個類別都有相同的margin,沒有考慮到類別間的語義相關性,使得訓練的難度較大。語義相關性即:部分類別的類似程度高於其餘類別,如:貓和狗的類似度高於貓和猴子的類似度。在人臉識別任務中,雖然全部的類別都是人,可是世界上存在着不一樣的人種:膚色、五官等都有着顯著的區別,且不一樣地區的長相也趨向於不一樣。而上述損失函數均沒有考慮到人種間的差別性和類似性。