蘇 波,柴自強(qiáng),王 莉,崔帥華
(河南理工大學(xué) 電氣工程與自動化學(xué)院,河南 焦作 454000)
健身功法八段錦動作舒展優(yōu)美,具有強(qiáng)身健體、怡心養(yǎng)神等功效,練習(xí)時無需器械且不受場地局限。但是,多數(shù)練習(xí)者由于缺乏專業(yè)指導(dǎo)而動作不規(guī)范,導(dǎo)致健身效果不佳。動作識別與評估系統(tǒng)可以提供動作完整性、同步性的量化分析結(jié)果,輔助練習(xí)者規(guī)范動作,提高練習(xí)收益。
在傳統(tǒng)的人體姿態(tài)識別系統(tǒng)中,測試者需要佩戴一些定制的傳感器(例如體位、速度、慣性等)或通過專用攝像頭來測量運(yùn)動信息。文獻(xiàn)[1]開發(fā)了一套可穿戴系統(tǒng),通過加速度計、模數(shù)轉(zhuǎn)換器以及WiFi模塊來獲取人體運(yùn)動數(shù)據(jù),進(jìn)而估計其姿態(tài)。文獻(xiàn)[2]提出了一種基于Kinect的人體運(yùn)動識別方法,從Kinect相機(jī)獲取骨骼特征點數(shù)據(jù)并計算特征向量,通過實時向量與預(yù)設(shè)向量進(jìn)行匹配來識別動作。文獻(xiàn)[3]設(shè)計了一種基于MEMS慣性傳感器的無線網(wǎng)絡(luò)模塊,用來檢測人體跌倒等異常行為。以上基于傳感器的姿態(tài)識別方法需要依賴專用設(shè)備,便攜性差且實施成本高。此外,可穿戴設(shè)備由于具有侵入性而存在一定的安全隱患。
隨著計算機(jī)視覺技術(shù)的發(fā)展,基于圖像的非接觸式人體運(yùn)動分析方法開始興起。文獻(xiàn)[4]設(shè)計了一種基于可見光圖像的人體姿態(tài)情感識別方法,利用卷積姿態(tài)機(jī)(Convolutional Pose Machines,CPM)[5]算法提取并描繪出人體關(guān)鍵節(jié)點,進(jìn)而識別分析人物情感。文獻(xiàn)[6]從熱圖像中提取人的關(guān)節(jié)和骨骼信息,并且使用該信息進(jìn)行人體動作識別。上述方法大多針對單幅圖像或只適用于特定場合。在人體姿態(tài)檢測方面,文獻(xiàn)[7~8]提出的OpenPose是一種人體姿態(tài)估計模型,相較于其他算法模型有更高的檢測速度和精度。
本文提出了一種基于OpenPose的人體動作識別與評估方法,如圖1所示。該方法提取骨架坐標(biāo)作為原始數(shù)據(jù),設(shè)計并提取更顯著的特征來訓(xùn)練分類器模型,從而對八段錦招式進(jìn)行識別來獲得動作序列,通過求取不同序列間的相似度來進(jìn)行評估。
圖1 總體流程圖
OpenPose 算法可以實時處理多人姿態(tài),能夠在視頻圖像中檢測人體關(guān)鍵點,在COCO、MPII數(shù)據(jù)集上都有較高的精確度,且魯棒性強(qiáng),可滿足本文系統(tǒng)需求。
與以往先檢測人后檢測關(guān)鍵點[9-10]的人體姿態(tài)估計算法不同,OpenPose提出了人體關(guān)鍵點親和場(Part Affinity Fields)思路:首先經(jīng)過VGGNet-19[11]網(wǎng)絡(luò)前10層提取原始圖像特征;然后用兩個并列分支分別預(yù)測人體關(guān)鍵點位置和關(guān)節(jié)之間骨架走向,并進(jìn)行多階段迭代;最后通過貪心算法組裝每個人的肢體。該算法自下而上,檢測速度不會隨圖中人數(shù)的增多而降低。
OpenPose算法檢測的是人體頭、頸、臂、腿等關(guān)節(jié)位置,每個關(guān)鍵點在圖像中以像素坐標(biāo)(x,y)表示,具體效果如圖2所示,序號與身體部位對應(yīng)關(guān)系如表1所示。
圖2 OpenPose算法檢測人體姿態(tài)效果圖
表1 OpenPose算法關(guān)鍵點對照表
為了保證數(shù)據(jù)的有效性和特征的規(guī)范性,需要對OpenPose提取的原始骨架數(shù)據(jù)進(jìn)行預(yù)處理,具體包括:
(1)坐標(biāo)歸一化。人體在運(yùn)動過程中,距離鏡頭的遠(yuǎn)近會發(fā)生變化,圖片尺寸不同也會導(dǎo)致x軸和y軸像素單位不統(tǒng)一。為了便于處理,需對坐標(biāo)進(jìn)行歸一化。首先,對輸入圖片進(jìn)行縮放,將寬高為(w,h)的圖像先縮放成(1,h/w),并根據(jù)18個點的坐標(biāo)計算出人體中心位置 (XC,YC)
(1)
(2)
其次,計算從頸部到臀部的高度H,這個高度對于不同動作具有不變性;最后,將每一個關(guān)鍵點減去中心坐標(biāo)后除以H,得到歸一化后的坐標(biāo)(Xnew,Ynew),如式(2)所示。新坐標(biāo)的人體姿態(tài)不變且歸一化至畫面中心,解決了圖像大小或鏡頭遠(yuǎn)近變化導(dǎo)致坐標(biāo)不統(tǒng)一的問題,有利于后續(xù)數(shù)據(jù)處理,效果如圖3所示;
圖3 坐標(biāo)歸一化效果圖
(2)冗余關(guān)鍵點去除。由于八段錦及日常動作主要是四肢的運(yùn)動,與面部無關(guān),因此剔除雙眼與雙耳坐標(biāo)(序號14~17)。用鼻子抽象代表頭部的位置信息,將關(guān)鍵點減少至14個,使得后續(xù)提取特征時更為簡化。
經(jīng)過上述預(yù)處理后,每一幀的歸一化關(guān)節(jié)位置就是最原始的特征。為了有效識別不同動作,本文主要從空間和時間上來考慮,設(shè)計出有助于區(qū)分動作類型的更顯著特征。
2.2.1 空間幾何特征
空間幾何關(guān)系屬于靜態(tài)特征,主要為單張圖片中肢體直接表達(dá)的信息,例如關(guān)鍵點坐標(biāo)空間像素位置以及關(guān)節(jié)之間的角度、距離,具體如表2所示。
表2 空間幾何特征
本文定義了距離和角度,兩者各12組。以L1、θ1為例,L1是關(guān)鍵點1~3的距離,θ1是關(guān)節(jié)1~2和關(guān)節(jié)2~3之間的夾角,其幾何特征示意圖如圖4所示,計算式如式(3)、式(4)所示。
圖4 幾何特征示例圖
(3)
(4)
式中,a=d(1-2);b=d(1-3);c=d(2-3)。
2.2.2 時間運(yùn)動特征
運(yùn)動特征反應(yīng)了人體在連續(xù)時刻的變化,例如某些關(guān)節(jié)、肢體的擺動速度等。關(guān)鍵點速度的計算方式為某個關(guān)節(jié)點在相鄰幀Tk到Tk+1上x與y方向上各自的位移除以間隔時間t,如式(5)所示。
(5)
其中,t與視頻幀率F有關(guān),當(dāng)F為25 frame·s-1時,t為0.04 s。
為了實現(xiàn)基于序列的特征提取,需要不斷地從視頻序列中提取新的特征,并實時地從序列中去除舊的特征?;瑒哟翱谒惴M足上述需求,其實施過程如圖5所示。大小為N的窗口用于存儲基于時間序列的數(shù)據(jù),隨著時間的推移,窗口定向移動,新數(shù)據(jù)被添加到窗口的頭部,尾部的數(shù)據(jù)被推出。持續(xù)該過程,直到窗口遍歷所有數(shù)據(jù)。根據(jù)滑動窗口內(nèi)N幀視頻序列所對應(yīng)的關(guān)鍵點數(shù)據(jù),計算空間幾何特征和時間運(yùn)動特征,最終聚合而成的特征向量如表3所示。
表3 基于視頻序列的特征列表
圖5 滑動窗口算法實施過程
為了證明本文所提出的算法的普適性,首先在公開數(shù)據(jù)集KTH[12]上進(jìn)行實驗。KTH數(shù)據(jù)集共有599段視頻,包括25名受試者在不同場景下進(jìn)行的6種人類動作(拍手、揮手、拳擊、慢跑、快跑和走路),分辨率為160×120像素,部分示例如圖6所示。
圖6 KTH數(shù)據(jù)集樣例
通過OpenCV算法將視頻做抽幀處理,并將訓(xùn)練集與測試集按照7∶3進(jìn)行劃分,各類樣本數(shù)如表4所示。
表4 KTH數(shù)據(jù)集樣本量
為了比較幾種特征之間的組合效果以及滑動窗口大小對準(zhǔn)確率的影響,本文進(jìn)行了定量試驗分析。首先,將滑動窗口大小固定為10幀,以驗證不同特征及組合對識別率的影響。設(shè)置分組實驗如下:(1)第1組實驗單獨(dú)使用空間幾何特征,即關(guān)節(jié)點空間位置、軀干角度、軀干長度;(2)第2組實驗單獨(dú)使用時間運(yùn)動特征,即關(guān)節(jié)點速度;(3)第3組實驗將空間特征與運(yùn)動特征融合。由于數(shù)據(jù)量較大,故分類器選用MLP(Multi-Layer Perceptron),隱藏層為3層,其中神經(jīng)元個數(shù)分別為60、70和0,并采用ReLU作為激活函數(shù)。實驗結(jié)果如表5所示。
表5 不同特征組合類型下的識別率
隨后,固定使用融合特征,將滑動窗口的大小設(shè)置為2~20(單位為幀),其它參數(shù)不變。當(dāng)滑動窗口為9幀時,識別的平均準(zhǔn)確率最高,可達(dá)96.7%,如圖7所示。當(dāng)滑動窗口不斷增大,特征的維數(shù)也隨之增加。為簡化特征,采用主成分分析法[13]將特征減少到固定大小,即100維,降維后的各主成分的方差值占總方差值的比例為97%以上,既保留了特征的有效主成分又減小了計算量。
圖7 滑動窗口大小對準(zhǔn)確率的影響
從表5可以看出,單一的空間特征或運(yùn)動特征在分類器中的識別率均低于融合特征,因此將空間特征與運(yùn)動特征進(jìn)行融合,將提升識別準(zhǔn)確度。圖8為融合特征情況下預(yù)測結(jié)果的混淆矩陣,其中“boxing” “handclapping”“handwaving”“walking”的識別準(zhǔn)確率都達(dá)到了95%以上,而“running”和“jogging”的準(zhǔn)確率略低,這可能是受到兩者之間動作相似的影響。識別結(jié)果樣例如圖9所示。
圖8 KTH數(shù)據(jù)集識別結(jié)果混淆矩陣
圖9 KTH數(shù)據(jù)集識別樣例
表6為不同方法在KTH公開數(shù)據(jù)集上的準(zhǔn)確率對比結(jié)果。文獻(xiàn)[14]提取光流和加速穩(wěn)健特征(Speeded Up Robust Features,SUPF)后,通過支持向量機(jī)(Support Vector Machines,SVM)進(jìn)行動作識別(光流+SURF)。文獻(xiàn)[15]將圖片背景減除后,提取密集軌跡(Dense Trajectories,DT)特征并結(jié)合SVM來實現(xiàn)(DT+SVM)。文獻(xiàn)[16]采用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)自動提取圖像特征進(jìn)行動作識別。本文提出的識別方法在該數(shù)據(jù)集上取得了較好的識別效果,證明了算法的有效性及普適性。
表6 KTH數(shù)據(jù)集不同方法準(zhǔn)確率對比
將網(wǎng)上采集的3段由專業(yè)人員在不同背景、著裝下的標(biāo)準(zhǔn)教學(xué)視頻與個人拍攝的規(guī)范練習(xí)視頻組成八段錦動作數(shù)據(jù)集,經(jīng)過抽幀處理成連續(xù)圖片。本文從八段錦前3個招式:“兩手托天理三焦”、“左右開弓似射雕”以及“調(diào)理脾胃臂單舉”中挑選了8種主要動作進(jìn)行建模識別,動作樣例如圖10所示。
圖10 八段錦數(shù)據(jù)集樣例
自制數(shù)據(jù)集樣本數(shù)如表7所示,訓(xùn)練集與測試集按7∶3進(jìn)行劃分。
表7 自制數(shù)據(jù)集樣本量
在八段錦動作模型訓(xùn)練時,直接采用融合特征,使用MLP作為分類器,調(diào)節(jié)滑動窗口大小。當(dāng)N=6幀時,識別的平均準(zhǔn)確率達(dá)到98.7%。識別結(jié)果如圖11和圖12所示。
圖11 八段錦動作識別結(jié)果混淆矩陣
圖12 八段錦動作識別樣例
經(jīng)過分析,八段錦多為重復(fù)性套路動作,例如第1式“兩手托天理三焦”是由圖10中前3個動作循環(huán)組成,因此可以通過動作識別模塊將教學(xué)視頻中的動作序列提取出來,設(shè)為標(biāo)準(zhǔn)序列。對于用戶練習(xí)視頻,可以提取實時動作序列與標(biāo)準(zhǔn)序列進(jìn)行對比,以此來進(jìn)行評估。
求解序列相似性問題的常用方法有計算歐氏距離、余弦相似度和動態(tài)時間規(guī)整(Dynamic Time Warping,DTW)距離等。由于每個人的動作快慢不同,因此得到的動作序列長短也各不相同。對于長度不同的時間序列,DTW算法能更有效地求出相似度,因此本文采用DTW算法來進(jìn)行序列間的比對。
DTW最早由文獻(xiàn)[17]提出,并用于口語單詞的識別。文獻(xiàn)[18]對手勢特征進(jìn)行了提取,并基于DTW算法計算模板手勢和實時手勢之間的最短距離,實現(xiàn)了動態(tài)手勢識別。
定義序列A(a1,a2,…,an)和B(b1,b2,…,bm)的長度分別為n和m,構(gòu)造一個m行n列的矩陣網(wǎng)格,如圖13所示。網(wǎng)格中第i行第j列的值表示bi與aj兩點之間的距離,記為d(i,j)。根據(jù)式(6)計算A序列前j個點與B序列前i個點的累積距離D(i,j),即當(dāng)前格點距離d(i,j)與可以到達(dá)該點的最小的鄰近元素的累積距離之和。該距離可以表征兩序列的相似度,距離越小相似度越高。
圖13 DTW算法原理圖
D(i,j)=d(i,j)+min[D(i-1,j),D(i,j-1),D(i-1,j-1)]
(6)
采用動作識別模塊處理視頻后,可得到由每一幀圖像動作類型構(gòu)成的動作序列。由于視頻幀是連續(xù)的,因此在某個連續(xù)的動作狀態(tài)下,不會突變成另一個動作。根據(jù)這一點對噪聲進(jìn)行過濾,如圖14(a)所示,連續(xù)動作1中出現(xiàn)了一幀動作2,則動作2被視為噪聲去除。與此同時,為了簡化序列,使其便于處理,本文設(shè)定了1個閾值K,將連續(xù)K幀表示同一動作的圖像抽象成一個狀態(tài),過程如圖14(b)所示。對于動作1和2,假設(shè)K=10,則連續(xù)10幀的同一動作將被簡化成一幀。經(jīng)過去噪與簡化后的標(biāo)準(zhǔn)八段錦動作的模板序列如圖14(c)所示。
圖14 動作序列處理圖
為測試該方案的可行性以及不同K值對DTW結(jié)果的影響,提取4組不同的八段錦視頻:專業(yè)人員A、B的動作作為優(yōu)秀動作,此外拍攝兩組規(guī)范性較差的視頻作為對照動作,并將所有視頻統(tǒng)一為標(biāo)準(zhǔn)mp4格式,幀率為25 frame·s-1左右。經(jīng)過動作檢測與提取序列后,得到4組長度不同的動作序列,依次為0、1、2、3。分別計算不同K值情況下的DTW距離d01、d02、d03,計算結(jié)果如表8所示。
表8 不同K值下的DTW距離
由表8可知,當(dāng)K取10或者15時效果較好,d01值較小且遠(yuǎn)小于d02、d03,代表兩組標(biāo)準(zhǔn)八段錦動作序列距離小,相似度高;而序列2、序列3與標(biāo)準(zhǔn)序列0間距較大,意味著動作不完整,規(guī)范性差。
通過分析不同人的套路動作序列與標(biāo)準(zhǔn)序列間距離,可以評估每個人的動作完整性以及速度掌控能力,DTW值越小,則代表測試者的動作與標(biāo)準(zhǔn)動作越相似。
本文提出了一種基于姿態(tài)估計的人體動作識別與評估方法,利用OpenPose獲取人體關(guān)鍵點坐標(biāo),針對人體行為特性設(shè)計了空間幾何與時間運(yùn)動特征。實驗結(jié)果表明,構(gòu)建的分類器可以有效識別日常動作及八段錦招式。本文采用的DTW算法可以有效表征練習(xí)者八段錦動作序列與標(biāo)準(zhǔn)動作序列的總體相似度,但未對關(guān)鍵幀動作進(jìn)行細(xì)化分析,后續(xù)研究可以針對各個招式的動作細(xì)節(jié)進(jìn)行量化評分,為練習(xí)者提供更為精準(zhǔn)的練習(xí)指導(dǎo)。