章樂
【摘要】 人臉關鍵點檢測又稱臉部關鍵點定位。在機器學習的領域里,人臉關鍵點檢測技術有著其獨特的應用價值,因為該技術是眾多臉部圖片處理的先序步驟,這些應用包括但不限于人臉識別,臉部表情分析,臉部變形動畫。本文嘗試了四種不同的機器學習模型來實現人臉關鍵點的檢測,并利用Kaggle數據庫對各模型的檢測效果進行橫向對比。其中卷積神經網絡模型擬合效果最好,其Kaggle測試均方根誤差僅為3.21。
【關鍵字】 Kaggle 人臉關鍵點檢測 線性回歸 支持向量機 前饋神經網絡 卷積神經網絡
一、Kaggle數據庫簡介
Kaggle數據庫一共提供了7049張96x96像素的訓練灰度圖。對于每個樣本點,數據庫提供15個關鍵點的x, y坐標(關鍵點坐標允許部分缺失),即30個訓練特征(feature)。對于測試數據集,Kaggle提供了1783臉部灰度圖。模型預測坐標將被用于與Kaggle內置的臉部關鍵點坐標進行比對,其相應的均方根誤差(RMSE)為模型得分。
二、線性回歸
2.1 線性回歸模型存在的問題
對于線性回歸模型,9216個像素灰度值將被作為輸入特征,而相應的15個人臉關鍵點(位于眼、鼻、嘴等處)的X,Y坐標將被視為目標變數(variable)。為解決模型的過度擬合問題(overfitting),我們采取了部分特征抽樣的方法以減少輸入特征。
2.2 特征提取
在給定特征抽樣比例時,我們仍需對9216個輸入特征進行篩選。分段啟發(fā)函數(stepwise methods)是一個普適的特征選擇方法[1],但隨機性過強的分段方法并沒有充分考慮臉部關鍵點坐標間存在的聯(lián)系 。
與一般機器學習問題不同,關鍵點定位存在很直觀的特征提取啟發(fā)策略—我們可僅提取眼、鼻、嘴處的像素值。實驗中,我們采用了以健壯性著稱的方向梯度直方圖HOG(Histogram of Oriented Gradients)來探測并截取其對應區(qū)域的像素,如圖1所示[2]。
2.3 模型復雜度控制
我們從左右眼、鼻及嘴區(qū)域截取了長寬分別是H,W的像素塊作為線性回歸模型的輸入特征,通過調整像素塊的大小來控制模型的復雜度。當H與W增大時,模型復雜度隨之增加。在實驗中我們發(fā)現,檢驗方差及訓練方差(Validation and traning MSE)隨著像素塊的增大而減小。這說明我們得到的線性回歸模型仍處于欠擬合區(qū)域(Underfitting)。然而,我們無法進一步增大提取像素塊,否則像素塊邊界將會產生越界現象。通過觀測,最佳的像素塊長寬均為32(像素)。對于該大小的像素塊得到的最終線性回歸模型,其Kaggle測試均方根誤差約為4.6367。
三、 支持向量機(support vector machine)
支持向量機(SVM)是廣泛應用于機器學習分類以及回歸的抽象模型,因此存在眾多成熟的工具包。在實驗中,我們采用了著名的LIBSVM [3]來對數據進行擬合。我們利用9216個像素值作為輸入特征分別訓練30個向量機,每個向量機輸出15個臉部關鍵點的X或Y坐標。這樣的簡化處理并忽略了坐標間存在的內部聯(lián)系,卻成功避免了引入多目標變數向量機(SVM struct [4]),使代碼大為簡化。
3.1線性卷積核
對于輸入特征較多,訓練樣本較小的機器學習問題,線性卷積核是一個合理的選擇。在LIBSVM工具包中,我們仍需選取合適的正則參數C(regularization parameter)。對于線性卷積核,搜索得到的最佳正則參數C為0.1,其對應模型的方差由默認參數的10.663降至10.454,Kaggle測試均方根誤差為4.35512。
3.2 多項式卷積核
對于多項式卷積核的SVM模型,其最重要的調諧參數是多項式的最高次冪。在交叉檢驗中(Cross-validation),我們發(fā)現均方差與多項式核的最高次數呈正相關,即檢驗均方差從線性核(P=1)時便開始增大,說明多項式卷積核的SVM在P=1時就已經出現了過度擬合的現象。
3.3徑向基函數核與參數調諧
由于徑向基函數核(Radial Basis Kernel)能夠非線性地將輸入特征映射到更高維空間,因此它能夠處理絕大部分目標參數與輸入特征存在非線性關系的機器學習問題。更為巧妙的是,當徑向基函數核的懲罰參數C (不同于正則參數)及核參數γ為某一特定組合時,其SVM模型的擬合效果將完全等同于與線性核SVM模型 [5]。邏輯回歸卷積核與徑向基卷積核SVM也有類似的關系[6]。
四、 前饋神經網絡
4.1 基本結構
常見的神經網絡(Neural Network)結構包括前饋神經網絡(feed-forward),遞歸神經網絡(recurrent)以及對稱連通網絡(symmetrically connected)等等。在該論文中,我們采用了實際應用較廣的前饋神經網絡結構。
根據[7]的論述,在給定相同數量的神經元,擁有更深結構的神經網絡模型擁有更強的表達能力。因此,一個典型的前饋神經網絡應至少包含三個層次-----輸入層,輸出層以及在這兩層之間的隱藏層。對于臉部關鍵點檢測問題,輸入層一共有9216個神經元,輸出層將由30個神經元組成。
4.2 模型的參數設定
如前所述,神經網絡模型復雜度主要取決于隱藏層的層數,每層擁有的神經元個數以及迭代次數(epochs)。在該實驗中,我們使用了目前較為先進的機器學習工具包 Theano[http://deeplearning.net/software/theano/]。
4.2.1 隱藏層層數、每層神經元數量及迭代次數的選取
由于特征值域映射問題,Theano的顯示誤差為均方差的千分之一。由圖2知,當層間神經元數量超過300時,交叉檢驗誤差顯著上升,模型出現了過度擬合現象。在實際Kaggle測試中,我們嘗試了三個不同隱藏層層數(1,2及3層),其對應的均方根誤差為3.82109, 3.85388以及3.81652。這一結果顯示了隱藏層數的改變并不會對擬合結果有顯著的影響。顯然,當迭代次數增加時模型復雜度也隨之增加。由圖2(右)知,迭代次數設置為1000是一個較為合適的選擇。
4.3 集成學習4.3.1 Bagging對于神經網絡模型,我們可以采取兩種不同Bagging策略。
(1)從訓練數據中抽樣選取部分樣本點。我們分別訓練了10個不同的神經網絡,其輸入樣本為從訓練數據中隨機抽取的1940個樣本點。最終的臉部關鍵點坐標取這10個模型預測結果的算術平均值,其Kaggle測試均方根誤差為3.67293。
(2)從每個樣本點(臉部圖片)中選取部分輸入特征,每個樣本點的輸入特征為隨機抽取的8000個像素點。相應模型的Kaggle均方根誤差為3.62655
4.3.2 混合模型
同樣地,我們可以采取如下兩種不同的混合策略。
(1)我們分別訓練三個僅有1層,2層以及3層隱層的神經網絡,并取其預測的臉部關鍵點坐標算術均值作為預測結果。該模型Kaggle測試均方根誤差降至3.62702。
(2)混合由(1)中的神經網絡以及Bagging的第二種模型(部分特征抽樣)。這兩種目前表現最佳的神經網絡的結合進一步降低了均方根誤差。該模型的測試均方根誤差約為3.58884。
4.4 總結
在論文的本節(jié)中,我們嘗試了一系列參數各異的神經網絡和集成學習模型,使得均方根誤差由最初的3.8降至了3.58884。模型及其相應的均方根誤差如表1所示。
五、卷積神經網絡
5.1 模型結構
卷積神經網絡(Convolutional neural networks, CNN)是一種較為新型、直到90年代末才被成熟開發(fā)的神經網絡結構。在沒有犧牲模型的普適性前提下,卷積神經網絡有效地利用了局部像素間關聯(lián)性,縮短了機器學習訓練周期。對于卷積神經網絡,每一層神經元將構成三維結構(傳統(tǒng)神經網絡是二維平面結構),而層間的神經元只與前一層的神經網絡的局部神經元存在激勵、反饋聯(lián)系,這一特性稱為局部感知。
5.2 訓練卷積神經網絡
在本論文中,我們嘗試了一系列參數各異的神經網絡模型,并使用NVIDA GTX-650顯卡與1GB內存對模型進行訓練。在訓練過程中,我們將Kaggle提供的訓練數據庫分成訓練數據及檢驗數據,其規(guī)模之比為4:1。
5.2.1 卷積神經網絡結構
實驗中使用的模型參數:輸入層一層,由9216個神經元組成;卷積層(Convolution)及最大值池化層(Max Poolling)各四層,每一層的卷積濾窗大小為3x3,池化過濾窗大小為2x2,位移步長為2。卷積核數從第一層至第四層分別為32, 64, 128以及256;全連通卷積層一層,包含500個隱藏神經元;輸出層一層,由30個神經元組成。神經元的激勵函數采用的是RELU非線性函數,輸出層輸出將取決于全連通層激勵信號的線性組合。為了提高訓練速率,我們將學習速率(training rate)設置為一較大值并隨迭代次數線性減??;動量項(momentum)隨迭代次數線性增加。為了避免可能的內存問題,斯托克斯數據包大?。╯tochastic batch size)設定為64. 從圖5.1可以看出,上述的改進大大加快了均方差的收斂速度,縮短了訓練周期。
5.2.2 數據擴充
對于圖片類型數據,我們可以垂直翻轉圖片實現數據擴充。由于訓練數據庫規(guī)模變大,我們將迭代次數上線由600增至700。
利用數據擴充的策略,從圖5.1中可以清晰地看到不僅訓練誤差明顯降低,檢驗誤差也隨之下降,意味著卷積神經網絡得到正確的優(yōu)化。
5.2.3 激勵摒棄(dropout)
激勵摒棄(dropout)是避免過度擬合的又一新型策略,其在卷積神經網絡中的應用直到最近幾年才被關注并被開發(fā)。激勵摒棄是在每一卷積層隨機選取一定數量的激勵神經元,并將其激勵人為地置零。對于不同的訓練圖片,歸零的激勵神經元也需重新選取。激勵摒棄可以有效地抑制神經元間的過強聯(lián)系。
利用激勵摒棄的策略,我們將迭代次數增至1000,此時Kaggle測試均方根誤差降至3.45;若將迭代次數增3000,其相應的Kaggle均方根誤差降至3.21。當我們進一步增大迭代次數時,均方根誤差下降已十分緩慢。
六、結語
在本篇論文里,我們嘗試了一系列健壯的機器學習模型并系統(tǒng)地比較了他們的擬合效果。由于缺乏有效的特征選取及模型復雜度控制機制,基于計算機視覺的線性回歸模型并不能取得很好的效果。
而卷積核的靈活性使得支持向量機SVM在前者的基礎上有了明顯的進步。然而前饋神經網絡以及卷積神經網絡能夠更為有效地控制了高維模型的復雜度。
其中,專門用于圖片機器學習的卷積神經網絡在Kaggle的測試中有著極佳的表現,經優(yōu)化后其均方根誤差僅為3.21959。
參 考 文 獻
[1] Efroymson, M. A. “Multiple regression analysis.” Mathematical methods for digital computers 1 (1960): 191-203.
[2] Dalal, Navneet, and Bill Triggs. ?Histograms of oriented gradients for human detection.? Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society Conference on. Vol. 1. IEEE, 2005.
[3] Chang, Chih-Chung, and Chih-Jen Lin. ?LIBSVM: a library for support vector machines.? ACM Transactions on Intelligent Systems and Technology (TIST)2.3 (2011): 27.
[4] Joachims T, Finley T, Yu C N J. Cutting-plane training of structural SVMs[J]. Machine Learning, 2009, 77(1): 27-59.[5] Keerthi S S, Lin C J. Asymptotic behaviors of support vector machines with Gaussian kernel[J]. Neural computation, 2003, 15(7): 1667-1689.
[6] Lin, Hsuan-Tien, and Chih-Jen Lin. ?A study on sigmoid kernels for SVM and the training of non-PSD kernels by SMO-type methods.? submitted to Neural Computation (2003): 1-32.
[7] Suykens J A K, Vandewalle J. Least squares support vector machine classifiers[J]. Neural processing letters, 1999, 9(3): 293-300.