一、問題分析
1. 問題描述
在Yale數據集上完成以下工作:在給定的人臉庫中,通過算法完成人臉識別,算法需要做到能判斷出測試的人臉是否屬於給定的數據集。如果屬於,需要判斷出測試的人臉屬於數據集中的哪一位。否則,需要聲明測試的人臉不屬於數據集。
2. 數據集分析
Yale人臉數據集由耶魯大學創建,包含15個人,每個人有不同表情、姿態和光照下的11張人臉圖像,共165張圖片,每張圖片大小為100*100。整個數據集非常小,圖片信息也較為簡單。
如圖1所示,數據集中人臉數據已經標定,因此這並不是傳統意義上的人臉識別任務,而是一個簡單的圖像多分類問題。另外,每個人包含了在不同表情、光照下的人臉圖像,這就要求我們提取的圖像特征要具有光照不敏感性,能夠很好得體現人臉的輪廓信息。

圖 1 Yale數據集示例
3. 特征提取
神經網絡:在圖像多分類任務中,如今前沿的方法都是采用深度神經網絡來學習圖像數據,從而訓練得到一個多分類模型,例如ResNet[1]可以在大規模數據集ImageNet上達到3.57%的top5 error。在基於海量數據的前提下,神經網絡已經被證明了可以很好得提取圖像特征,然而由於Yale數據集非常小,只有165張圖片,因此不適用於神經網絡中。
PCA: PCA[2]即主成分分析。在原始數據中,很多維度間具有較大的相關系數,PCA旨在利用降維的思想,把多指標轉化為少數幾個綜合指標。但PCA可能會忽略貢獻率小的主成分,這種成分往往可能含有對樣本差異的重要信息,從而使得分類結果出現誤差。
SIFT:SIFT[3]特征是圖像的局部特征,其對旋轉、尺度縮放、亮度變化保持不變性,對視角變化、仿射變換、噪聲也保持一定程度的穩定性,且獨特性好,信息量豐富,適用於海量特征庫進行快速、准確的匹配。而由於Yale數據量少,SIFT難以達到理想的效果。
HOG: HOG[4]即方向梯度直方圖特征,通過計算和統計圖像局部區域的梯度方向直方圖來構成特征。由於HOG是在圖像的局部方格單元上操作,所以它對圖像幾何的和光照變化都能保持很好的不變性,因此非常適用於具有不同光照情況的Yale數據集上。另外,HOG特征包含了圖像邊緣的梯度方向和梯度信息,能夠很好得對人臉輪廓、五官信息進行表達。
綜合以上分析,在本實驗中我們選擇了HOG來提取圖像的特征信息。
4. 分類方法
常用的分類方法包括K近鄰、SVM[5]、Softmax等。K近鄰實現較為簡單,但是在預測時計算復雜度較高,因此現在已經很少采用這個分類模型;SVM在訓練時確保正樣本和負樣本之間的間距大於某個閾值,對於正樣本盡可能給與更高的置信度,然而在多分類SVM中,負樣本的得分並不具有對應的概率意義;Softmax是邏輯回歸在多分類上的擴展,針對每一個類別都給出了其對應的概率得分。Softmax在訓練時總是力求最大化正樣本的概率,最小化其他負樣本的概率,因此輸出值可以用來表示樣本屬於每個類的概率。
在本次實驗中,我們需要判定噪聲集中的數據是否屬於數據庫,算法實現的核心思想要求模型能夠輸出對應每個類別的概率。而由於Softmax在類別得分上比SVM有更高的置信度,因此在本次實驗中,我們采用HOG+Softmax的模型對實現人臉識別任務。
二、模型
1. HOG特征
方向梯度直方圖(Histogram of Oriented Gradient, HOG),是一種用於表征圖像局部梯度方向和梯度強度分布特性的描述符。在一副圖像中,局部目標的表象和形狀能夠被梯度或邊緣的方向密度分布很好地描述。HOG特征對於圖像幾何的和光學的形變都能保持很好的不變性。
HOG特征提取分為以下幾個步驟:
(1) 色彩和伽馬歸一化,減少光照因素的影響;
(2) 計算圖像橫坐標和縱坐標方向的梯度方向和梯度幅值;
(3) 利用細胞單元的梯度信息構建梯度直方圖;
(4) 將每個block下的細胞單元組合起來,並對梯度直方圖歸一化;
(5) 收集HOG特征,將整幅圖的block特征向量整合成一個特征向量。
HOG特征提取流程圖如圖2所示:
圖 2 HOG特征提取流程圖
2. Softmax
Softmax用於多分類過程中,當給定圖像數據,以W為參數,分配給正確分類標簽的Softmax函數值(歸一化概率)如下:

Softmax函數的輸入值是一個向量,向量中元素為任意實數的評分值,函數對其進行壓縮,輸出一個向量,其中每個元素值在0到1之間,可以等同於每個類對應的概率值,且所有元素之和為1,從而來進行多分類。
3. HOG+Softmax
實驗中,我們采用HOG+Softmax的方法對人臉識別問題進行建模。模型如圖3所示,我們首先提取人臉圖像的HOG特征,再將這些HOG特征送入Softmax中進行訓練。在訓練完成后,對於每個輸入,我們可以得到其對應的多個分類概率值,再通過判定其中的最大概率值是否小於閾值,如果小於,則判定為不屬於數據集;否則,輸出其對應的ground-truth。
圖 3 HOG+Softmax模型圖
三、實驗
本次實驗利用python實現,主要用到的核心庫包括scikit-learn、scikit-image和openCV等,特征提取和分類都是直接使用這些庫去實現。實驗中首先對Yale數據集進行預處理並提取HOG特征,然后利用K折交叉驗證搜索模型得到符合條件的最優閾值,最后用這個模型測定在數據集和噪聲集上的表現情況。實驗代碼已在github上開源:https://github.com/CStianya/Yale-FaceRecognition。
1. 數據集處理
我們首先利用openCV讀取Yale數據庫,因其命名符合一定的規范,通過簡單的字符串處理后,我們可以得到每個數據對應的標簽信息。Yale數據庫共有165張圖片,包含15個類,每個類11張圖片。我們按4:1的比例將數據庫划分為數據集和噪聲集,其中數據集包含1-12類樣本,噪聲集包含13-15類樣本。訓練時以3:1的比例進一步將數據集划分為訓練集和測試集,以確保模型的泛化能力,另外噪聲集的標簽在訓練期間是不會出現的。
我們利用scikit-image庫中的hog函數提取數據的HOG特征,cell大小是16*16,block大小為1*1,采用的歸一化方式是“L2-Hys”,共有8個bins。提取到的HOG特征具有288個維度,其特征圖可視化結果如圖4所示:
圖 4 人臉圖像的HOG特征圖
2. 實驗結果
實驗中我們采用重復K折交叉訓練來搜索模型的最優閾值。我們要觀測的指標是模型在測試集上的ground-truth所對應的最小概率值α以及在噪聲集上的最大概率值β。通過改變參數K和重復次數n的值,我們得到模型對應的α和β指標結果如表1所示。
通過表1可以發現,當K=4,n=6時,模型α指標為0.3497,β指標為0.3209,滿足α>β。因此我們選擇其中間值0.33作為閾值。
表 1 不同參數下模型的α指標(左)和β指標(右)
|
|
2 |
3 |
4 |
|||
| 1 |
0.2141 |
0.2926 |
0.2194 |
0.2886 |
0.2356 |
0.2825 |
| 2 |
0.1763 |
0.2831 |
0.1679 |
0.2938 |
0.2263 |
0.3897 |
| 3 |
0.1475 |
0.3070 |
0.1651 |
0.3181 |
0.1806 |
0.3195 |
| 4 |
0.1479 |
0.3918 |
0.1768 |
0.3704 |
0.2179 |
0.3542 |
| 5 |
0.1737 |
0.3467 |
0.1894 |
0.3044 |
0.2385 |
0.3219 |
| 6 |
0.2271 |
0.3339 |
0.3259 |
0.3261 |
0.3497 |
0.3209 |
基於上述模型以及0.33的閾值設定,我們評價了模型在測試集和噪聲集上的acc_class指標和err_in指標。其中acc_class為分類的准確度,err_in為判斷樣本是否在數據集中的的錯誤率。實驗結果如表2所示。
從表2中可以看出,HOG+Softmax模型可以在噪聲集上達到0%的錯誤率,這意味着對於噪聲集的所有數據,模型都能夠判定其不在數據集里;另外,模型在測試集上也達到了100%的acc_class。實驗結果表明HOG+Softmax模型可以很好的權衡acc_class和err_in兩個指標,且在Yale數據庫上同時達到了最優的表現情況。
表 2 測試集和噪聲集上的acc_class和err_in表現
|
|
acc_class(%) |
err_in(%) |
| 測試集 |
100 |
0 |
| 噪聲集 |
100 |
0 |
為了使實驗結果更為直觀、便於理解,我們利用QT庫制作了一個模型demo,分別測試了模型在數據集和噪聲集上的預測情況。預測結果如圖5和圖6所示。
圖 5 數據集上的預測情況

圖 6 噪聲集上的預測情況
四、總結
在實驗中,我們采用HOG+Softmax的模型解決了Yale數據庫上的人臉識別問題,在測試集和噪聲集上都達到了最優的表現情況,證明了該模型的有效性和先進性。當然,模型還存在的一定的問題,實驗中為了解決噪聲集的判別問題,我們引入了閾值的設定,這導致每次噪聲集的類別改變后,我們都需要重新搜索得到一個閾值;此外,由於Yale數據量實在太小,模型很容易就達到了100%的准確度,這也會造成過擬合問題。
總而言之,我們的模型在Yale上的人臉識別任務還是達到了非常優異的表現。這次實驗也讓我們的編碼能力和團隊協作能力得到了很大的提升。
參考文獻
[1] Kaiming He, Xiangyu Zhang, Shaoqing Ren, et al. Deep Residual Learning for Image Recognition[J]. 2015:770-778.
[2] Wold S, Esbensen K, Geladi P. Principal component analysis[J]. Chemometrics & Intelligent Laboratory Systems, 1987, 2(1):37-52.
[3] Lowe D G. Distinctive Image Features from Scale-Invariant Keypoints[C]// International Journal of Computer Vision. 2004:91-110.
[4] Dalal, Navneet, Triggs, et al. Histograms of Oriented Gradients for Human Detection[C]// IEEE Computer Society Conference on Computer Vision and Pattern Recognition. IEEE, 2005:886-893.
[5] Adankon M M, Cheriet M. Support Vector Machine[J]. Computer Science, 2002, 1(4):1-28.
