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