陳錦濤, 石守東, 鄭佳罄, 胡加鈿, 房志遠
(寧波大學 信息科學與工程學院,浙江 寧波 315211)
當前我國青少年近視患病率呈高發(fā)態(tài)勢,職業(yè)性肌肉骨骼疾患患者日益增多。有證據(jù)表明,青少年近視主要由其不良坐姿所引發(fā)的近距離用眼導(dǎo)致,而職業(yè)性肌肉骨骼疾患也同樣與長期保持不良坐姿密切相關(guān)。而坐姿的研究離不開頭部以及肩部姿態(tài)的估計,因此該研究在人機交互、醫(yī)療健康、交通安全等領(lǐng)域具有較高的應(yīng)用價值。
對于坐姿中頭部以及肩部姿態(tài)的研究方法,單獨進行頭部姿態(tài)的研究較多,對肩部以及兩者結(jié)合對于坐姿的研究較少。其研究方法主要分為兩大類:基于穿戴式傳感器方法以及基于圖像采集法。Kinect利用多個傳感器快速定位人體的20個關(guān)鍵點并追蹤,還能實時計算空間深度信息。文獻[1]使用Kinect獲取人體關(guān)節(jié)點,并基于隱馬爾可夫模型(hidden Markov model,HMM)對人姿態(tài)進行識別。文獻[2]用Kinect由低分辨率3D數(shù)據(jù)通過誤差的預(yù)期分布模型與局部加權(quán)回歸方法組合來移除異常值并構(gòu)建高分辨率面部模型。文獻[3]提出一種三角形表面補丁描述符(triangle surface patch descriptor,TSP)估計頭部方向和位置。文獻[4]通過雙支路多級卷積神經(jīng)網(wǎng)絡(luò)處理二維圖像,基于部分親和字段(partial affinity fields,PAF)分段分布進行各部分的鏈接,第一分支估計人體的二維置信圖,第二分支計算各部位的關(guān)聯(lián)度,得到多個面部點,識別效果好。
文獻[5]基于模糊膚色分類器和顏色特征的人臉追蹤,通過高并行圖形處理器(graphics proceessing unit,GPU)計算、分類器權(quán)重預(yù)計算等方法提高設(shè)備在高分辨率視頻圖像中穩(wěn)定追蹤面部的能力,并在3D圖像中由對面部位置估計實現(xiàn)對頭部運動的追蹤。文獻[6]用機器視覺技術(shù)實現(xiàn)了實時分析人類坐姿圖像,并依從一定的規(guī)律抓取視頻流中的兩個幀,以定位用戶的眼睛、嘴巴、肩膀,將定位結(jié)果綜合并于基準坐姿圖像對比以確定屬于何種坐姿類型。
利用攝像頭采集二維圖像的方法成本低、易推廣。利用神經(jīng)網(wǎng)絡(luò)算法對圖像中頭部以及肩部進行檢測在近些年涌現(xiàn)出一些成果,例如利用監(jiān)督下降方法(supervised descent method,SDM)、卷積神經(jīng)網(wǎng)絡(luò)(convolutional nenral network,CNN)、深度神經(jīng)網(wǎng)絡(luò)(deep neural network,DNN)等算法對頭部進行估計以及OpenPose對人體關(guān)鍵點進行檢測的理論都已成熟。
利用神經(jīng)網(wǎng)絡(luò)算法對采集后的圖像進行處理,再對姿態(tài)進行判斷,既可以解決穿戴式傳感器穿戴繁瑣的缺點,又可以解決Kinect價格高昂的缺點,為判斷姿態(tài)的實時性以及低成本提供了可能。
人臉對齊即人臉關(guān)鍵點定位,目標是自動定位面部關(guān)鍵點,目前被應(yīng)用在許多主流的人臉分析任務(wù)中:表情識別[7]、人臉驗證與識別[8]、人臉動作捕捉[9]以及人臉屬性分析[10]等。近年來,大量人臉對齊方法涌現(xiàn)。在眾多方法中,級聯(lián)回歸[11~15]方法實現(xiàn)了很好的人臉對齊結(jié)果。級聯(lián)回歸的方法是通過回歸關(guān)鍵點位置處提取的特征從而逐步逼近真實關(guān)鍵點位置。
SDM[15]是眾多級聯(lián)回歸方法中最有效的方法之一。屬于解決非線性最小二乘(non-linear least squares,NLS)問題的一種方法,利用一級接一級的學習矢量回歸函數(shù)來對齊人臉,通過不斷估計形態(tài)增量來持續(xù)的精細化人臉形狀。其基本內(nèi)容就是特征映射到偏移量。
SDM算法對均值人臉的標記點特征進行計算從而提取出方向梯度直方圖(histogram of oriented gridients,HOG)特征,串聯(lián)所有的人臉特征點從而得出樣本特征向量。從而求得線性方程lx=R的解。
HOG為將被檢測圖像的部分區(qū)塊梯度方向直方圖來組成圖像的特征。因梯度主要表現(xiàn)在圖像中物體的邊緣位置,所以對采集圖像的質(zhì)量要求不高,對各種鏡頭畸變、透視變化等干擾具有較強的魯棒性。并且HOG特征具有不易受光線環(huán)境干擾的優(yōu)點,使得在復(fù)雜光線環(huán)境下還能正確識別檢測人體面部姿態(tài)。
HOG特征的提取過程如下:
1)將待提取特征的輸入圖像進行標準歸一化,使圖片中光照的影響程度降到較低的水平;2)對于整幅圖像中的每個像素,都需要求出這個像素的梯度方向和幅值,數(shù)學描述如式(1);3)將圖片中每個像素以長寬各8個像素劃分區(qū)域,對于每一個64像素的區(qū)域進行梯度的統(tǒng)計加權(quán)投影;4)對每個劃分區(qū)域進行歸一化處理,去除干擾信息;5)對于圖像中的各個塊都進行HOG的統(tǒng)計,轉(zhuǎn)換為下一步分類需要使用的特征向量。式(1)如下
(1)
式中Gradx,Grady分別為該像素橫向和縱向的梯度。
由于面部特征點的HOG維度較高,計算時間過長,因此本文使用了主成分分析(principal component analysis,PCA)法降低數(shù)據(jù)的維度,加快運行速度提高訓練效率。該方法的具體步驟如下:
首先定義一個貢獻值C,也稱為主成分比重,其定義為
(2)
式中all為初始待降維特征向量個數(shù);C值通常取85 %以上,經(jīng)測試本文取97 %。
對于投影后的n(n (3) 式中m為數(shù)據(jù)集個數(shù),x為數(shù)據(jù)集X中數(shù)據(jù)。 對于頭部動作種類,文獻[16]和文獻[17]分為6種,分別為:前傾Pf,后仰Pb,左轉(zhuǎn)Yl,右轉(zhuǎn)Yr,左偏Rl,右偏Rr,并給出了相應(yīng)判斷標準。 目前常用的頭部位姿表示法主要有兩種:歐拉角及面部朝向。因為面部朝向方法無法準確描述頭部的姿態(tài),因此本文利用POSIT算法計算出頭部歐拉角,設(shè)定閾值進行頭部位姿估計。該算法理想情況下可實現(xiàn)的檢測角度范圍如表1所示。 表1 POSIT算法檢測范圍 POSIT算法利用SDM算法中的少數(shù)代表性特征點對頭部的歐拉角進行計算。本文中確定的少數(shù)代表性特征點分別為右眼右眼角、右眼左眼角、左眼左眼角、左眼右眼角、鼻尖、左嘴角、右嘴角。此7個特征點在人臉各個角度都能較完整反映頭部位置關(guān)系。 假設(shè)未知的頭部姿態(tài)旋轉(zhuǎn)矩陣R與平移矢量T定義如下 (4) 假設(shè)世界坐標系中點(Xw,Yw,Zw)通過推導(dǎo)得出 (5) 式中s為比例參數(shù),x,y為圖像中坐標位置。代入7個特征點三維空間坐標后求出R1以及R2,通過R1×R2求得R3。通過迭代最終求解出R與T,最終得到三個方向歐拉角 Yaw=arctan2(R32,R33) (6) (7) Roll=arctan2(R21,R11) (8) 利用文獻[16]和文獻[17]中6個頭部姿態(tài)方向的標準對頭部歐拉角進行閾值設(shè)定,最終得到頭部姿態(tài)集合 HA={null,Pf,Pb,Yl,Yr,Rl,Rr} (9) OpenPose使用的Coco數(shù)據(jù)集產(chǎn)生的模型文件最多能檢測到人體19個關(guān)鍵點并進行連線。如圖1所示。 圖1 OpenPose檢測關(guān)鍵點 由于本文僅用于判斷坐姿下的肩部姿態(tài),因此對檢測模型進行優(yōu)化,僅需1號、2號、5號關(guān)鍵點用于肩部姿態(tài)的判斷。利用OpenPose算法對優(yōu)化后的模型進行關(guān)鍵點檢測。再利用2號和5號關(guān)鍵點連線與水平的夾角來判斷是否出現(xiàn)雙肩高度不一致。由于考慮到高低肩等因素,將夾角閾值范圍設(shè)定為5°。在圖像坐標系下,Δx為5號關(guān)鍵點和2號關(guān)鍵點水平方向坐標差;Δy為5號關(guān)鍵點和2號關(guān)鍵點豎直方向坐標差。對于兩類肩部姿態(tài),判斷標準分類如下:左肩高右肩低:arctan(Δy/Δx)<5°;右肩高左肩低:arctan(Δy/Δx)>5°。 系統(tǒng)基于Windows10系統(tǒng)、Visual Studio(VS)2017,OpenCV3設(shè)計,內(nèi)存為4GB,實驗分為兩部分:頭部姿態(tài)的估計以及肩部姿態(tài)的估計。最終合并姿態(tài)進行姿態(tài)判斷。 將攝像機采集到的單幀坐姿圖像輸入,利用SDM算法對人臉進行標定,標定結(jié)果如圖2。 圖2 SDM人臉標定結(jié)果 如圖2所示,SDM算法成功標定臉部關(guān)鍵點,并且關(guān)鍵點清晰。由于本文使用PCA法進行降維操作,此處選取300張人臉圖片對傳統(tǒng)SDM算法與本文算法進行比較,比較結(jié)果如表2所示。 表2 傳統(tǒng)SDM算法與改進算法比較結(jié)果 本文方法在漏檢率上雖有小幅提升,但平均耗時明顯降低。對于實時坐姿檢測而言,改進后的方法漏檢率仍然符合要求,但檢測平均耗時降低后相比傳統(tǒng)SDM算法更符合實時性。 獲取臉部關(guān)鍵點后,利用POSIT算法對頭部歐拉角進行計算,分別得出Yaw,Roll和Pitch三個方向歐拉角。分別對6種頭部姿態(tài)的300張圖像進行頭部姿態(tài)估計,得出結(jié)果如表3所示。 表3 頭部姿態(tài)估計效果 本文方法在耗時以及正確率上都有較好的表現(xiàn),但由于部分圖片中人物眼鏡以及頭發(fā)的遮擋導(dǎo)致算法無法檢測到人臉關(guān)鍵點從而造成誤檢,但正確率以及誤檢率都可以接受、且檢測效果良好。 將預(yù)處理后的圖像利用OpenPose算法進行肩部關(guān)鍵點檢測,檢測關(guān)鍵點后對其進行連線。檢測結(jié)果如圖3。 圖3 OpenPose檢測結(jié)果 如圖3所示,算法成功檢測出1號、2號、5號關(guān)鍵點,且關(guān)鍵點清晰,可用于后續(xù)肩部姿態(tài)估計。 得到肩部關(guān)鍵點后,利用坐標信息計算其連線相對水平夾角進行計算,最終對肩部姿態(tài)進行估計。分別對2種肩部姿態(tài)的300張圖像進行肩部姿態(tài)估計,得出結(jié)果如表4所示。 表4 肩部姿態(tài)估計效果 % 由于圖片中部分人物服飾與背景相近,導(dǎo)致一定程度上無法正確定位肩部關(guān)鍵點從而造成誤檢。OpenPose算法定位出的關(guān)鍵點較準確,因此正確率較高。 基于6種頭部姿態(tài)以及2種肩部姿態(tài),結(jié)合可細分出12種更詳細姿態(tài),例如頭部前傾同時肩部左高右低的姿態(tài)。再加上標準姿態(tài),共計有21種姿態(tài)。對20個志愿者各采集21種不同姿態(tài)的圖像,樣本考慮了年齡分布和性別差異,40歲以上占比30 %,20~30歲占比50 %,女性占比50 %。使用上文方法對采集的圖像進行姿態(tài)估計,估計結(jié)果分類為4大姿態(tài),分別為標準姿態(tài)、頭部錯誤姿態(tài)、肩部錯誤姿態(tài)以及頭部肩部同時錯誤姿態(tài),估計結(jié)果如圖4。 圖4 姿態(tài)估計準確率 實驗結(jié)果良好,識別正確率均在90 %以上??梢钥闯?,對肩部的姿態(tài)的識別效果較好,當肩部服裝與背景顏色相近時會造成小概率漏檢現(xiàn)象,但總體對肩部姿態(tài)的識別準確率較高,在95 %以上;頭部姿態(tài)識別時,圖片中人物面部頭發(fā)遮擋較多以及眼鏡的存在造成漏檢現(xiàn)象,使得準確率降低,另外,頭部運動的偏轉(zhuǎn)角度過大也會降低檢測的正確率,但準確率依舊高達90 %以上。 本文設(shè)計的方法具有精度高同時檢測速率快等優(yōu)點,滿足生活中對坐姿實時判斷的需求。利用改進SDM算法檢測人臉關(guān)鍵點用于頭部姿態(tài)的判斷既降低傳統(tǒng)方法中使用穿戴傳感器檢測的成本以及不便性,又同時保證了檢測精度和速率;同時利用OpenPose算法檢測肩部保證了坐姿狀態(tài)下肩部姿態(tài)估計的準確性。實驗證明,該方法準確有效。但本文的方法沒有很好解決頭部眼鏡等遮擋的問題以及肩部旋轉(zhuǎn)的問題,接下來的工作可考慮利用雙目攝像頭結(jié)合深度信息進一步提高檢測準確性。2 頭部姿態(tài)估計
3 肩部姿態(tài)估計
4 實驗設(shè)計與分析
4.1 頭部關(guān)鍵點檢測
4.2 頭部姿態(tài)估計及驗證
4.3 肩部關(guān)鍵點檢測
4.4 肩部姿態(tài)估計及驗證
4.5 姿態(tài)估計驗證
5 結(jié)束語