章 惠,張娜娜,黃 俊
(1.上海海洋大學(xué)信息學(xué)院,上海 201306;2.上海建橋?qū)W院信息技術(shù)學(xué)院,上海 201306)
(?通信作者電子郵箱nanazhang2004@163.com)
近幾年,計算機視覺在人臉識別、人臉檢測等方面的應(yīng)用越來越廣泛,逐漸頭部姿態(tài)估計算法的研究應(yīng)用成為了計算機視覺的熱點話題之一。頭部姿態(tài)估計指計算機系統(tǒng)對外部輸入的圖像文件或者視頻文件進行解析和預(yù)測,從而確定用戶的頭部在三維空間中的位置和姿態(tài)參量。通常頭部姿態(tài)的參量是指用戶頭部在三維空間中的旋轉(zhuǎn)角度,分別為左右旋轉(zhuǎn)產(chǎn)生的偏航角(Yaw)、平面內(nèi)旋轉(zhuǎn)產(chǎn)生的滾動角(Roll)和上下旋轉(zhuǎn)產(chǎn)生的俯仰角(Pitch)[1]。頭部姿態(tài)估計在疲勞狀態(tài)檢測、智慧教室、活體檢測[2]等領(lǐng)域有著廣泛的應(yīng)用。
近年來,國外的麻省理工學(xué)院人工智能實驗室、國內(nèi)的浙江大學(xué)計算機學(xué)院等研究單位都在開展對頭部姿態(tài)估計的算法研究。目前已經(jīng)出現(xiàn)了多種頭部姿態(tài)估計算法,如基于多陣列器分類、基于非線性回歸、基于三維圖像等方法[3-4],根據(jù)是否需要定位用戶的面部關(guān)鍵特征點,可以大致分為基于人臉外觀和基于模型的兩種方法[5]。基于模型的頭部姿態(tài)估計方法主要是通過計算機系統(tǒng)檢測并定位用戶面部的關(guān)鍵特征點如唇部的唇峰和嘴角、眼周輪廓、鼻尖等,利用三維空間和二維圖像之間的映射關(guān)系進行頭部姿態(tài)分類。基于人臉外觀的方法則相反,是通過模型訓(xùn)練確定輸入的圖像與已標記的圖像的相似程度來進行頭部姿態(tài)估計。
基于模型的方法中,Chun 等[6]對實驗處理后獲得的正向面部特征點進行跟蹤,用模板匹配方法通過眼角和鼻子的位置估計頭部姿態(tài)。閔秋莎等[7]結(jié)合了Adaboost 算法、橢圓膚色模型和Hough 圓檢測法來獲得人臉區(qū)域,通過面部特征點的空間位置實現(xiàn)頭部姿態(tài)的判斷;但是該方法的人臉檢測率不高,當頭部轉(zhuǎn)動的幅度較大時,雙眼易被遮擋,使得人眼定位的準確率下降或無法定位人眼。為了避免因無法定位面部特征點而使得頭部姿態(tài)估計失效的問題,Ranjan 等[8]在卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的基礎(chǔ)上進行改進,提出了可以檢測面部、用戶性別和頭部姿態(tài)的Hyper Face 網(wǎng)絡(luò),該方法在自然環(huán)境下可以有效地檢測面部和判別用戶的頭部姿態(tài),但是改進后的方法誤差比較大。賀飛翔等[9]將檢測到的人臉送入卷積神經(jīng)網(wǎng)絡(luò)進行表觀建模。李成龍等[10]使用卡爾曼濾波估計深度圖像中用戶頭部的位置,隨機森林是利用多棵二叉樹建立的分類器,基于上述兩種方法結(jié)合的頭部姿態(tài)估計方法可以很好地處理光照變化、遮擋情況下等問題。文獻[9-10]方法用于訓(xùn)練和測試的數(shù)據(jù)集樣本數(shù)較少,訓(xùn)練僅依賴于標準公開數(shù)據(jù)集,這使得網(wǎng)絡(luò)結(jié)構(gòu)的泛化能力較弱。Yang 等[11]提出了學(xué)習(xí)單個圖像的細粒度結(jié)構(gòu)聚集網(wǎng)絡(luò)(Fine-Grained Structure Aggregation Net,F(xiàn)SA-Net)的頭部姿態(tài)估計方法,該方法在年齡分類算法SSR-Net(Soft Stagewise Regression Network)的基礎(chǔ)上優(yōu)化了特征融合,對頭部姿態(tài)角度分類,并將完成細粒度結(jié)構(gòu)映射和記分功能的特征圖聚合,形成新的特征圖。
上述方法存在因面部特征點定位不準確、外界環(huán)境等影響因素造成的頭部姿態(tài)估計偏差或失效,訓(xùn)練數(shù)據(jù)集較少,網(wǎng)絡(luò)泛化能力較弱等問題。針對這些不足,本文提出了優(yōu)化LeNet-5網(wǎng)絡(luò)的多角度頭部姿態(tài)估計方法,該方法是基于人臉外觀方法的頭部姿態(tài)估計方法。本文對傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的深度、卷積核大小、池化層等方面進行優(yōu)化提高網(wǎng)絡(luò)的提取特征能力,引入AdaBound優(yōu)化器,自建頭部姿態(tài)數(shù)據(jù)集,對常見的九類頭部姿態(tài)進行訓(xùn)練分類。實驗結(jié)果表明,所優(yōu)化網(wǎng)絡(luò)有較好的魯棒性,運行速度也有所提高。
近年來,深度學(xué)習(xí)在自然語言處理、計算機視覺等方向展現(xiàn)了優(yōu)秀的性能,各個研究機構(gòu)和學(xué)者對其展開了研究學(xué)習(xí)。其中美國著名學(xué)者LeCun[12]提出的CNN已經(jīng)成為深度學(xué)習(xí)中的代表算法之一。由于它的泛化能力優(yōu)于傳統(tǒng)人工設(shè)計的算法,CNN在語言識別、圖像修復(fù)和物體識別等領(lǐng)域有了較為成熟的研究成果[13-15]。CNN 通常分為輸入層、卷積層、采樣層(或池化層)和全連接層,結(jié)構(gòu)如圖1所示。

圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Structure of CNN
1)卷積層。卷積層的作用是提取圖像文件中的特征。卷積運算是指卷積核對感受野內(nèi)的輸入特征做矩陣元素的乘法運算,運算結(jié)果和偏置項相加,卷積層利用該運算方法完成特征提取。不同大小的卷積核產(chǎn)生的感受野大小也不同,較大的卷積核其產(chǎn)生的感受野較大,而較小的卷積核產(chǎn)生的感受野則較小。卷積運算的計算式為:

其中:i和j分別表示第i個輸入特征圖和第j個輸出特征圖;k表示卷積核的大小;b表示偏置項;l表示卷積層的層數(shù)位置;Mj表示感受野;f(?)則為激活函數(shù)。
2)池化層。池化層則是通過最大池化或平均值池化的方法將上層輸出的特征圖作為輸入圖像再次進行特征信息的過濾篩選,減少特征圖中參數(shù)數(shù)量的同時保留了重要特征。
3)全連接層。此處的全連接層相當于傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)中的隱藏層,它將池化后的特征圖進行非線性的組合輸出,通過激勵函數(shù)完成學(xué)習(xí)目標。
目前,許多研究學(xué)者對CNN 進行改進,不斷深化網(wǎng)絡(luò)結(jié)構(gòu)使其在分類、識別等復(fù)雜模型上的準確率和網(wǎng)絡(luò)性能有所提高,例如GoogLeNet、AlexNet、VGGNet(Visual Geometry Group Net)、深度殘差網(wǎng)絡(luò)(deep Residual Network,ResNet)等網(wǎng)絡(luò)。對于卷積神經(jīng)網(wǎng)絡(luò)而言,當神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)開始復(fù)雜化時,網(wǎng)絡(luò)中學(xué)習(xí)的參數(shù)數(shù)和樣本訓(xùn)練數(shù)增加,整體網(wǎng)絡(luò)運行速度變慢;反之,較為簡單的網(wǎng)絡(luò)結(jié)構(gòu)則會存在準確率不高的問題。因此,如何設(shè)計一個合理的卷積神經(jīng)網(wǎng)絡(luò)成為了研究中的一個重要問題。
LeNet-5網(wǎng)絡(luò)模型是最早出現(xiàn)的卷積神經(jīng)網(wǎng)絡(luò)之一,它的基本結(jié)構(gòu)包括了2 層卷積層、2 層池化層和1 層全連接層,在卷積層和池化層中用不同的采樣大小對輸入圖像進行特征提取。LeNet-5 網(wǎng)絡(luò)在識別手寫數(shù)字和識別文檔這兩類生活場景中應(yīng)用廣泛,同時這也成為了該網(wǎng)絡(luò)模型在生活中最早的應(yīng)用[12]。
為了解決因特征點定位失效而無法進行頭部姿態(tài)估計的問題,同時提高網(wǎng)絡(luò)的泛化能力,本文提出了改進LeNet-5 網(wǎng)絡(luò)的頭部姿態(tài)估計方法,在設(shè)計網(wǎng)絡(luò)結(jié)構(gòu)時從以下幾方面考慮:
1)考慮網(wǎng)絡(luò)的層數(shù)、深度。
原網(wǎng)絡(luò)的層數(shù)較少,太淺的網(wǎng)絡(luò)通常泛化能力不強,且對輸入圖像的特征提取能力不強,通過增加網(wǎng)絡(luò)的深度可以提高網(wǎng)絡(luò)的特征提取能力,但是網(wǎng)絡(luò)深度太深容易造成過擬合的現(xiàn)象。因此,針對網(wǎng)絡(luò)的泛化能力,網(wǎng)絡(luò)深度的設(shè)計也十分重要。
2)考慮卷積核、激活函數(shù)對網(wǎng)絡(luò)的影響。
卷積核的大小對訓(xùn)練過程中的全局特征和局部特征的學(xué)習(xí)有較大的影響。過大的卷積核會導(dǎo)致參與運算的參數(shù)數(shù)過多,增加計算量,難以訓(xùn)練;相反過小的卷積核不容易提取全局特征,影響訓(xùn)練結(jié)果,造成訓(xùn)練誤差較大,準確率下降[16-17]。因此,針對網(wǎng)絡(luò)的特征提取能力和性能,本文優(yōu)化了卷積核的大小。
3)考慮網(wǎng)絡(luò)的分類輸出。
為了避免網(wǎng)絡(luò)的過擬合、提高網(wǎng)絡(luò)的收斂速度,改進了全連接層和輸出層,以實現(xiàn)多分類的目的。
改進后的網(wǎng)絡(luò)結(jié)構(gòu)包含7 層卷積層Conv_1、Conv_2、Conv_3、Conv_4、Conv_5、Conv_6 和Conv_7,全連接層Full_1、Full_2和輸出層Output。具體的網(wǎng)絡(luò)結(jié)構(gòu)如表1所示,網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖2所示。

圖2 優(yōu)化后網(wǎng)絡(luò)的結(jié)構(gòu)Fig.2 Structure of optimized network

表1 優(yōu)化后網(wǎng)絡(luò)的結(jié)構(gòu)Tab.1 Structure of optimized network
在優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)時,卷積核的設(shè)計好壞決定了特征提取的優(yōu)劣、網(wǎng)絡(luò)泛化能力的強弱和收斂速度的快慢。改進后的神經(jīng)網(wǎng)絡(luò)用了3×3的卷積核代替原先網(wǎng)絡(luò)中的5×5的卷積核。借鑒VGGNet16 的網(wǎng)絡(luò)結(jié)構(gòu)[18],使用卷積組可以減少參數(shù)量從而提高模型計算速度,同時又能保證感受野大小不變。利用連續(xù)的3×3 大小的卷積核運算后可以學(xué)習(xí)較大的全局特征,獲取更多的圖像細節(jié)特征。單個3×3的卷積核對頭部轉(zhuǎn)動的角度變化比較敏感,容易捕獲局部的較為精細的特征信息。
激活函數(shù)選擇用修正線性單元(Rectified Linear Unit,ReLU)激活函數(shù)代替原網(wǎng)絡(luò)層中的Sigmod函數(shù)。該激活函數(shù)有單側(cè)抑制作用,可減少模型訓(xùn)練的時間,加快模型的收斂,有效緩解過擬合問題[19]。ReLU函數(shù)的計算式為:

卷積網(wǎng)絡(luò)中的池化層可以提高模型的計算速度、提取特征的魯棒性和壓縮模型大小,實現(xiàn)降維目的。本文使用卷積操作代替池化操作,采樣步長增加為2,有利于提高模型的計算速度、優(yōu)化模型的非線性能力。
為了加快模型的收斂,選擇了全連接層而不是全局平均池化層。相較傳統(tǒng)的LeNet-5網(wǎng)絡(luò),將全連接層增加到2層。
Dropout正則化[20]是指神經(jīng)網(wǎng)絡(luò)在向前傳播的時候,按照一定的概率讓某部分神經(jīng)元停止工作,即隨機把(·)%的神經(jīng)元的激活偏值為0,在權(quán)重更新計算時,不會對凍結(jié)的神經(jīng)元進行計算操作,從而獲得隨機的網(wǎng)絡(luò)結(jié)構(gòu)。沒有增加Dropout正則化時的全連接層計算式如下:

其中:i表示第i個輸入特征圖;l表示卷積層的層數(shù)位置;ω表示權(quán)值;x表示輸入圖像;b表示偏置;f(?)則為激活函數(shù),激活函數(shù)選擇ReLU函數(shù)。
增加了Dropout正則化后的全連接層計算式則為:

在全連接層增加Dropout可以避免過擬合現(xiàn)象的發(fā)生,提高神經(jīng)網(wǎng)絡(luò)的性能,減少對局部特征的依賴性,增強訓(xùn)練模型的泛化性。本文改進后的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置Dropout的值為0.3。
輸出層采用了非線性分類中的Softmax 回歸模型[17]作為多分類器。Softmax 函數(shù)是在Logistic 函數(shù)的基礎(chǔ)上推廣衍生而來的,可以支持實現(xiàn)多分類,具體計算式為:

其中,yi表示第j個輸出特征圖,網(wǎng)絡(luò)用Softmax 函數(shù)對輸入圖片的角度分類。
回歸模型算法的評價指標常用的有均方誤差(Mean Squared Error,MSE)、均方根誤差(Root Mean Squared Error,RMSE)、平均絕對誤差(Mean Absolute Error,MAE)和交叉熵(Cross Entropy,CE)。均方誤差、均方根誤差和平均絕對誤差計算相似,是通過方差來反映正確值與預(yù)測值之間的差異程度。交叉熵是指通過概率分布(預(yù)測值)來計算表示概率分布(正確值)的困難程度,交叉熵的值越小則表示兩個概率的分布越近。MSE、RMSE、MAE、CE計算式分別為:

其中:ai表示期望輸出值即正確值表示實際輸出值即預(yù)測值;m表示采樣數(shù)量;x表示輸入數(shù)據(jù),p(x)表示物體分類真實值,q(x)表示概率分布值。因為one-hot 的label 特殊性,交叉熵損失函數(shù)Loss又可以進一步簡化為:

相較于另外三種誤差評價法,交叉熵損失函數(shù)曲線呈單調(diào)性,損失值越大,梯度越大,有助于梯度下降反向傳播和模型優(yōu)化。
本文的實驗數(shù)據(jù)集分為公共數(shù)據(jù)集和自建數(shù)據(jù)集,其中公共數(shù)據(jù)集為Pointing04 數(shù)據(jù)集和CAS-PEAL-R1 數(shù)據(jù)集。CAS-PEAL-R1數(shù)據(jù)集包含每人21張頭部姿態(tài)變化圖像,共計21 840 張圖片;Pointing04 數(shù)據(jù)集共有15 組圖像,每組包括了同一人186 張頭部姿態(tài)變化的圖像。公共數(shù)據(jù)集部分示例如圖3所示。

圖3 部分公共數(shù)據(jù)集圖片F(xiàn)ig.3 Some public dataset images
為了解決公共數(shù)據(jù)集的訓(xùn)練樣本偏少、自然遮擋情況下訓(xùn)練樣本不足、影響網(wǎng)絡(luò)模型的泛化能力等問題,使用了圖4所示的方法采集數(shù)據(jù),增加訓(xùn)練和測試集,組成了自建數(shù)據(jù)集。自建數(shù)據(jù)集中添加了遮擋頭發(fā)、做出夸張表情、佩戴眼鏡等動作的數(shù)據(jù),部分自建數(shù)據(jù)集示例如圖5所示。

圖4 自建數(shù)據(jù)集采集方法Fig.4 Collection method of self-built dataset

圖5 部分自建數(shù)據(jù)集圖片F(xiàn)ig.5 Some self-built dataset images
3.2.1 樣本設(shè)置
本實驗主要研究用戶頭部姿態(tài)的九種分類情況,即向前正視、抬頭仰視、低頭俯視、左轉(zhuǎn)側(cè)視、右轉(zhuǎn)側(cè)視、左上仰視、左下俯視、右上仰視、右下俯視這九個方向。實驗主要針對Yaw方向和Pitch 方向兩個角度,由于自建數(shù)據(jù)集和公共數(shù)據(jù)集的頭部姿態(tài)角度并不統(tǒng)一,且考慮到在實際生活中頭部姿態(tài)的變化角度范圍,本文對這九種姿態(tài)進行分類識別。具體頭部姿態(tài)角度分類結(jié)果如表2所示。

表2 頭部姿態(tài)角度分類Tab.2 Head pose angle classification
對數(shù)據(jù)集預(yù)處理,可以減少無關(guān)因素對模型訓(xùn)練的影響,達到增強數(shù)據(jù)提高模型準確率的目的。使用文獻[21]中提到多任務(wù)卷積神經(jīng)網(wǎng)絡(luò)(Multi-Task Cascaded Convolutional Network,MTCNN)檢測人臉感興趣區(qū)域(Region Of Interest,ROI)并裁剪,將裁剪后的圖片歸一化為64×72,圖像預(yù)處理后的結(jié)果如圖5所示。
取CAS-PEAL-R1 數(shù)據(jù)集、Pointing04 數(shù)據(jù)集和自建數(shù)據(jù)集總量的96%作為測試集,共44 866 張,測試集共1 869 張,為數(shù)據(jù)集總量的4%,分布如表3所示。

表3 數(shù)據(jù)集樣本分布Tab.3 Distribution of dataset samples
3.2.2 環(huán)境和評價指標
本實驗使用Python3.6 環(huán)境編程、Tensorflow-1.13.1、OpenCV-4.1.2,硬件環(huán)境為Intel i5-9300H、GTX 1660 TI,內(nèi)存為8 GB。由于實驗數(shù)據(jù)和參數(shù)較多,實驗優(yōu)化器選擇了AdaBound 優(yōu)化器[22]。訓(xùn)練迭代次數(shù)為10 000 次,批處理參數(shù)設(shè)置為100,學(xué)習(xí)率設(shè)置為0.001。在訓(xùn)練的前200 次迭代中AdaBound 優(yōu)化器的精度有明顯的提高,在訓(xùn)練后期,該優(yōu)化器泛化能力較好,收斂較快。采用準確率作為實驗的評價指標,計算式為:

其中:A表示準確率;Npre表示預(yù)測數(shù);Nact表示樣本數(shù)。
在實驗過程中,本文方法在測試集上的平均準確率達到98.7%,測試結(jié)果如圖6 所示,自建數(shù)據(jù)集在左上仰視、左下俯視、右上仰視、右下俯視的數(shù)據(jù)集數(shù)量相較水平位置的數(shù)據(jù)數(shù)量較少,準確率較低。左上仰視的分類被錯分的情況偏多,準確率為97.5%。將模型運用到攝像頭實時頭部姿態(tài)上,每秒可處理幀數(shù)達到22~29,滿足實時系統(tǒng)要求。

圖6 預(yù)處理后的圖像Fig.6 Pre-processed images

圖7 測試集分類準確率Fig.7 Test set classification accuracy
將本文方法與幾種不同方法做對比,其中,包括基于模型的Adaboost+Hough[7]、局部二值特征(Local Binary Pattern,LBP)+BP(Back Propagation)方法[23];基于CNN 的熱圖定位(CNN+Heatmaps)方法[24]、深度卷積網(wǎng)絡(luò)(Deep Convolutional Neural Network,DCNN)[5]、FSA-Net[11]等。Adaboost+Hough 方法通過定位人眼、鼻子的位置,將位置信息與正臉的頭部姿態(tài)信息進行對比,達到頭部姿態(tài)估計的目的。FSA-Net方法被提出優(yōu)化SSR-Net。LBP+BP方法通過LBP和隨機森林定位人臉68 個特征點,利用多層前饋BP 神經(jīng)網(wǎng)絡(luò)作為分類器,對頭部姿態(tài)分類。CNN+Heatmaps 方法利用CNN 回歸頭部估計姿態(tài),對輸入的2D 熱圖圖像定位面部5 個特征點進行定位。DCNN 方法,采用多變量標簽分布作為分類器學(xué)習(xí)頭部姿態(tài)。不同方法在公共數(shù)據(jù)集CAS-PEAL-R1 數(shù)據(jù)集和Pointing04 數(shù)據(jù)集上進行實驗對比的結(jié)果如表4所示。

表4 不同方法的準確率對比Tab.4 Accuracy comparison of different methods
經(jīng)過比較可以看出,Adaboost+Hough 方法、LBP+BP 方法方法和CNN+Heatmaps 方法依賴面部特征點,其中CNN+Heatmaps 方法對于面部除該5 個標志點外的學(xué)習(xí)能力較差,對自然環(huán)境下、大角度或大面積遮擋的頭部姿態(tài)估計的準確性不高且容易失效。針對該問題,本文方法不需要定位面部關(guān)鍵點,泛化能力較好。FSA-Net方法不需要面部特征點的定位,對深度圖像、實時視頻圖像的細節(jié)捕捉能力較好,且運行內(nèi)存小,但是該方法對遮擋下的圖像分類的準確率不高。改進的LeNet 方法同樣不需要定位面部特征點,對水平前視、仰視、俯視、左轉(zhuǎn)、右轉(zhuǎn)識別的準確率較高,對于其他角度的識別容易分類錯誤。從對比結(jié)果看,本文方法的準確率略高于其他對比方法。經(jīng)過實驗驗證,本文方法在戴眼鏡、頭發(fā)部分遮擋等情況下也能正確分類,具有較好的魯棒性,通過實時攝像頭運行驗證,實時性約在每秒22~29幀,運行速度能夠滿足現(xiàn)實應(yīng)用的要求。
本文通過加深原網(wǎng)絡(luò),用多個卷積組來替代較大卷積核的卷積層,改進池化層,在全連接層中增加正則化等方式優(yōu)化LeNet-5 網(wǎng)絡(luò)。同時在網(wǎng)絡(luò)中加入了AdaBound 優(yōu)化器,該優(yōu)化器對超參數(shù)的敏感度較低,可以極大地節(jié)約調(diào)參時間,并自建數(shù)據(jù)集,增強了網(wǎng)絡(luò)的泛化能力。該頭部姿態(tài)估計方法不依賴于人臉定位點的檢測,有效地提高了計算機在外界環(huán)境因素下的頭部姿態(tài)判斷效果。在實時系統(tǒng)實驗下,運行速度較好,在面部夸張表情、頭發(fā)部分遮擋、戴眼鏡等情況下表現(xiàn)出較好的魯棒性,能簡單高效地實現(xiàn)九分類頭部姿態(tài)估計。由于訓(xùn)練數(shù)據(jù)集較為單一,向左方向的仰視和俯視、向右方向的仰視和俯視數(shù)據(jù)集較少,后續(xù)將對這些方向以及精細角度的頭部姿態(tài)估計進行研究。