陸清正, 周 宇, 葉慶衛(wèi), 陸志華
(寧波大學 信息科學與工程學院,浙江 寧波 315211)
頭部姿態(tài)估計[1~4](head pose estimation,HPE)通常是指在圖像或者視頻中判斷人體頭部在三維空間中的朝向問題,即在一個空間坐標系內(nèi)識別頭部的姿態(tài)參數(shù),一般通過垂直轉(zhuǎn)動仰俯角(pitch)、水平轉(zhuǎn)動的偏航角(yaw)、左右轉(zhuǎn)動的旋轉(zhuǎn)角(roll)三個方向的自由度來描述。由于人臉姿態(tài)的差異,光照條件,背景變化以及可能存在的遮擋問題等各種因素的影響,頭部姿態(tài)估計仍然面臨著很大挑戰(zhàn)。
基于模型的方法和基于外觀的方法是頭部姿態(tài)估計常用的兩類方法。利用基于模型的方法,Wang J G等人[5]使用6個關(guān)鍵特征點(2個外眼角,2個內(nèi)眼角和2個嘴角)來估計姿態(tài),假設2個眼角和嘴角大致在同一平面上。當模板集很大時,一些基于模型的方法的效率則會無法保證。Lanitis A等人[6]使用主動形狀模型(active shape model,ASM)提取臉部特征,并采用貪婪搜索來匹配特征點。Sung J等人[7]提出將人臉形狀初始化為圓柱模型,并結(jié)合主動外觀模型(active appearance model,AAM)的方法。這類算法的主要優(yōu)點是實現(xiàn)簡單、速度較快并易于理解,但算法的精度很大程度上依賴于特征提取的準確度如人臉特征點的定位準確度。在人臉存在較大偏轉(zhuǎn)或嚴重遮擋的情況下,模型特征提取的準確度無法保證,可能會給最終頭部姿態(tài)的估計造成很大的誤差。
利用基于外觀的方法,Balasubramanian V N等人[8]提出了有偏集的流形嵌入框架,在確定低維嵌入之前,利用人臉圖像的姿態(tài)角信息計算特征空間中每個點的偏置鄰域。Huang D等人[9]提出了一種從稀疏非均勻采樣訓練集中學習局部線性模型的有監(jiān)督局部子空間的學習方法。基于外觀的方法不需要獲得人臉關(guān)鍵點位置,在頭部旋轉(zhuǎn)角度較大時也能實現(xiàn)準確估計。但其性能在很大程度上受到人臉圖像的特征提取以及訓練學習方式的影響[10]。
本文在前人工作的基礎上,首先通過回歸局部二值特征(local binary features,LBF)[11]訓練隨機森林獲得人臉關(guān)鍵點的位置坐標,然后將人臉關(guān)鍵點位置坐標特征輸入反向傳播(back propagation,BP)神經(jīng)網(wǎng)絡進行分類器的訓練,最終實現(xiàn)頭部姿態(tài)的估計,降低了特征提取的復雜度,避免了大量樣本的訓練過程,同時保證了在頭部偏轉(zhuǎn)角度較大情況下的識別率。
本文采用LBF提取算法來獲取人臉的68個關(guān)鍵特征點位置(圖1),包括眼睛、鼻子、嘴、眉毛和人臉邊緣輪廓點等。
圖1 人臉68個關(guān)鍵特征點位置
基于LBF提取算法采用形狀回歸的方法通過不斷級聯(lián)預測人臉形狀S。對于初始形狀S0,通過逐級預測形狀增量ΔS,逐漸更新S,在第t級中,預測得到的形狀增量ΔSt為
ΔSt=WtΦt(I,St-1)
(1)
式中I為輸入圖像,St-1為前一級得到的人臉形狀,Φt為特征映射函數(shù),Wt為線性回歸矩陣。Φt由I和St-1決定,則t級的人臉形狀為
St=St-1+ΔSt
(2)
對于每個單獨的特征點獨立學習局部特征映射函數(shù),進而提取LBF,然后聯(lián)合所有的局部特征獲得Φt,最后通過線性回歸學習得到Wt,實現(xiàn)人臉特征點的準確定位。
(3)
將全部特征點的LBF串連得到全局特征映射函數(shù)Φt,通過優(yōu)化以下目標函數(shù)最小化學習全局線性回歸矩陣Wt
(4)
全局線性回歸能夠完成全局形狀約束,從而降低因模糊或遮擋引起的局部誤差。算法采用先局部、再整體的思想,對于輸入圖像I,先通過訓練好的隨機森林實現(xiàn)LBF的提取,從而得到特征映射函數(shù)Φt,再利用全局線性回歸矩陣Wt回歸得到中間形狀,并不斷迭代獲得魯棒的人臉68個關(guān)鍵點提取模型。
BP神經(jīng)網(wǎng)絡[14]中的每個神經(jīng)元作為一個單獨的感知器單元,每個單元的輸出值是根據(jù)上一層所有單元的輸出值、當前單元與上一層所有單元的權(quán)值和當前單元的閾值通過激活函數(shù)運算得出的。
假設一個典型的3層BP神經(jīng)網(wǎng)絡的輸入層、隱含層和輸出層的神經(jīng)元數(shù)目分別是N,L,M。X=[x0,x1,…,xN-1]為輸入層的輸入向量,H=[h0,h1,…,hL-1]為隱含層輸出向量,Y=[y0,y1,…,yM-1]為輸出層的實際輸出向量,D=[d0,d1,…,dM-1]為輸出層的目標輸出向量。輸入層神經(jīng)元i和隱含層神經(jīng)元j之間的權(quán)值為wij,而隱含層神經(jīng)元和輸出層神經(jīng)元之間的權(quán)值為wjk,隱含層神經(jīng)元和輸出層神經(jīng)元的閾值分別為φj和φk,則隱含層和輸出層各神經(jīng)元的輸出為
(5)
由于不同頭部姿態(tài)的人臉偏轉(zhuǎn)角度不同,造成人臉特征點位置坐標存在差異,關(guān)鍵特征點間的相對位置特征也會發(fā)生變化,同一姿態(tài)下的人臉特征點間的相對位置具有相似的距離分布特征,不同姿態(tài)下的人臉特征點間的距離分布特征不盡相同。算法結(jié)合基于LBF的人臉關(guān)鍵特征點提取模型,利用BP神經(jīng)網(wǎng)絡能夠?qū)崿F(xiàn)任何復雜非線性映射的分類能力的特點,將人臉68個關(guān)鍵特征點的位置坐標特征作為BP神經(jīng)網(wǎng)絡的輸入向量,在不同頭部姿態(tài)的目標輸出結(jié)果與輸入向量間建立映射關(guān)系,算法的具體訓練過程如下:
1)選定訓練集。使用標準人臉數(shù)據(jù)集訓練人臉特征點提取模型,用訓練好的特征提取模型獲得標準頭部姿態(tài)數(shù)據(jù)集的人臉68個特征點位置坐標集合,作為BP神經(jīng)網(wǎng)絡的輸入訓練集。
2)創(chuàng)建并初始化BP神經(jīng)網(wǎng)絡。創(chuàng)建含有1層輸入層、2層隱含層和1層輸出層的BP神經(jīng)網(wǎng)絡,用接近于0的隨機值設置各層權(quán)值wij,wjk和閾值φj和φk,并設置迭代次數(shù)η、期望誤差ε和學習率α。
3)將訓練集的人臉68個關(guān)鍵特征點位置作為輸入向量X傳入BP神經(jīng)網(wǎng)絡網(wǎng)絡輸入層,并根據(jù)頭部姿態(tài)類別設定預期目標輸出向量D。利用式(5)計算隱含層輸出H,和輸出層的實際輸出向量Y。
4)將實際輸出向量Y中的yk與目標輸出向量D中的dk進行比較,計算出各個網(wǎng)絡層的誤差項,根據(jù)誤差項更新各個網(wǎng)絡層的權(quán)值和閾值。
5)按更新后的權(quán)值與閾值重新計算網(wǎng)絡層輸出向量,判斷輸出均方誤差
(6)
判斷E是否小于期望誤差ε或是否達到迭代次數(shù)η:若是,則停止訓練,保存參數(shù),退出;否則,返回步驟(3)繼續(xù)迭代。
本文實驗部分在計算機開源視覺庫OpenCV上進行。在人臉特征點提取模型訓練階段,使用LFPW數(shù)據(jù)集[15]和HELEN數(shù)據(jù)集[16]的訓練集共同組成的數(shù)據(jù)集,共2 811張人臉圖像訓練隨機森林,生成基于LBF的人臉特征點提取模型,準確提取標準頭部姿態(tài)數(shù)據(jù)集的人臉68個關(guān)鍵特征點位置坐標集合,作為BP神經(jīng)網(wǎng)絡的輸入訓練集。
圖2 人臉68個關(guān)鍵特征點定位效果
在頭部姿態(tài)估計階段,使用CAS-PEAL-R1等數(shù)據(jù)集[17]進行BP神經(jīng)網(wǎng)絡的訓練。在該數(shù)據(jù)集中,將頭部姿態(tài)在yaw方向上分為0°,±15°,±30°,±45°共7個姿態(tài),如圖3所示。選取編號從401~600共200個被試者的1 400張人臉圖像作為實驗數(shù)據(jù)集,進行三折交叉驗證實驗,即將1 400張人臉圖像分為3個子集,采用其中一個子集作為測試集,剩下的兩個子集作為訓練集。對訓練集中的每一張人臉圖像使用已經(jīng)得到的基于LBF的人臉特征點提取模型獲取人臉68個關(guān)鍵特征點坐標,作為BP神經(jīng)網(wǎng)絡的一個輸入向量,并設定對應的目標輸出向量。BP神經(jīng)網(wǎng)絡的迭代次數(shù)設定為10 000次,期望誤差值設定為0.000 1,學習率為0.001。
圖3 CAS-PEAL-R1數(shù)據(jù)集中yaw方向頭部姿態(tài)
3.2.1 CAS-PEAL-R1數(shù)據(jù)集上的實驗結(jié)果
為了方便驗證所提出算法的效果,選取使用相同實驗數(shù)據(jù)集的文獻方法進行對比。文獻[18]使用基于局部Gabor二值模式(local Gabor binary pattern,LGBP)的多視圖人臉,然后將LBF編碼成緊湊的特征直方圖,訓練支持向量機(support vector machine,SVM)分類器來估計頭部姿態(tài);文獻[19]采用基于Gabor特征的隨機森林作為分類技術(shù),利用線性判別分析(linear discriminant analysis,LDA)作節(jié)點分類,提高隨機森林中單棵回歸樹的判別能力,實現(xiàn)頭部姿態(tài)估計。在訓練樣本數(shù)為934,測試樣本數(shù)為466條件下,文獻[18,19]和本文方法的識別率分別為97.14 %,97.23 %,98.57 %,在相同的頭部姿態(tài)實驗數(shù)據(jù)集下,本文方法的頭部姿態(tài)估計準確率更高,取得了更好的效果。
3.2.2 Pointing’04數(shù)據(jù)集上的實驗結(jié)果
為進一步驗證算法的有效性,使用Pointing’04數(shù)據(jù)集[20]進行相同的實驗。該數(shù)據(jù)集由15個被試者的兩組不同情況的圖像組成,每組包含不同光照、膚色差異以及是否佩戴眼鏡等的圖像,如圖4所示。選取yaw方向為0°,±15°,±30°,±45°,pitch方向為0°,±15°,±30°的1 050張人臉圖像,共7個不同yaw方向的偏轉(zhuǎn)角度作為分類標簽,不同pitch方向角度但相同yaw方向角度屬于同一類姿態(tài),進行三折交叉驗證實驗。BP神經(jīng)網(wǎng)絡參數(shù)采用同上的設置,使用平均絕對誤差(mean absolute error,MAE)對算法性能進行評估比較。
圖4 Poingting’04數(shù)據(jù)集中yaw方向頭部姿態(tài)
實驗結(jié)果為:文獻[21]提出了一種利用區(qū)域?qū)ΨQ性來估計頭部姿態(tài)的方法,基于Gabor濾波器和協(xié)方差描述符的有效組合(CovGa),平均絕對誤差為6.24°;文獻[22]基于Fisher核圖像框架分類方法,對于圖像的每個像素計算9維局部描述符,并由局部描述符的Fisher矢量(VoD)編碼生成圖像的全局表示,取得了較好的頭部姿態(tài)估計效果,平均絕對誤差為4.59°;文獻[23]基于方向梯度直方圖(histogram of oriented gradients,HOG)特征提出一種多元標簽分布(multiple label distribution,MLD)的方法,平均絕對誤差為4.24°。本文方法MAE為3.90°,與其他最新的方法相比,頭部姿態(tài)估計的平均絕對誤差更低,在光照變化及遮擋的情況下具有較高的魯棒性。
本文基于LBF的人臉特征點定位方法不需要復雜的人臉形狀等表觀建模以及訓練過程,使用隨機森林回歸模型在局部區(qū)域?qū)W習稀疏的二值化特征,大大減少了運算開銷,解決了人臉特征點定位準確率不足的問題,在人臉偏轉(zhuǎn)角度較大的情況下也能實現(xiàn)關(guān)鍵特征點的精確定位。同時結(jié)合BP神經(jīng)網(wǎng)絡,較現(xiàn)有的深度學習算法如卷積神經(jīng)網(wǎng)絡(convolutional neural network,CNN)[24]等具有結(jié)構(gòu)簡單、實現(xiàn)方便、無需大量的訓練樣本數(shù)據(jù)和運算量等特點,通過利用不同人臉姿態(tài)的關(guān)鍵特征點的相對距離變化等簡單特征,而無需復雜的特征提取過程和額外的硬件要求,簡單高效地實現(xiàn)了頭部姿態(tài)的準確估計。下一步將對更加精細的頭部偏轉(zhuǎn)角度及其他方向的頭部姿態(tài)的估計進行研究。