劉芬,吳志攀
(1.惠州城市職業學院信息學院,惠州516025;2.惠州學院信息科學技術學院,惠州516007)
目前,在不少領域都出現了人體動作識別的應用,例如視頻游戲、虛擬現實、智能監控等方面都運用了人體識別技術,這是因為識別技術的快速發展和人們在該領域中的需求,傳統的人機交互已經不能滿足人在這方面的要求,這促使著人體動作識別在該方面的研究需要加強深入。然而,我國目前在人體動作識別這方面還不夠成熟,而其他國家已經在這方面有所涉及。例如,在視頻游戲領域,微軟公司推出了XBOX 游戲機,讓玩家享受到了體感游戲的樂趣;在虛擬現實領域,Facebook 的Oculus Rift、HTC 的HTC Vive、微軟的HoloLens 全系眼鏡,都說明了國外在動作識別方面下了功夫。人體動作識別具有便利性,使用的工具少、只需要少量傳感器和良好的識別算法,能夠實現效果良好的人機交互。
文獻[1-2]提出了基于Wi-Fi 信號、Arduino 芯片等的人體動作識別系統設計與實現,但不具有Kinect 的便利性;文獻[3-7]基于Kinect 進行了相關動作識別的研究與應用;文獻[8]提出了關節角度識別,為降低維度識別提供了依據;文獻[9-13]提出了基于SVM 的人體動作識別算法研究,但存在著一定的誤識率。
Kinect 是微軟公司于近年來推出的一款非接觸式體感設備,它主要由紅外設備、RGB 攝像設備、深度攝像設備以及麥克風設備等組成,具有全身骨骼跟蹤和行為軌跡捕捉等功能。Kinect 利用一系列的傳感器對人體進行數據采集,運用機器學習的方法獲得骨骼信息,本文對其骨骼信息進行特征提取,最后利用一種基于統計學習理論的支持向量機(Support Vector Machine,SVM)分類算法對所提取的特征向量進行人體動作識別。人體動作識別的總體流程圖如圖1 所示。

圖1 人體動作識別的總體流程圖
人體動作識別的基礎是利用好人體在某個關鍵時間點的關節點,可以使用Kinect 獲取在某一時刻的靜態人體姿勢。因為Kinect 能在其視野中得到人體的骨骼點,進而對骨骼點利用算法計算出它的三維坐標。在攝像頭視角的三維空間的坐標系中,能夠建立三維人體模型。Kinect 能識別20 個骨骼點,分別是頭、左右手、左右手腕、左右肘、左右肩、肩部中心、脊椎中心、髖部中心、左右髖、左右膝、左右腳踝和左右腳,如圖2所示。在Kinect 建立人體模型之后,緊隨著需要得到描述人體動作的特征向量。因為從Kinect 獲取的所有關節點直接分析較為復雜且冗余,所以本文將對三維人體模型進行簡化,省略了腿部的骨骼,只研究人的手、手臂和肩膀,這是因為這些部位在人做出動作時是最靈活的,研究這些部位具有代表性。

圖2 Kinect人體三維骨骼點模型
動作數據的特征提取具體步驟是:構造人體運動向量,這些向量之間的夾角用來表示肢體的旋轉,相對模比值來表示肢體的相對位移,兩類參數生成描述動作的融合特征提取,并產生融合特征空間向量以供SVM 進行動作分類識別。動作數據的特征提取過程如圖3 所示。
假設已知三維空間的兩點為 pi(xi,yi,zi) ,pj(xj,yj,zj),則它們之間的距離dx,y,z如公式(1)所示:

若需要求解關節的角度,在三維空間中則需要至少三個關節點的坐標,假設為pi,pj和pk,計算出兩兩距離假設為dij,dik和djk,再使用余弦定理可求得各關節點兩兩夾角為公式(2)所示。

本文將提取出人體動作運動向量的夾角和模比值作為融合特征值,并生成融合特征空間向量以供SVM分類使用。

圖3 動作數據的特征提取
SVM 的基本思想:假設在m 維空間里有很多樣本點,如果能有一種方法能找到m-1 維的最優超平面,這個平面可以恰好把空間中的樣本點平均分在最優超平面的兩邊,那么這個m-1 的超平面就可以被用來對隨機樣本點進行分類。
特征空間存在線性可分和線性不可分情況(線性可分分類平面示意圖如圖4 所示,線性不可分分類平面示意圖如圖5 所示),這些情況都可以被SVM 進行分類。面對線性可分情況時,可直接使用SVM 找出特征的最優分類超平面來進行分類。而線性不可分的特征空間,需要在找出最優分類超平面之前加一個步驟,SVM 將使用核函數的方法,將特征空間轉換到更高維的空間中,因為在更高維的空間中,不可分的問題會變得可分,可分之后在按照線性可分的步驟就可以進行分類。
線性可分的特征空間下的向量機如公式(3)所示,其中,i=1,2,3,....l;w、b 指的是分類平面系數;xi指的是第i 個訓練樣本,yi指的是第i 個訓練樣本所屬類別;ai指的是第i 個訓練樣本對應的是拉格朗日系數,且ai≥0;xs表示某個特定的支持向量,ys表示xs所屬類別。

圖4 線性可分分類平面示意圖

圖5 線性不可分分類平面示意圖

線性不可分的特征空間下的向量機如公式(4)所示,其中ζi是引入的松弛變量,用于控制離群點。這樣,通過讓部分樣本距離分類平面小于1,犧牲了一些分類的準確性,從而讓算法對分類的識別更加廣泛。

本文對UCF101 數據集中人體動作部分100 個樣本進行了訓練與識別,分別隨機選取了左揮、右揮、上舉和上舉各30 個動作用作SVM 的測試,剩余的各70個動作用作驗證,SVM 算法識別率尚可,統計結果如表1 所示。

表1 SVM 算法識別統計結果
SVM 算法分類結果超平面示意圖(部分)如圖6所示。

圖6 SVM算法分類結果超平面示意圖
本文提出了一種基于Kinect 與SVM 的人體動作識別算法,Kinect 可獲得深度圖像進而取得人體骨骼點信息;同時SVM 具有優秀的分類能力,面對線性和非線性高維特征空間時能有較高的分類能力,有效避免了維數災難。具體步驟是先采用Kinect 傳感器對人體動作進行捕捉生成深度圖像,經處理建立三維人體模型,提取出其運動向量的夾角和模比值作為特征值,最后使用SVM 對該特征值進行人體動作分類識別。采用UCF101 數據集和MATLAB 程序對人體動作識別的整個過程進行了實驗分析與驗證,該算法具有很高的魯棒性和識別率,但人的動作是復雜多樣的,且每個人的身高、肢體長度、行為動作等客觀條件不同,這使得要能達到復雜人體動作識別,還需要做更多的研究。