顧軍華,李 碩,劉洪普,3,馬鶴蕓
(1.河北工業大學 計算機科學與軟件學院,天津 300401;2.河北省大數據計算重點實驗室,天津 300401;3.華北科技學院 河北省物聯網數據采集與處理工程技術研究中心, 河北 廊坊 065201)
21世紀初,在人機交互、虛擬現實、視頻智能監控、醫療診斷和監護以及運動分析等諸多應用背景下,動作分析已經成為圖像分析、心理學、神經生理學等相關領域的研究熱點[1]。因此,人體動作識別技術被很多國內外的大學和研究機構進行了深入的研究[2],并擁有十分廣闊的應用前景[3]和非常可觀的經濟價值。傳統的解決人體動作識別問題常用方法有兩種:模板匹配法和狀態空間法[4]。模板匹配法一般會將運動狀態序列轉化為一個或一組靜態的模板,通過將待識別樣本的模板與已知的模板進行匹配獲得識別結果。模板匹配法可細分為兩類:是幀對幀匹配方法,其最經典的算法就是動態時間規整(dynamic time warping,DTW)[5];融合匹配方法,例如Davis J W與Bobick A F[6]提出的識別方法。狀態空間法就是將圖像序列的每個靜態姿勢或運動狀態作為一個狀態節點,狀態節點之間由給定的概率聯系起來,任何的動作序列可以認為是這些靜態動作在不同狀態節點中的一次遍歷過程,常見的狀態空間法的算法有隱馬爾科夫和動態貝葉斯等[7]。
由于狀態空間法需要的樣本空間過大,迭代次數過多,鑒于智能家居中對于識別簡單動作的效率有很大的要求,在智能家居的人體動作中不易采用該方法;而模版匹配的幀對幀匹配也會涉及時間敏感對應匹配的問題且魯棒性差等問題,為此,本文采用基于神經網絡的分類方法。該方法屬于融合匹配方法,其優點在于可以有效避免一般模板匹配法中的時間間隔敏感的問題,且迭代次數少,算法更加高效。
研究表明,人體運動時相應的關節點角度、角速度及角加速度可以表征人體姿態。文獻[8]也證明了人體骨骼角度在樣本空間具有聚集性,并在規則化處理后滿足平移和縮放不變性。因此,肢體關節角度可以作為人體運動特征的動態分量提取。
本文采用微軟推出的KINECT[9,10]深度攝像頭提取人體的20個骨骼關節點,并提供每個骨骼節點的三維坐標,識別的人體關節點圖像如圖1(a)所示。由骨骼點之間的坐標得到每段骨骼的向量,最終得到骨骼向量夾角[11],即關節角度,如圖1(b)所示,模擬了某個狀態下右肩—右肘—右手三個骨骼節點間的夾角,其命名方式為Rshoulder-Relbow-Rhand。以類似的命名方式取骨骼向量夾角,共20組。

圖1 骨骼向量夾角特征提取
Partridge D[12]認為對于分類的神經網絡,訓練集對泛化能力的影響十分顯著,甚至優于隱含層數和節點數對網絡泛化能力的影響。因此,本文提出對訓練數據進行優化,以此提高網絡的泛化能力。
在基于骨骼向量夾角的人體動作識別中,由于KINECT傳感器檢測時經常會有關節點檢測失效或者關節點偏移的情況發生,例如:圖2(a)是正常情況下的人體站立姿勢的骨架,圖2(b)是關節點發生偏移后的骨架,可知采集到的訓練數據有可能并不準確,導致訓練后的網絡有可能并不可靠,泛化能力較差,要解決此類問題:提高KINECT采集關節點的正確性,對關節點錯誤的數據進行剔除;通過數據間的相關性對樣本進行優化,提高訓練數據精度,加強網絡的泛化能力。

圖2 KINECT捕捉關節點骨架
1.2.1 剔除無效數據
在提高訓練數據正確性方面,Li J F等人[13]根據文獻[14]提供的數據指出,普通人自身的不同骨骼間的比例大致上是固定的,其統計得出的肢體數據如下
{Htorso≈4Hhead
Harm≈2.2Hhead
Hforearm≈1.9Hhead
(1)
式中Htorso,Harm,Hforearm,Hhead分別為脊柱、上臂、前臂和頭的長度。
在構成人體動作描述特征向量之前要先判斷該數據是否為無效數據,判斷的依據為
(2)
式中L(shouldercenter,spine)為Shouldercenter到Spine的長度;a為允許誤差范圍,取0.1;后兩式分別為左右兩個上臂長度和左右兩個前臂長度與頭長度的比例。當條件均滿足時,判斷為有效數據,最終構建人體動作描述特征向量。
根據已知的身體各部分的比例系數,可以判定獲得的訓練數據是否為關節點失真后的錯誤數據,一旦出現了錯誤數據,則認為這組訓練數據是無效數據,直接從訓練數據中刪除,在一定程度上保證了訓練樣本的準確性。
1.2.2 降低樣本維度
在保證關節點基本不失真的情況下,由于訓練樣本維數較多,且精度不一,對樣本進行二次優化。對樣本進行因子分析[15,16],即在處理多指標樣本數據時,將具有錯綜復雜關系的指標(或樣品)綜合為數量較少的幾個因子,以再現原始變量之間的相互關系,通常被用來降低樣本維度。
因子分析的數學表示為矩陣:X=AF+B,即
(3)
式中 向量X=(x1,x2,x3,…,xp)為原始觀測變量;F=(f1,f2,f3,…,fp)為X的公共因子;A=(αij)為公因子F的系數,稱為因子載荷矩陣;αij(i=1,2,…,p;j=1,2,…,k)為因子載荷,是第i個原有變量在第j個因子上的負荷,或可將αij看作第i個變量在j共因子上的權重。αij為xi與fi的協方差,亦即xi與fi的相關系數,表示xi對fi的相關程度。αij的絕對值越大,表明fi對xi的載荷量越大。
設神經網絡的總體樣本為X=(xij)n×p,其中,xij為xi的第j個指標,i=1,2,…,n;j=1,2,…,p。本文神經網絡樣本因子分析的主要步驟:
1)原始數據進行標準化,采用零均值標準差標準化方法,標準化后的樣本為Xnp。但要注意,在神經網絡訓練輸出時,需要對輸出的結果進行還原量綱值。
2)計算總樣本的相關系數矩陣R=(rij)p×p,并求解R的特征根及其相應的單位特征向量。其中

(4)
求解出R的p個特征根及其對應的特征向量,分別表示為λ1≥λ2≥…≥λp>0和μ1,μ2,…,μp。根據貢獻率的要求,取前q個特征根及其相應的特征向量的構成因子載荷矩陣A
(5)
3)對求出的因子載荷矩陣進行因子旋轉,并計算出因子得分。旋轉后的因子載荷矩陣記為
(6)
因子得分的計算公式為
(7)
通過上述的因子分析操作可對樣本進行降維處理,提高樣本精度。
實驗硬件采用KINECT傳感器捕獲人體動作特征向量,實驗數據采集軟件環境為Visual Studio 2010和KINECT SDK v1.8,開發語言為C#.net,神經網絡仿真實驗環境為MATLAB 2012b。
實驗訓練了5組動作,分別為坐下、站起、蹲下、喝水和坐在椅子上站起,共5×160=800組訓練數據。測試數據使用相同的測試集,每個動作取60組數據,共有5×60=300組測試數據。實驗中,設置網絡的期望均方誤差為0.01,最大迭代次數是1 000次。
為了驗證本文方法的性能,設計了4組對比實驗:1)采用不刪除不降維的神經網絡算法進行實驗,原始數據即為訓練集;2)采用僅剔除無效數據的識別方法,對原始數據進行無效數據剔除后的數據為訓練集;3)采用不剔除無效數據僅進行因子分析的方法,對原始數據進行因子分析,得到訓練集;4)采用既剔除無效數據又進行因子分析的方法,首先將訓練樣本中的無效數據排除,然后進行樣本優化,對樣本數據進行因子分析,組成新的訓練集。表1給出了不同方法測試動作在測試集合上的正確識別率;表2給出了訓練數據迭代次數及測試數據的總體識別率。

表1 測試中每個動作的正確識別率 %

表2 算法的迭代次數和總體識別率
由表1看出,采用樣本優化后的方法,所有動作的識別準確率均有所提高,特別是在喝水動作的識別方面,優化后可以使得測試數據獲得高達100%的準確率;而且在站起動作方面,識別準確率有了很大提高,由最初的85 %提升至95 %。造成這種現象的原因是,一方面了剔除無效數據,另一方面減少了數據的冗余,一些容易混淆的動作特征對比度更大,例如站起和坐在椅子上站起兩個相似的動作區分更加明顯,識別更加準確。通過表2看出:本文方法實驗(4)在總體的識別率方面有了提升,由90.7 %增加到了95.7 %,而且在迭代次數方面也大幅縮減,由375降到了112,主要是因為數據維度減少,簡化了網絡結構,因此,加快了收斂速度,縮減了訓練時間。
由表2可以看出,4次實驗的迭代次數分別是375,372,123,112次,分別如圖3所示,迭代次數由375次下降到了112次,而總體識別率由未優化的90.7 %提高到了優化后的95.7 %。

圖3 訓練神經網絡的迭代次數
由實驗結果可知,由于算法提高了訓練樣本的精度,使得訓練出的網絡更加穩定,泛化能力更好,因此,神經網絡的迭代次數更少,準確率更高。
本文確定了動作描述方法,利用KINECT攝像頭的骨骼關節點識別功能對人體進行建模,以骨骼的關節角度作為動作特征向量。在分析了幾種傳統的動作識別算法的基礎上,利用神經網絡實現動作識別的算法。為提高識別率和降低訓練網絡的迭代次數,根據實驗本身的特性,對樣本優化方面提出了改進,實驗結果證明:算法取得了較好的性能。
[1] Yuan C,Li X, Hu W, et al. 3D R transform on spatio-temporal interest points for action recognition[C]∥Proc of the IEEE Conference on Computer Vision and Pattern Recognition,2013:724-730.
[2] 朱 煜,趙江坤,王逸寧,等.基于深度學習的人體行為識別算法綜述[J].自動化學報,2016,42(6):848-857.
[3] 沈淑濤,高 飛,許 寧.基于Kinect的頭部康復虛擬現實游戲[J].系統仿真學報,2016(8):1904-1908.
[4] 谷軍霞,丁曉青,王生進.動作分析算法綜述[J].中國圖像圖形學報,2009,14(3):377-387.
[5] Sakoe H,Chiba S.Dynamic programming algorithm optimization
for spoken word recognition[J].IEEE Transactions on Acoustics,Speech and Signal Processing,1978,26(1):43-491.
[6] Davis J W,Bobick A F.The representation and recognition of human movement using temporal templates[C]∥Proceedings of IEEE Conference on Computer Vision and Pattern Recognition,San Juan,Puerto Rico,1997:928-9341.
[7] 李瑞峰,王亮亮,王 珂.人體動作動作識別研究綜述[J].模式識別與人工智能,2014,27(1):35-48.
[8] 韓 旭.應用Kinect的人體行為識別方法研究與系統設計[D].濟南:山東大學,2013.
[9] 楊文璐,王 杰,夏 斌,等.基于Kinect的下肢體康復動作評估系統[J].傳感器與微系統,2017,36(1):91-94.
[10] 李 彬,謝 翟,段渭軍,等.基于Kinect的課堂教學狀態檢測系統[J].傳感器與微系統,2017,36(1):67-70.
[11] 戰蔭偉,于芝枝,蔡 俊.基于Kinect的角度測量的姿勢識別[J].傳感器與微系統,2014,33(7):129-132.
[12] Partridge D.Network generalization differences quantified[J].Neural Networks,1996,9(2):263-271.
[13] Li J F,Xu Y H,Chen Y,et al.A real-time 3D human body tra-cking and modeling system[C]∥IEEE International Conference on Image Processing,2006:2809-2812.
[14] Bruderlin A,Calvert T W.Goal-directed,dynamic animation of human walking[J].Computer Graphics,1989,23(3):233-242.
[15] Irani R,Nasimi R.Evolving neural network using real coded genetic algorithm for permeability estimation of the reservoir[J].Expert Systems with Applications,2011,38 (8):9862-9866.
[16] Kim K,Ahn H.Simultaneous optimization of artificial neural networks for financial forecasting[J].Applied Intelligence,2012,36(4):887-898