劉開余,夏 斌
(上海海事大學(xué) 上海 201306)
姿勢識別是機器視覺領(lǐng)域的研究熱點,被廣泛應(yīng)用在人機交互、行為分析、多媒體應(yīng)用和運動科學(xué)等領(lǐng)域。
姿勢識別主要有兩種方法。第一種是利用可穿戴傳感器,比如戴在身體上的加速度計[1]或裝在衣服上的張力傳感器[2]??纱┐鱾鞲衅骶哂芯_直接的特點,但會對肢體運動造成束縛,會給用戶帶來額外的負(fù)擔(dān)。第二種是利用視覺捕捉技術(shù)[3],例如視頻或者靜態(tài)圖像,通過對視覺數(shù)據(jù)的處理來判斷用戶的動作?;谝曈X捕捉技術(shù)在特征表達(dá)方面,起初是采用人體輪廓作為姿勢特征表達(dá)[4-5]。但是輪廓特征從整體角度描述姿勢,忽略了身體各部位的細(xì)節(jié),不能精確地表示豐富多彩的人體姿勢。有研究[6-7]采用基于身體部位的姿勢表達(dá),即把人體輪廓分成若干個身體部位,例如頸部、軀干和腿。由于這些姿勢特征都是從二維彩色圖像中抽取而來,需要處理人體定位、肢體被遮擋、不同光照條件等問題。
近年來,Kinect等深度傳感器不僅提供彩色圖像數(shù)據(jù),而且提供了三維深度圖像信息。三維深度圖像記錄了物體與體感器之間的距離,使得獲取的信息更加豐富。利用Kinect的實時骨骼跟蹤技術(shù)和支持向量機 (support vector machine,SVM)識別4種姿勢(站,躺,坐和彎腰)[8]。本文采用邏輯回歸算法對54種姿勢進行識別研究,設(shè)計開發(fā)實時的人體姿勢識別系統(tǒng)。
人體姿勢可定義為某一時刻身體關(guān)節(jié)點之間的相對位置。如果得到關(guān)節(jié)點的三維位置信息,那么關(guān)節(jié)點之間的相對位置就確定。但由于不同人的體型存在差異,原始坐標(biāo)數(shù)據(jù)過于粗糙,所以采用關(guān)節(jié)角度描述姿勢特征。微軟公司提供的Kinect體感器主要由紅外發(fā)射器、RGB攝像頭、紅外深度圖像攝像頭、傳動馬達(dá)和麥克風(fēng)陣列組成,如圖1所示。紅外發(fā)射器和紅外深度圖像攝像頭組合起來獲取深度圖像。RGB攝像頭獲取彩色圖像。傳動馬達(dá)用于調(diào)整Kinect設(shè)備的俯仰角。麥克風(fēng)陣列可以捕獲聲音和定位聲源。
圖1 Kinect傳感器Fig.1 Kinect sensor
骨骼跟蹤是在深度圖像的基礎(chǔ)上,利用機器學(xué)習(xí)方法逐步實現(xiàn)[9]。第一步是人體輪廓分割,判斷深度圖像上的每個像素是否屬于某一個用戶,過濾背景像素。第二步是人體部位識別,從人體輪廓中識別出不同部位,例如頭部、軀干、四肢等肢體。第三步是關(guān)節(jié)定位,從人體部位中定位20個關(guān)節(jié)點。
Kinect的骨骼跟蹤技術(shù)可以主動跟蹤2個用戶,被動跟蹤4個用戶。主動跟蹤時,捕獲用戶身體20個關(guān)節(jié)點的三維位置信息,如圖2所示,關(guān)節(jié)點名稱詳見表1。被動跟蹤時,只捕獲用戶的脊柱中心位置。骨骼坐標(biāo)系以紅外深度圖像攝像頭為原點,X軸指向體感器的左邊,Y軸指向體感器的上邊,Z軸指向視野中的用戶。
圖2 20個人體關(guān)節(jié)點Fig.2 Twenty body joints
通過觀察發(fā)現(xiàn)15個身體關(guān)節(jié)與姿勢的關(guān)聯(lián)度比較大,分別標(biāo)記為“A”到“O”。另外5個標(biāo)為黑色的關(guān)節(jié)由于和相鄰的關(guān)節(jié)點距離太近容易產(chǎn)生抖動現(xiàn)象而未被使用。從15個關(guān)節(jié)點中提取可能與姿勢有關(guān)聯(lián)的25個關(guān)節(jié)角度特征,如表2所示。其中,角1-4和角16-25是兩個向量之間的夾角,角5-13是一個向量和Y軸的夾角,角14-15是一個向量和X 軸的夾角。 所有角度的范圍在(0°,180°)。
表1 20個關(guān)節(jié)點命名Tab.1 Names of twenty body joints
邏輯回歸是經(jīng)典的分類算法,應(yīng)用十分廣泛。邏輯回歸的原理是使用梯度下降方法進行多次迭代使得代價函數(shù)逐漸減少。當(dāng)代價函數(shù)滿足要求時,記錄模型的參數(shù)。多個關(guān)節(jié)角度特征提取完成后,利用邏輯回歸分類算法對姿勢進行分類。 假設(shè) N 維特征向量 x=[x0,x1,…,xN-1]T,參數(shù)向量 θ=[θ0,θ1,…,θN-1]T,函數(shù)模型為
其中g(shù)是內(nèi)核函數(shù),x0=1。為了使模型輸出范圍在0到1之間,定義內(nèi)核函數(shù)
表2 25個關(guān)節(jié)角度Tab.2 Twenty-five joint-angles
當(dāng) z 取較大正值時,g(z)接近 1,當(dāng) z 取較小負(fù)值時,g(z)接近0。對于內(nèi)核函數(shù)有兩種理解:1)定義閾值threshold,當(dāng)模型輸出大于threshold時,判斷為1,否則判斷為0;2)假如模型的輸出為0.8,表示為1的可能性是0.8,為0的可能性是0.2。
在一對多的邏輯回歸分類中,每一類都要訓(xùn)練一個模型h(i)θ(x)。 在進行預(yù)測時,選擇h(i)θ(x)值最大的一類作為分類結(jié)果。假設(shè)訓(xùn)練樣本為
其中 x(i)∈X?RN,y(i)∈Y={0,1}分別表示輸入向量和標(biāo)簽。
參數(shù)矩陣為
其中k表示姿勢的種類數(shù)。
對于每一種姿勢,訓(xùn)練一個一對多的分類器 θ(p)=[θ(p)0,θ(p)1,…,θ(p)N-1]T。如果進來一個新的樣本x(i),計算概率向量p1×K=g(x(i)Tθ),則p1×k中值最大的元素下標(biāo)就是識別出來的姿勢編號。
在相關(guān)研究[5,10]提出的姿勢基礎(chǔ)上進行擴展,建立包含54種全身姿勢的數(shù)據(jù)庫。圖3以鏡像小圖標(biāo)的形式展示54種姿勢。
招募了5名 (3名男性2名女性)被試進行離線實驗。Kinect設(shè)備水平放置,距離地面48 cm。傳動馬達(dá)的角度是正10度。背景是一面白墻。被試面對著Kinect設(shè)備,全身處在視野范圍內(nèi),距離其240 cm的位置,按順序做完54種姿勢。對于被試2~5,每種姿勢采集109個樣本,分別有5 886個樣本。對于被試1,每種姿勢采集218個樣本,共11 772個樣本,詳見表3。被試1的姿勢數(shù)據(jù)的50%用于訓(xùn)練,另外50%用于測試。被試2~5的姿勢數(shù)據(jù)全部用于測試。
為了得到準(zhǔn)確率最高的關(guān)節(jié)角度特征數(shù)量,從5個到25個逐步增加關(guān)節(jié)角度特征數(shù)量。當(dāng)?shù)玫阶顑?yōu)的關(guān)節(jié)角度特征數(shù)量時,從2類到54類逐步增加分析邏輯回歸分類方法的準(zhǔn)確率。
圖3 姿勢數(shù)據(jù)庫Fig.3 Posture dataset
表3 每位被試的樣本數(shù)量Tab.3 Number of examples for each subject
利用離線實驗的最優(yōu)關(guān)節(jié)角度特征數(shù)量和邏輯回歸分類算法建立實時的姿勢識別系統(tǒng)。Kinect體感器以30幀每秒的速度捕獲20個關(guān)節(jié)點的坐標(biāo)數(shù)據(jù)。在實時的姿勢識別中,連續(xù)采集60幀坐標(biāo)數(shù)據(jù),然后從每一幀中提取21個關(guān)節(jié)角度,并送入分類模型對每一幀進行識別。統(tǒng)計60幀中每種姿勢出現(xiàn)的次數(shù),出現(xiàn)次數(shù)最多的姿勢認(rèn)為是識別的姿勢。實時姿勢識別系統(tǒng)界面如圖4所示。
圖4 實時人體姿勢識別系統(tǒng)界面Fig.4 Interface of real-time human posture recognition system
界面中間是實時的彩色視頻畫面,當(dāng)被試把手移動到開始按鈕上時,在界面左側(cè)顯示標(biāo)準(zhǔn)姿勢,引導(dǎo)被試在3秒內(nèi)模仿標(biāo)準(zhǔn)姿勢并保持2秒鐘。之后界面右側(cè)顯示姿勢識別的結(jié)果。如果被試的姿勢和標(biāo)準(zhǔn)姿勢相近,則提示“Good”,否則提示“Error”。
選擇被試 1,再招募3名(3名女性)被試進行在線實驗。Kinect設(shè)備水平放置,距離地面48 cm。傳動馬達(dá)的角度是正10度。背景是一面白墻。被試面對著Kinect設(shè)備,全身處在視野范圍內(nèi),距離其240 cm的位置,按順序做完54種姿勢。
關(guān)節(jié)角度特征數(shù)量從5個到25個逐漸增加分析姿勢識別準(zhǔn)確率,結(jié)果如圖5所示。
圖5 不同的特征數(shù)量和準(zhǔn)確率Fig.5 Different number of features and accuracy
隨著關(guān)節(jié)角度特征數(shù)量的增加,準(zhǔn)確率總體呈上升趨勢。當(dāng)關(guān)節(jié)角度特征數(shù)量為21個時準(zhǔn)確率最高,為97.32%。當(dāng)關(guān)節(jié)角度特征數(shù)量大于21個以后,準(zhǔn)確率趨向平穩(wěn)。
姿勢種類數(shù)從2種到54種逐漸增加分析姿勢識別準(zhǔn)確率,結(jié)果如圖6所示。
圖6 不同的姿勢種類數(shù)和準(zhǔn)確Fig.6 Different categories of postures and accuracy
隨著姿勢種類數(shù)的增加,姿勢識別準(zhǔn)確率總體呈下降趨勢。當(dāng)姿勢種類數(shù)為2、3、18和22時,準(zhǔn)確率達(dá)到了100%。姿勢種類數(shù)不超過25種時,準(zhǔn)確率維持一個較高的水平,超出25種時,準(zhǔn)確率開始下滑。
在線實驗中,被試1的準(zhǔn)確率高達(dá)96.30%。三位新招募的被試準(zhǔn)確率都在85%以上,如表4所示。
表4 在線姿勢識別準(zhǔn)確率Tab.4 Accuracy of real-time posture recognition
利用Kinect的實時骨骼跟蹤技術(shù)和邏輯回歸分類算法實現(xiàn)了實時的人體姿勢識別。Kinect的實時骨骼跟蹤技術(shù)可以獲取身體關(guān)節(jié)點的三維坐標(biāo)數(shù)據(jù)。由于不同人的身高和體重不同,原始三維坐標(biāo)數(shù)據(jù)存在維數(shù)高、泛化效果差等問題。關(guān)節(jié)角度特征可以較好地描述人體姿勢。
離線實驗中,利用Kinect設(shè)備捕獲關(guān)節(jié)點三維坐標(biāo)數(shù)據(jù),抽取25個與姿勢有關(guān)聯(lián)的關(guān)節(jié)角度,采用邏輯回歸算法訓(xùn)練分類模型。關(guān)節(jié)角度特征數(shù)量從5個到25個逐漸增加,分析相應(yīng)的準(zhǔn)確率,得出當(dāng)關(guān)節(jié)角度特征數(shù)量為21個時準(zhǔn)確率最高。姿勢種數(shù)從2種到54種逐漸增加,得到平均準(zhǔn)確率為97.88%。邏輯回歸可以較好地識別多種人體姿勢。
結(jié)合骨骼跟蹤和邏輯回歸的姿勢識別方法在實時性、精確度等方面上都有良好的表現(xiàn)。骨骼跟蹤的速率是30幀每秒,即每秒鐘可以對姿勢進行30次識別。當(dāng)用戶做出一個姿勢,系統(tǒng)能夠快速地識別出來并做出反應(yīng),達(dá)到友好交互的目的。在線實驗中,利用最優(yōu)的關(guān)節(jié)角度特征和邏輯回歸算法設(shè)計開發(fā)實時的姿勢識別系統(tǒng)。三位新的被試從未體驗過54種姿勢,她們模仿界面左邊的標(biāo)準(zhǔn)姿勢做完54種姿勢。她們做了很多模棱兩可的姿勢,平均準(zhǔn)確率達(dá)到88.89%(見表4)。如果三位被試不斷體驗姿勢識別系統(tǒng)、熟悉54種姿勢,則她們所做的姿勢可以被正確地識別。姿勢的種類可以繼續(xù)擴展,對于一種新的姿勢,給定一定量的訓(xùn)練樣本,就可以訓(xùn)練出分類模型。
本文利用Kinect的實時骨骼跟蹤技術(shù)獲取身體關(guān)節(jié)點的三維位置信息,建立包含54種人體全身姿勢的數(shù)據(jù)庫。提取25個與姿勢有關(guān)聯(lián)的關(guān)節(jié)角度作為姿勢特征,結(jié)合邏輯回歸分類算法進行離線實驗,得出當(dāng)關(guān)節(jié)角度特征數(shù)量為21個時姿勢識別的準(zhǔn)確率最高。設(shè)計開發(fā)了實時的姿勢識別系統(tǒng)并進行在線實驗。實驗證明,結(jié)合Kinect的骨骼跟蹤和邏輯回歸算法可以準(zhǔn)確實時地識別人體姿勢。
[1]Allen F R,Ambikairajah E,Lovell N H,et al.Classification ofaknownsequenceofmotionsandposturesfromaccelerometry data using adapted Gaussian mixture models[J].Physiological Measurement,2006,27(10):935.
[2]Mattmann C,Clemens F,Tr?ster G.Sensor for measuring strain in textile[J].Sensors,2008,8(6):3719-3732.
[3]Weinland D,Ronfard R,Boyer E.A survey of vision-based methods for action representation, segmentation and recognition[J].Computer Vision and Image Understanding,2011,115(2):224-241.
[4]Boulay B,Brémond F,Thonnat M.Applying 3d human model in a posture recognition system [J].Pattern Recognition Letters,2006,27(15):1788-1796.
[5]Cohen I,Li H.Inference of human postures by classification of 3D human body shape[C]//Analysis and Modeling of Faces and Gestures, 2003.AMFG 2003.IEEE International Workshop on.IEEE,2003:74-81.
[6]Mo H C,Leou J J,Lin C S.Human Behavior Analysis Using Multiple 2D Features and Multicategory Support Vector Machine[C]//MVA,2009:46-49.
[7]Souto H,Raupp Musse S.Automatic Detection of 2D Human Postures Based on Single Images[C]//Graphics,Patterns and Images (Sibgrapi), 2011 24th SIBGRAPI Conference on.IEEE,2011:48-55.
[8]Le T L,Nguyen M Q,Nguyen T T M.Human posture recognition using human skeleton provided by Kinect[C]//Computing, Management and Telecommunications(ComManTel), 2013 International Conference on.IEEE,2013:340-345.
[9]Shotton J,Sharp T,Kipman A,et al.Real-time human pose recognition in parts from single depth images[J].Communications of the ACM,2013,56(1):116-124.
[10]Negin F,?zdemir F,Akgül C B, et al.A decision forest based feature selection framework for action recognition from rgb-depth cameras [C]//Image Analysis and Recognition.Springer Berlin Heidelberg,2013:648-657.