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