王健



摘 ? 要:本文設計了一種基于深度傳感器的動作識別系統。該系統采用Kinect深度傳感器對采集的人體動作視頻進行特征提取,搭建了一個單層的BP神經網絡進行訓練和識別。實驗表明,該系統在少樣本訓練的情況下,依然能夠較準確地對站立、坐下、揮手與蹲下4個動作進行識別。該方法在數據維度上引入了第三維“深度信息”,所以在網絡訓練時的速度和識別的響應速度要優于常規方法,也為人體動作識別提供了一種思路。
關鍵詞:深度傳感器 ?BP ?神經網絡動作識別
中圖分類號:TP391.9 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼:A ? ? ? ? ? ? ? ? ? ? ? ?文章編號:1674-098X(2019)09(a)-0115-03
人體動作識別在人機體感交互、醫療健康、增強現實、體育運動分析及機器人控制等諸多領域擁有廣泛的應用前景。人體動作的識別最早始于20世紀90年代[1],相關的研究成果與論文增逐年遞增趨勢。
方法一般有兩種:一種是通過可穿戴式傳感器,其優點是準確性高、實時性高,缺點是要求用戶必須佩戴傳感器在身體的指定位置,這樣會使用戶舒適感降低[2],該方法在護理與康復訓練等特殊領域還有一定的應用,部分學者在堅持著進行該方法的研究與改進[3];另一種是基于計算機視覺的非侵入式檢測方法,通過計算機對圖像傳感器(彩色攝像機)采集的原始圖像或圖像序列數據進行處理和分析,學習并理解其中人的動作和行為[4]。目前的研究大多數主要是基于2D視覺的動作識別,而系統受到計算機圖像處理能力的制約,特別是實時圖像處理,會受到光照、遮蔽、陰影、背景等因素的制約,對最終的識別結果造成影響[5]?;赗GB彩色圖像的行為識別方法的一個弊端就是把原本三維世界的立體信息轉換成了平面上的二維圖像,另一維度信息的丟失勢必會造成后期人體動作識別率的下降。
1 ?實現思路
如圖1所示,使用圖像分割技術,將圖像中的人體從背景環境中剝離;根據“骨骼跟蹤”的人體關節點生成骨架系統,獲取機器學習需要的特征信息。使用機器學習方法來構造分類器,并對分類器進行優化以提高準確率。
2 ?骨骼數據獲取與處理
為降低特征數據維數和提高計算效率,相對于常用的距離特征提取[6],本文采用了一種基于骨骼向量的方向余弦的特征提取方法,具體思路如下:將人體20個關節點進行分層,如圖2所示:第一層:身體軀干關節點。該層主要包括頭、左右肩、脊椎等8個關節點(數字1)。第二層:四肢關節點。包括左右肘、腕,左右膝、踝8個關節點(數字2)。第三層:手與腳。剩余的左右手、腳這4個關節點,將其歸為第三層(數字3)。手掌和腳在本文所研究的人體動作中所起的作用非常微小,因此只提取第一層和第二層這16個重要的關節點進行下一步工作。
將16個關節點中每兩個關節點連接組成一段骨骼,定義為一個向量,第一層的8個向量標記為{a1,a2,…,a8};第二層8個標記為{a9,a10,…,a16}。定義的16個骨骼向量的方向余弦特征來表示某一類動作,現取出右手的肩關節到肘關節這個骨骼向量(即標號為a8的向量)進行詳細算法分析:設獲取肩關節的三維坐標為(x1,y1,z1),肘關節的三維坐標為(x2,y2,z2),如圖3所示。設向量a8與坐標系的三個方向角分別為:α,β,γ。則該骨骼的特征向量可定義為cosα,cosβ,cosγ。公式如下:
(1)
通過上述算法,依次將已定義的16個骨骼向量的方向余弦值作為特征進行提取送入分類器進行訓練。
3 ?基于BP神經網絡的分類器
傳統的模版匹配方法在識別的準確率上難有進展,其算法的設計有賴于專業背景知識的掌握程度,而將機器學習的方法引入到動作識別中還有很大的發展空間,常見的方法有支持向量機[7]、貝葉斯網絡和神經網絡,本文采用分類器為BP神經網絡,進行分類器的訓練過程介紹,動作識別使用的三層BP網絡,如圖4所示,它包括一個16個節點輸入層、一個1024個節點的隱含層和一個4個節點的輸出層,其中{x1,x2,x3……xn}為骨骼特征向量輸入。
該神經元網絡的隱層神經元的輸出為:
(2)
輸出層神經元的輸出為:
(3)
其中,wij表示輸入層第i個神經元與隱層第j個神經元之間的連接權;vjt表示隱層第j個神經元與輸出層第t個神經元之間的連接權;θj、rt表示相應神經元的激活閾值;f(x)表示神經元的激活函數。該網絡使用了Relu激活函數,損失函數定義如下:
(4)
yt表示第t個神經網絡的期望輸出值;ct表示第t個神經網絡的實際輸出值;當訓練樣本總數為K時,網絡全局輸出誤差采用最小方差計算。這里的權值wij調整采用了梯度下降算法。
隱含層和輸出層神經元之間的連接權v的梯度值d為:
(5)
用dkt、bj、vjt和rt計算出下一次隱含層和輸出層之間的新的連接權和閾值為:
(6)
輸入層到隱含層之間的連接權的修正量e為:
(7)
用ekj、αki、wij和θj計算出下一次輸入層和中間層之間新的閾值和連接權為:
(8)
(9)
每個樣本學習結束后,調整相應的連接權值,直到K個樣本都學習結束,則判斷全局輸出誤差函數是否達到設定的收斂限定值,直到誤差函數達到限定值,網絡訓練結束;否則,如果在達到最大學習次數時誤差仍然大于設定數值,訓練也結束,則網絡訓練失敗。
4 ?實驗及總結
實驗環節采用了微軟公司的Kinect第二代傳感器,軟件運行環境為Windows10、VisualStudio2012、KinectSDK1.5,開發語言采用C#.Net,系統運行效果如圖5所示。我們對站立、坐下、揮手、蹲下四個動作進行了數據采集和訓練。然后進行了識別測試,四種動作的識別率均達到92%以上,識別率達到要求。
參考文獻
[1] 徐光祐,曹媛媛.動作識別與行為理解綜述[J].中國圖象圖形學報,2009,14(2):189-195.
[2] Maekawa,YutakaYanagisawa,YasueKishino,etal.Object-basedactivityrecognitionwithheterogeneoussensorsonwrist.TakuyaPervasiveComputing.2010.
[3] 王琳琳,夏侯士戟.HandGestureRecognitionbyAccelerometer-BasedClusterDynamicTimeWarping[J].JournalofDonghuaUniversity(EnglishEdition),2017,34(4):551-555.
[4] Aggarwal,M.S.Ryoo.Humanactivityanalysis[J].J.K.ACMComputingSurveys(CSUR).2011(3).
[5] 吳曉雨,楊成,馮琦.基于Kinect的手勢識別算法研究及應用[J].計算機應用與軟件,2015,32(7):173-176,276.
[6] 辛義忠,邢志飛.基于Kinect的人體動作識別方法[J].計算機工程與設計,2016,37(4):1056-1061.
[7] 朱國剛,曹林.基于Kinect傳感器骨骼信息的人體動作識別[J].計算機仿真,2014,31(12):329-333,345.