劉芬,吳志攀
(1.惠州城市職業(yè)學(xué)院信息學(xué)院,惠州516025;2.惠州學(xué)院信息科學(xué)技術(shù)學(xué)院,惠州516007)
目前,在不少領(lǐng)域都出現(xiàn)了人體動作識別的應(yīng)用,例如視頻游戲、虛擬現(xiàn)實、智能監(jiān)控等方面都運(yùn)用了人體識別技術(shù),這是因為識別技術(shù)的快速發(fā)展和人們在該領(lǐng)域中的需求,傳統(tǒng)的人機(jī)交互已經(jīng)不能滿足人在這方面的要求,這促使著人體動作識別在該方面的研究需要加強(qiáng)深入。然而,我國目前在人體動作識別這方面還不夠成熟,而其他國家已經(jīng)在這方面有所涉及。例如,在視頻游戲領(lǐng)域,微軟公司推出了XBOX 游戲機(jī),讓玩家享受到了體感游戲的樂趣;在虛擬現(xiàn)實領(lǐng)域,F(xiàn)acebook 的Oculus Rift、HTC 的HTC Vive、微軟的HoloLens 全系眼鏡,都說明了國外在動作識別方面下了功夫。人體動作識別具有便利性,使用的工具少、只需要少量傳感器和良好的識別算法,能夠?qū)崿F(xiàn)效果良好的人機(jī)交互。
文獻(xiàn)[1-2]提出了基于Wi-Fi 信號、Arduino 芯片等的人體動作識別系統(tǒng)設(shè)計與實現(xiàn),但不具有Kinect 的便利性;文獻(xiàn)[3-7]基于Kinect 進(jìn)行了相關(guān)動作識別的研究與應(yīng)用;文獻(xiàn)[8]提出了關(guān)節(jié)角度識別,為降低維度識別提供了依據(jù);文獻(xiàn)[9-13]提出了基于SVM 的人體動作識別算法研究,但存在著一定的誤識率。
Kinect 是微軟公司于近年來推出的一款非接觸式體感設(shè)備,它主要由紅外設(shè)備、RGB 攝像設(shè)備、深度攝像設(shè)備以及麥克風(fēng)設(shè)備等組成,具有全身骨骼跟蹤和行為軌跡捕捉等功能。Kinect 利用一系列的傳感器對人體進(jìn)行數(shù)據(jù)采集,運(yùn)用機(jī)器學(xué)習(xí)的方法獲得骨骼信息,本文對其骨骼信息進(jìn)行特征提取,最后利用一種基于統(tǒng)計學(xué)習(xí)理論的支持向量機(jī)(Support Vector Machine,SVM)分類算法對所提取的特征向量進(jìn)行人體動作識別。人體動作識別的總體流程圖如圖1 所示。
圖1 人體動作識別的總體流程圖
人體動作識別的基礎(chǔ)是利用好人體在某個關(guān)鍵時間點(diǎn)的關(guān)節(jié)點(diǎn),可以使用Kinect 獲取在某一時刻的靜態(tài)人體姿勢。因為Kinect 能在其視野中得到人體的骨骼點(diǎn),進(jìn)而對骨骼點(diǎn)利用算法計算出它的三維坐標(biāo)。在攝像頭視角的三維空間的坐標(biāo)系中,能夠建立三維人體模型。Kinect 能識別20 個骨骼點(diǎn),分別是頭、左右手、左右手腕、左右肘、左右肩、肩部中心、脊椎中心、髖部中心、左右髖、左右膝、左右腳踝和左右腳,如圖2所示。在Kinect 建立人體模型之后,緊隨著需要得到描述人體動作的特征向量。因為從Kinect 獲取的所有關(guān)節(jié)點(diǎn)直接分析較為復(fù)雜且冗余,所以本文將對三維人體模型進(jìn)行簡化,省略了腿部的骨骼,只研究人的手、手臂和肩膀,這是因為這些部位在人做出動作時是最靈活的,研究這些部位具有代表性。
圖2 Kinect人體三維骨骼點(diǎn)模型
動作數(shù)據(jù)的特征提取具體步驟是:構(gòu)造人體運(yùn)動向量,這些向量之間的夾角用來表示肢體的旋轉(zhuǎn),相對模比值來表示肢體的相對位移,兩類參數(shù)生成描述動作的融合特征提取,并產(chǎn)生融合特征空間向量以供SVM 進(jìn)行動作分類識別。動作數(shù)據(jù)的特征提取過程如圖3 所示。
假設(shè)已知三維空間的兩點(diǎn)為 pi(xi,yi,zi) ,pj(xj,yj,zj),則它們之間的距離dx,y,z如公式(1)所示:
若需要求解關(guān)節(jié)的角度,在三維空間中則需要至少三個關(guān)節(jié)點(diǎn)的坐標(biāo),假設(shè)為pi,pj和pk,計算出兩兩距離假設(shè)為dij,dik和djk,再使用余弦定理可求得各關(guān)節(jié)點(diǎn)兩兩夾角為公式(2)所示。
本文將提取出人體動作運(yùn)動向量的夾角和模比值作為融合特征值,并生成融合特征空間向量以供SVM分類使用。
圖3 動作數(shù)據(jù)的特征提取
SVM 的基本思想:假設(shè)在m 維空間里有很多樣本點(diǎn),如果能有一種方法能找到m-1 維的最優(yōu)超平面,這個平面可以恰好把空間中的樣本點(diǎn)平均分在最優(yōu)超平面的兩邊,那么這個m-1 的超平面就可以被用來對隨機(jī)樣本點(diǎn)進(jìn)行分類。
特征空間存在線性可分和線性不可分情況(線性可分分類平面示意圖如圖4 所示,線性不可分分類平面示意圖如圖5 所示),這些情況都可以被SVM 進(jìn)行分類。面對線性可分情況時,可直接使用SVM 找出特征的最優(yōu)分類超平面來進(jìn)行分類。而線性不可分的特征空間,需要在找出最優(yōu)分類超平面之前加一個步驟,SVM 將使用核函數(shù)的方法,將特征空間轉(zhuǎn)換到更高維的空間中,因為在更高維的空間中,不可分的問題會變得可分,可分之后在按照線性可分的步驟就可以進(jìn)行分類。
線性可分的特征空間下的向量機(jī)如公式(3)所示,其中,i=1,2,3,....l;w、b 指的是分類平面系數(shù);xi指的是第i 個訓(xùn)練樣本,yi指的是第i 個訓(xùn)練樣本所屬類別;ai指的是第i 個訓(xùn)練樣本對應(yīng)的是拉格朗日系數(shù),且ai≥0;xs表示某個特定的支持向量,ys表示xs所屬類別。
圖4 線性可分分類平面示意圖
圖5 線性不可分分類平面示意圖
線性不可分的特征空間下的向量機(jī)如公式(4)所示,其中ζi是引入的松弛變量,用于控制離群點(diǎn)。這樣,通過讓部分樣本距離分類平面小于1,犧牲了一些分類的準(zhǔn)確性,從而讓算法對分類的識別更加廣泛。
本文對UCF101 數(shù)據(jù)集中人體動作部分100 個樣本進(jìn)行了訓(xùn)練與識別,分別隨機(jī)選取了左揮、右揮、上舉和上舉各30 個動作用作SVM 的測試,剩余的各70個動作用作驗證,SVM 算法識別率尚可,統(tǒng)計結(jié)果如表1 所示。
表1 SVM 算法識別統(tǒng)計結(jié)果
SVM 算法分類結(jié)果超平面示意圖(部分)如圖6所示。
圖6 SVM算法分類結(jié)果超平面示意圖
本文提出了一種基于Kinect 與SVM 的人體動作識別算法,Kinect 可獲得深度圖像進(jìn)而取得人體骨骼點(diǎn)信息;同時SVM 具有優(yōu)秀的分類能力,面對線性和非線性高維特征空間時能有較高的分類能力,有效避免了維數(shù)災(zāi)難。具體步驟是先采用Kinect 傳感器對人體動作進(jìn)行捕捉生成深度圖像,經(jīng)處理建立三維人體模型,提取出其運(yùn)動向量的夾角和模比值作為特征值,最后使用SVM 對該特征值進(jìn)行人體動作分類識別。采用UCF101 數(shù)據(jù)集和MATLAB 程序?qū)θ梭w動作識別的整個過程進(jìn)行了實驗分析與驗證,該算法具有很高的魯棒性和識別率,但人的動作是復(fù)雜多樣的,且每個人的身高、肢體長度、行為動作等客觀條件不同,這使得要能達(dá)到復(fù)雜人體動作識別,還需要做更多的研究。