face recognition[Euclidean-distance-based loss][Center Face]


本文來自《A Discriminative Feature Learning Approach for Deep Face Recognition》,時間線爲2016年。採用的loss是Center loss。網絡

0 引言

一般使用CNN進行特徵學習和標籤預測的架構,都是將輸入數據映射到深度特徵(最後一層隱藏層的輸出),而後到預測的標籤,如圖1.
架構


在通用目標,場景和動做識別中,預測的樣本歸屬的類別也處在訓練集中,這被稱爲「 閉集識別」。所以,預測的標籤能表示模型的性能,且softmax loss能夠直接處理分類問題。這時候,標籤預測問題就相似一個線性分類模型,且深度學到的特徵也具備可分性。

而對於人臉識別任務來講,學到的深度特徵不止具備可分性,也具備辨識性。由於不可能在訓練集中收集到全部預測的ID類別,CNN輸出的特徵並不老是可用的。須要讓訓練出來的特徵具備辨識性,且可以足夠泛化到那些未見過的人ID的類別。辨識性即須要特徵可以保證類內變化的緊湊性和類間不一樣的可分性。如圖1所示,辨識性特徵能夠很容易的經過KNN去劃分。然而,softmax loss只保證了特徵的可分性,生成的特徵還不足夠用於人臉識別。函數

在CNN中,構建讓特徵具備高度辯識性的loss函數是頗有意義的。在CNN中的SGD一般是基於mini-batch,其不能很好的反映深度特徵的全局分佈。由於訓練集自己很大,也無法每次迭代的時候把整個訓練集都放進去迭代。做爲一種解決方法,contrastive loss和triplet loss各自構建了基於圖片二元組和圖片三元組構建loss函數。然而相比於圖片樣本,須要投入的訓練圖片二元組和三元組的數量會急劇增加,同時也不可避免的會減慢收斂和增大不穩定性。經過仔細的選擇圖片二元組和三元組,雖然這些問題能夠部分解決。不過也明顯增長了計算複雜度,且也讓訓練過程變得不夠方便。性能

這裏做者提出了一個新的loss函數,叫center loss,能夠有效的加強深度特徵的辨識性。特別的,對每一個類別的深度特徵,會學到一箇中心(和特徵有着同樣維度的一個向量)。在訓練中,會同時更新該中心,且最小化深度特徵與對應中心向量的距離。因此該CNN是基於softmax loss和center loss聯合訓練的,經過一個超參數去權衡這兩個loss。直觀的,softmax loss強制不一樣類別的深度特徵保持分離。center loss有效的將同一個類別的其餘特徵往其對應的中心緊推。經過聯合訓練,不止讓類間特徵的區別變大,同時讓類內特徵的變化減少。所以讓學到的深度特徵辨識性能夠加強。學習

1 Center Face

這裏先經過一個例子介紹下深度特徵的分佈,而後基於該分佈提出了center loss來提高深度特徵的辨識性。測試

1.1 簡單的例子介紹深度特徵的分佈

本部分是基於MNIST數據集進行呈現的。經過將LeNet網絡修改的更深更寬,不過減小最後一層隱藏層的神經元個數爲2(即學到的深度特徵維度爲2)。因此能夠直接在2D座標系上呈現學到的特徵。網絡結構的詳細部分如表1。
大數據


softmax loss函數式子爲:
\[L_s=-\sum_{i=1}^m\log \frac{e^{\left ( W_{y_i}^T \, \mathbf{x}_i+b_{y_i}\right )}}{\sum_{j=1}^n e^{\left ( W_j^T\, \mathbf{x}_j+b_j\right )}}\]
其中, \(\mathbf{x}_i\in R^d\)表示第 \(i\)個深度特徵,屬於 \(y_i\)類, \(d\)是特徵的維度。 \(W_j\in R^d\)表示最後一層全鏈接層中權重 \(W\in R^{d\times n}\)矩陣的第 \(j\)列, \(\mathbf{b}\inR^n\)是對應偏置項。mini-batch的size和類別的個數分別爲 \(m\)\(n\)。這裏忽略偏置項以簡單說明(實際上,忽略了以後,性能也沒什麼差異)。

生成的2D深度特徵如上圖所示。由於最後的全鏈接層表現的和一個線性分類器同樣,因此不一樣類別的深度特徵能夠經過決策面簡單的劃分。圖2中能夠得出:

  • 基於softmax loss的監督之下,學到的深度特徵具備可分性;
  • 深度特徵不具備足夠的判別性,由於仍然有明顯的類內變化

因此還不能直接將softmax學到的特徵直接用在人臉識別上。spa

1.2 Center Loss

因此,如何提出一個有效的loss函數去提高深度特徵的辨識性呢?直觀的,是減少類內變化的同時保持不一樣類特徵的可分性。因此,這裏提出一個center loss函數:
\[L_C=\frac{1}{2}\sum_{i=1}^m||\mathbf{x}_i-\mathbf{c}_{y_i}||_2^2\]
其中\(\mathbf{c}_{y_i}\in R^d\)表示深度特徵的第\(y_i\)個類中心。該式子能夠有效的表達類內變化。理想狀況下,\(\mathbf{c}_{y_i}\)能夠隨着深度特徵的改變而更新。換句話說,須要將整個訓練集都考慮在內,並在每次迭代中對每一個類別的特徵進行平均,這在實際實踐中不具備可操做性。所以,center loss不能直接使用,這也可能就是在CNN中center loss一直沒有應用的一個緣由吧。
爲了解決該問題,提出兩個必須的修改:3d

  • 不直接基於整個訓練集合更新center,而是基於mini-batch進行操做。在每次迭代中,經過平均對應的類別特徵來計算center(這時候,一些center可能並不會被更新);
  • 爲了不誤標記樣本帶來的較大擾動,使用一個標量\(\alpha\)來控制center的學習率。

\(L_C\)關於\(\mathbf{x}_i\)的梯度和更新\(c_{y_i}\)的式子以下:
\[\frac{\partial L_C}{\partial \mathbf{x}_i}=\mathbf{x}_i-\mathbf{c}_{y_i}\]
\[\Delta \mathbf{c}_j=\frac{\sum_{i=1}^m\delta(y_i=j)\cdot (\mathbf{c}_j-\mathbf{x}_i)}{1+\sum_{i=1}^m\delta (y_i=j)}\]
\(condition\)知足的時候\(\delta (condition)=1\),反之\(\delta (condition)=0\)\(\alpha\)取值在[0,1]之間。經過將softmax loss和center loss 聯合訓練CNN以保證辨識性特徵學習,對應的式子爲:
\[ \begin{align} L&= L_S+\lambda L_C \\ & = -\sum_{i=1}^m\log\frac{e^{\left ( W_{y_i}^T \, \mathbf{x}_i+b_{y_i}\right )}}{\sum_{j=1}^n e^{\left ( W_j^T\, \mathbf{x}_j+b_j\right )}}+\frac{\lambda}{2}\sum_{i=1}^m||\mathbf{x}_i-\mathbf{c}_{y_i}||_2^2 \end{align} \]
能夠看到,由center loss監督的CNN是可訓練的,能夠經過標準SGD進行迭代,標量\(\lambda\)能夠用來權衡這兩個loss函數。傳統的softmax loss能夠當作該聯合loss的一個特殊狀況,即\(\lambda =0\)
blog


上述流程簡單介紹了網絡訓練的過程。

從圖3能夠發現,不一樣的 \(\lambda\)會致使不一樣的深度特徵分佈,在值合適的狀況下,深度特徵的辨識性能夠加強很多。

1.3 討論

  • 若是隻是用softmax loss,則會致使較大的類內變化;若是隻用center loss,則深度特徵和center就會降低爲0(此時center loss是很小的);
  • 相比於contrastive loss和triplet loss,它們都須要對數據進行擴展成二元組或者三元組,而center loss不須要對訓練樣本進行組合操做,於是CNN網絡可以更直接的訓練。

2 實驗及分析

這裏介紹下實現的一些細節和個別超參數的影響對比。

2.1 實現細節

  • 基於MTCNN先對人臉數據集進行人臉檢測和對齊,人臉檢測框統一裁剪成112x96大小,而後經過每一個像素值減去127.5並處以128進行大體的歸一化。
  • 使用網絡上收集了的數據集如CASIA-WebFace,CACD2000,Celebrity+,在移除了出如今測試集中的ID圖片,大概有0.7百萬張,17,189個ID。而且作了簡單的水平翻轉以數據加強。
  • 採用caffe庫進行實現,網絡結構如圖

    爲了公平對比,只在loss函數層作了不一樣的設定,如softmax loss(model A);softmax+contrastive(model B);softmax+center(model C)。這些模型的batchsize都爲256,在兩塊TitianX上完成。對於模型A和模型C,學習率始於0.1,而後在16K和24K迭代次數時分別除以10。大體須要28K次迭代14小時完成整個訓練。對於模型B,發現收斂的更慢,其以0.1初始化學習率,而後在24K和36K進行變化。一共42K次迭代,大體22小時。
  • 將第一層全鏈接層的輸出做爲深度特徵,經過提取每一個圖片的該特徵並對圖片進行左右翻轉並再次提取特徵,將這2個特徵進行合併以此來表示該圖片。先經過PCA進行降維,而後採用cos距離來計算兩個特徵的距離。最近鄰和閾值對比分別用來做爲人臉識別和驗證。

2.2 基於超參數的實驗

超參數\(\lambda\)控制着類內變化,\(\alpha\)控制着模型C中center c的學習率。他們對網絡的訓練都很重要。


上圖中的一個實驗是固定 \(\alpha=0.5\)並變化 \(\lambda\),能夠發現只用softmax( \(\lambda=0\))效果並很差;一樣的對於第二個實驗,固定 \(\lambda=0.003\),改變 \(\alpha\)發現仍是挺穩定的。


從上圖能夠發現,在小數據量上,center Face效果仍是挺不錯的,固然仍是幹不過谷歌那種包含超大數據量的FaceNet
相關文章
相關標籤/搜索