Learning Hierarchical Representations for Face Verification with Convolutional Deep Belief Networks
話說這深度學習如火如荼的,在imageNet上斬獲無數,在人臉識別這個領域,深度學習也不甘示弱,本系列將介紹人臉識別領域應用深度學習的工作。
這是CVPR2012的一篇工作,利用CDBN來做層次特徵學習,來處理unrestricted face verification問題。由於人臉的特殊性,CDBN除了直接在灰度圖像上訓練,同時在LBP圖像上訓練(取了59維的 Uniform LBP Feature),按文中觀點,CDBN可以用來提取local feature中的高階統計信息。另外一方面,人臉被劃分爲若干相互重疊的塊,每個塊只和部分隱結點發生關聯,CRBM的建模如下:
最後輸出的特徵進一步用CSML進行測度學習,過程依舊是先做PCA,再學測度。
實驗部分在LFW數據集上進行,文章在不同網絡架構下比較了random filter和基於CDBN模型的learned filter,得出結論是learned filter比random filter對網絡架構魯棒性更強,性能普遍更優。
重頭戲是LFW View2上的確認實驗,注意CDBN網絡的參數是在View1上調出來滴。實驗結果如下:
Table 1中,在Kyoto這個自然圖像數據集上訓練的CRBM model放在人臉上也不錯。另外一個費解的地方就是,多層的CRBM提升不大,Kyoto數據集上,2層CRBM的性能甚至比一層的還要低。深度學習的擁護者普遍認爲,不充分的深度是有害的。單個數據源性能最高的是Kyoto,同時使用LBP和pixel訓練CRBM,Accuracy達到了86.60%,居然比人臉數據訓練出的模型還高。
Table2就有些慘不忍睹了,雖然說Hand-crafted那個87.18%的性能是融合多個描述子出來的,本文工作中的86.88%也是用的SVM融合,這個CDBN和hand-crafted孰優孰劣,至少從目前這個工作中,我們得不出結論。要知道Sun Jian CVPR2013的最新工作Blessing of Dimensionality: High-dimensional Feature and Its Efficient Compression for Face Verification,利用稠密採樣的多尺度LBP特徵在LFW數據集上已經到達了95%的逆天性能。
Deep Convolutional Network Cascade for Facial Point Detection
本文是CVPR2013湯曉歐課題組的最新工作,利用級聯深度卷積網絡進行面部特徵點定位。
1. Deep Covolutional Network
Deep Covolutional Network深度卷積神經網絡,正是我們所熟悉的CNN(Covolutioanl neural network),CNN在上了世紀末年就已經成型[1],現如今深度學習如日中天,加個Deep頓時就高端起來了。
Figure.1 給出了Deep CNN的結構圖,Deep CNN通過多層的卷積結構來提取層次特徵(Hierarchical Feature),並通過max-pooling層下采樣獲取不變性,最後通過最上層一個全連接的MLP(hidden layer + logistic regression)[2]來實現分類。
2. Cascaded Convolutional Network
圖2是整個系統的結構圖,“Cascaded"就體現在這樣的一個層次結構上,F1、EN1和NM1首先是一層粗的定位,後面再通過更加精細LE21等第二層檢測器以及LE31等第三層檢測器實現更爲精細的位置修正。圖中的黃色區域是每層檢測器的掃描區域。注意第一層卷積網絡的標識爲Deep CNN,這表示第一層網絡所採用的是Figure.1所示的深度結構。注意,LE21和LE22都是用來預測左眼中心的位置,區別在於掃描區域。
3. 實現細節
Level 1-3的網絡結構見下表:
注意Level2-3所採用的網絡結構均爲S2。
下表則給出了的Level 2-3各個卷積網絡的掃描區域。
從Table2可以清晰的看出LE21和LE22在掃描區域上的區別。
4. 實驗
Figure.4比較了多種網絡結構,Figure.5顯示了多層級聯結構的優勢。:
Figure.6 在BioID和LFPW兩個庫上將本文方法與state-of-the-art方法進行了比較。可見本文方法的性能相比傳統方法有較大提升(50% Accuracy improvement)。
Figure.8給出了一些檢測結果,本文作者用C++實現了該方法,檢測速度爲0.12second/per image,相當於8frames/s,客觀的說,這個速度不算快,但是檢測精度的確非常給力。
參考文獻
[1] LeNet-5
[2] Multilayer Perceptron
實驗結果: