李元良 史中權(quán) 李少輝 李嘉昕 陳富東 王瑞琪 丁漢祥
(河海大學(xué)機(jī)電工程學(xué)院 江蘇 常州 213022)
近年來,智能穿戴產(chǎn)品及其技術(shù)推廣不斷深入,市場上的各種智能手環(huán)、智能手表層出不窮,也給人們帶來了新奇的運動記錄和分析體驗。然而市場上大多數(shù)可穿戴設(shè)備諸如手環(huán)等產(chǎn)品只包含計步、里程、卡路里消耗等數(shù)據(jù)的記錄及分析功能,并沒有針對某類體育運動的動作識別和計數(shù)功能。為方便教練員更好地分析運動員在訓(xùn)練和比賽中的表現(xiàn),人們希望能夠記錄運動員在場上的技術(shù)動作次數(shù)。以往采用錄像回放來分析運動員數(shù)據(jù),這不僅費時也費力,因此希望借助于更加輕便的可穿戴設(shè)備來實現(xiàn)運動識別和計數(shù)。本文研究的基于MEMS傳感器的人體運動識別系統(tǒng)適用于專業(yè)乒乓球和羽毛球領(lǐng)域,可識別包括走跑、乒乓球正反手、羽毛球正反手、羽毛球挑球以及靜止等7種動作的識別及計數(shù)。
目前國內(nèi)外學(xué)者已經(jīng)展開人體運動識別算法的研究。Allen等[1]采用分布式傳感器網(wǎng)絡(luò)進(jìn)行人體動作識別,提出一種線性結(jié)算方法來處理傳感器網(wǎng)絡(luò)數(shù)據(jù),但傳感器較多,數(shù)據(jù)量較大,實時性不高。李峰等[2]利用手機(jī)自帶加速度計和陀螺儀傳感器采集人體運動數(shù)據(jù),并對原始數(shù)據(jù)的時域和頻域進(jìn)行了分析,提取了相關(guān)特征值。再利用J48決策器結(jié)合Markov模型得到識別結(jié)果,能夠識別人上樓、下樓,跑動、走路、靜止等狀態(tài)。但該算法只可識別一段時間內(nèi)人的某種狀態(tài),并不能對動作進(jìn)行計數(shù)。周林等[3]同樣采用決策樹并采用加窗處理實現(xiàn)人體下蹲、躺等動作的識別,但由于采用加窗處理,仍然無法對任意一個單獨的動作進(jìn)行分割,難以實現(xiàn)計數(shù)功能。此外以上兩篇文獻(xiàn)中都采用了決策樹分類算法。該算法較適用于處理非數(shù)值類型的數(shù)據(jù),而不擅長連續(xù)數(shù)據(jù)類型,并且該算法自學(xué)習(xí)能力較差,需要為每一個運動員定制不同的邏輯規(guī)則[4],計算量也較為龐大。當(dāng)識別類型增多,規(guī)則也將更加復(fù)雜,這大大增加了模型識別錯誤率。因此為滿足適用性及精度需求,本文采用BP神經(jīng)網(wǎng)絡(luò)作為分類器。該算法具有很強(qiáng)的學(xué)習(xí)反饋能力,通過學(xué)習(xí)每一個運動員的運動數(shù)據(jù)樣本,不斷更新網(wǎng)絡(luò)參數(shù),達(dá)到越訓(xùn)練越準(zhǔn)的效果。此外本文采用了動作分割算法確定每一個動作的起點和終點,實現(xiàn)了對各類動作的計數(shù)功能。
人在球場上做揮拍、跑動等動作時,持拍手臂主要有兩方面的變化:一是手臂的移動;二是手臂的旋轉(zhuǎn)[5]。因此可利用MEMS傳感器采集持拍手臂三軸加速度以及三軸角速度信號,加速度信號體現(xiàn)手臂的移動,角速度信號體現(xiàn)手臂的旋轉(zhuǎn)。MEMS傳感器是采用微電子和微機(jī)械加工技術(shù)制造出來的新型傳感器,具有體積小、質(zhì)量輕、功耗低等特點,適用于可穿戴設(shè)備等嵌入式應(yīng)用[6]。
本文研究的運動識別系統(tǒng)包括MEMS人體信號采集裝置以及PC端軟件。MEMS人體信號采集裝置負(fù)責(zé)采集人體持拍手臂的三軸加速度、三軸角速度以及三軸姿態(tài)角信號,通過藍(lán)牙模塊將原始數(shù)據(jù)上傳至PC端軟件,PC端軟件對數(shù)據(jù)進(jìn)行解碼并利用運動識別算法得出識別結(jié)果。該識別算法可識別乒乓球正反手、羽毛球正反手、羽毛球挑球、跑動、靜止等7種動作。軟件每隔20 s調(diào)用一次運動識別算法,并更新顯示界面。
圖1為MEMS人體信號采集裝置結(jié)構(gòu),采用STM32系列處理器作為主控芯片,通過YJ901模塊采集人體三軸加速度、三軸角速度以及三軸姿態(tài)角等數(shù)據(jù)。YJ901模塊集成了MEMS傳感器,該模塊利用卡爾曼濾波技術(shù)融合MEMS傳感器輸出的三軸加速度和三軸角速度信號,計算出三軸姿態(tài)角[7],通過串口輸出人體數(shù)據(jù),STM32處理器則以100 Hz的采樣頻率采集YJ901模塊輸出的人體信號,并通過藍(lán)牙HC-31模塊以115 200的波特率將數(shù)據(jù)上傳至PC端上位機(jī)。此外,人體信號采集裝置配備了充電管理芯片,可實現(xiàn)對120 mAh鋰電池進(jìn)行充電。
圖1 MEMS人體信號采集裝置結(jié)構(gòu)
圖2為PC端上位機(jī)軟件框架,該軟件負(fù)責(zé)接收來自MEMS人體信號采集裝置的加速度、角速度、姿態(tài)角等原始信號,并集成了主要的運動識別算法。軟件接收到原始數(shù)據(jù)后,分別對數(shù)據(jù)進(jìn)行本地存儲和繪圖;當(dāng)軟件模式選擇為競賽模式時,軟件將對原始數(shù)據(jù)進(jìn)行動作分割、特征值提取,并從本地數(shù)據(jù)庫或云端數(shù)據(jù)庫調(diào)用神經(jīng)網(wǎng)絡(luò)模型參數(shù),并輸出識別結(jié)果至軟件界面;當(dāng)軟件選擇為網(wǎng)絡(luò)訓(xùn)練模式時,進(jìn)入BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練狀態(tài),球員重復(fù)某種運動類型來提供神經(jīng)網(wǎng)絡(luò)所需樣本,軟件同樣也需要進(jìn)行動作分割與特征值提取這兩個過程來生成新的訓(xùn)練樣本,用此來訓(xùn)練神經(jīng)網(wǎng)絡(luò),并將更新的網(wǎng)絡(luò)參數(shù)上傳入本地與云端數(shù)據(jù)庫,給競賽模式下的神經(jīng)網(wǎng)絡(luò)提供網(wǎng)絡(luò)參數(shù)。
圖2 PC端上位機(jī)軟件框架
本文提出的運動識別算法流程如圖3所示,包括動作分割模塊以及模式識別模塊。動作分割模塊目的是對原始數(shù)據(jù)(三軸加速度、三軸角速度和三軸姿態(tài)角)進(jìn)行動作區(qū)間分割,從而提取運動員某個單一動作的數(shù)據(jù),包括信號選取、平滑處理以及分割點獲取。模式識別模塊基于BP神經(jīng)網(wǎng)絡(luò)分類器,先根據(jù)得到的分割點信息截取單一動作數(shù)據(jù),再對其進(jìn)行特征值提取,最后輸入訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)模型中得到識別結(jié)果。
圖3 運動識別算法流程圖
動作分割算法作用是將運動員的一段時間內(nèi)各個動作分離,并獲知每個動作的起點和終點。動作分割算法的精度將直接影響動作識別精度以及動作計次精度。文獻(xiàn)[8]采用基于閾值的方法來分割合成加速度信號,便于實現(xiàn)人體手勢識別,但該方法適合應(yīng)用于手部動作從靜止到啟動再到靜止的過程,及動作前后手臂狀態(tài)為靜止的情況。而本文中佩戴人體信號采集裝置的運動員往往會連續(xù)地做各種不同動作,因此不適用于本研究。文獻(xiàn)[9]采用尋找加速度信號波峰的方法來實現(xiàn)走路計步,但該方法只適用于簡單動作的計次,面對存在多個局部波峰的復(fù)雜動作,該方法將帶來較大誤差。本文采用的動作分割算法可分割連續(xù)復(fù)雜動作,有助于提高動作識別以及計次精度。
如圖3所示的算法流程圖,動作分割算法首先需從X、Y、Z軸加速度,X、Y、Z軸角速度以及X、Y、Z軸姿態(tài)角這9種信號中選擇一個信號波幅相對較大、局部波峰波谷相對較少的信號。這樣有利于在后期平滑濾波中去除局部波峰波谷,提高動作分割精度。由于三軸姿態(tài)角信號范圍為-180°到180°,當(dāng)姿態(tài)角超過180°后,信號會突變?yōu)?180°,易產(chǎn)生對波峰波谷的誤判,因此只分析三軸加速度以及三軸角速度的波形。圖4反映了運動員在連續(xù)做乒乓球正手動作時的加速度與角速度6種信號波形,可發(fā)現(xiàn)Z軸角速度信號一個動作周期內(nèi)的局部波峰波谷數(shù)量相對較少,波幅較大,更適用于有限次數(shù)的平滑處理。這是由于本研究的MEMS人體信號采集裝置采用如圖5所示的佩戴方式。圖中箭頭表示MEMS傳感器的各軸加速度信號方向,而各軸角速度方向符合人體右手螺旋法則,人體在做揮拍、走跑等動作時,手臂更加傾向于繞Z軸旋轉(zhuǎn)。此后對羽毛球正手、走路、跑動等多種動作的各軸信號進(jìn)行對比,Z軸角速度信號仍能體現(xiàn)出較好的可分割性,因此本算法采用該信號作為分割信號。
圖4 各軸加速度與角速度信號波形對比
圖5 MEMS人體信號采集裝置佩戴方式
選定Z軸角速度作為分割信號后,采用平滑濾波的方法去除波形上的少量局部波峰波谷,得到一個較為光滑的曲線,便于下一步尋找波峰波谷以及零點。
本文采用的平滑濾波算法,又稱移動平均濾波法[10]。該方法通過求取滑動領(lǐng)域內(nèi)信號的均值來進(jìn)行去噪,從而讓曲線變得更加平滑,突出整體曲線變化趨勢[11],類似于低通濾波器。領(lǐng)域?qū)挾葘⒂绊憺V波效果寬度較大時,平滑度較高,但靈敏度較低,信號損失較嚴(yán)重;寬度較小時,平滑度較低,但靈敏度較高。本文希望平滑后的信號具有較好平滑度,同時盡量減少信號損失。通過實驗總結(jié),窗寬為5的平滑濾波效果較良好。式(1)為窗寬為5的平滑濾波公式。
(1)
圖6為平滑前后波形對比。原始信號為運動員做羽毛球正手時Z軸角速度信號,利用窗寬為5的平滑處理后,去除了原始信號中的局部波峰波谷,便于下一步尋找每個動作的波峰波谷以及零點。
圖6 平滑前后波形對比
一般而言,運動員持拍手臂動作從啟動到結(jié)束再到下一次動作的啟動可認(rèn)為是Z軸角速度從0增加到正最大值,再減小到0,又從0降到負(fù)最小值,最后再增加到0的過程。本文以該過程為一個完整的動作,因此通過尋找平滑處理后信號的零點來確定一個動作的起點和終點。圖7為連續(xù)兩次羽毛球正手動作分割示意圖,菱形表示波峰波谷,圓圈表示零點。平滑后的波形使得利用程序較容易找到信號波峰波谷以及零點,并且作為起點或終點的零點左右相鄰分別為波谷和波峰。本文通過圖8所示的方法來尋找動作分割零點,為了進(jìn)一步減少動作細(xì)節(jié)帶來局部波峰波谷,本文在時間軸上增加了動作間隔最小閾值Tmin,通常認(rèn)為人體一個動作的最快完成時間為0.2 s,凡在這個時間段出現(xiàn)的零點將被去除,否則將增加識別錯誤率以及計數(shù)錯誤次數(shù),因此Tmin選定為0.2 s。根據(jù)圖8得到的零點序列為每個動作的起點和終點的橫坐標(biāo),根據(jù)該零點序列到三軸加速度、三軸角速度以及三軸姿態(tài)角這9種原始信號中截取各個動作數(shù)據(jù)段,從而實現(xiàn)動作分割。
圖7 動作分割示意圖
圖8 分割點尋找方法
動作分割結(jié)束后,提取每個動作原始信號的特征值作為BP神經(jīng)網(wǎng)絡(luò)的輸入。一般信號的分析方法分為基于時域、基于頻域以及基于時頻域的分析方法[6]。本文主要研究基于時域的信號分析方法,并從信號時域中提取相關(guān)特征量。為充分利用信號中的信息,本文從三軸加速度、三軸角速度以及三軸姿態(tài)角等9個原始信號種提取了10種特征值,分別為平均合成加速度、合成加速度方差、合成加速度峰谷值、平均合成角速度、合成角速度方差、合成角速度峰谷值、合成加速度與合成角速度協(xié)方差、X軸姿態(tài)角變化量、Y軸姿態(tài)角變化量以及Z軸姿態(tài)角變化量。以下為10種特征值的定義與公式。
(2)
(3)
合成加速度峰谷值apv,一個動作合成加速度信號的最大值與最小值之差,算式如下:
apv=Max(a)-Min(a)
(4)
(5)
(6)
合成角速度峰谷值ωpv,一個動作合成角速度信號的最大值與最小值之差,算式如下:
ωpv=Max(ω)-Min(ω)
(7)
合成加速度與合成角速度協(xié)方差Cov(a,ω),算式如下。
(8)
X、Y、Z軸姿態(tài)角變化量Rx、Ry、Rz分別用式(9)至式(11)表示,其中φx,k、φy,k、φz,k為第k時刻采樣得到的X、Y、Z三軸姿態(tài)角信號。
(9)
(10)
(11)
本文對某專業(yè)運動員的7種運動進(jìn)行信號采集,并對各個動作的特征值進(jìn)行分析,通過分析可得,這10種特征值在區(qū)分7種運動時,都具有一定的貢獻(xiàn)。例如:圖9為平均合成角速度特征值的運動分布圖,該圖反應(yīng)了該運動員7種運動動作平均合成角速度的分布狀況。觀察可得,該特征值下靜止分布在0~100之間,跑動分布在100~200之間,乒乓球反手分布在300左右,這三個動作的分布區(qū)間不與其他動作區(qū)間沖突,因此該特征值對區(qū)分這三種動作的貢獻(xiàn)較大。表1總結(jié)了各特征值可區(qū)分的運動類型,10種特征值可完全覆蓋7類運動類型,因此選取這10種特征值作為BP神經(jīng)網(wǎng)絡(luò)分類器的輸入較為合理。
圖9 平均合成角速度運動分布圖
特征值可區(qū)分的運動類型a羽毛球正手σa2羽毛球正手,乒乓球反手apv羽毛球正手,跑動,靜止ω乒乓球反手,跑動,靜止σω2乒乓球正手ωpv羽毛球反手,跑動,靜止Cov(a,ω)羽毛球挑球Rx羽毛球反手,羽毛球挑球Ry乒乓球正手,羽毛球挑球Rz乒乓球正手,羽毛球正手,靜止
神經(jīng)網(wǎng)絡(luò)在模式識別中應(yīng)用較廣泛,具有自學(xué)習(xí)、自適應(yīng)的能力和高速尋找優(yōu)化解的能力[12]。BP神經(jīng)網(wǎng)絡(luò)是一種多層前饋網(wǎng)絡(luò),其特點是信號向前傳播和誤差反向傳播,其結(jié)構(gòu)包括輸入層、隱含層以及輸出層[13]。圖10為一個四輸入三輸出的三層BP神經(jīng)網(wǎng)絡(luò)示意圖。
圖10 BP神經(jīng)網(wǎng)絡(luò)示意圖
本文采用采用BP神經(jīng)網(wǎng)絡(luò)作為分類器,以提取的10個特征值作為輸入,7種運動類型作為輸出,根據(jù)經(jīng)驗式(12),選取隱藏層節(jié)點數(shù)為8。
(12)
式中:n為隱含層,m為輸入層數(shù),k為輸出層數(shù),a為1~10之間的調(diào)節(jié)常數(shù)。
本文在訓(xùn)練神經(jīng)網(wǎng)絡(luò)之前,采集了專業(yè)運動員的1 633組標(biāo)準(zhǔn)動作的特征值作為樣本空間,包含了7種運動類型,其中70%作為訓(xùn)練樣本,15%作為驗證樣本,15%作為測試樣本。經(jīng)過測試與調(diào)整,設(shè)定網(wǎng)絡(luò)目標(biāo)誤差為0.001,訓(xùn)練迭代次數(shù)為 20,學(xué)習(xí)速率為0.3。表2所示為BP神經(jīng)網(wǎng)絡(luò)產(chǎn)生的混合矩陣,表2中第一行與第一列數(shù)字的標(biāo)注如下:1代表乒乓球正手;2代表羽毛球正手;3代表乒乓球反手;4代表羽毛球反手;5代表羽毛球挑球;8代表走跑;10代表靜止。混合矩陣表明網(wǎng)絡(luò)的綜合準(zhǔn)確度達(dá)到97.5%,基本滿足識別精度要求。
表2 BP神經(jīng)網(wǎng)絡(luò)混合矩陣
本研究搭建了如圖11所示的MEMS人體信號采集裝置樣機(jī),將運動識別算法編寫入如圖12所示的PC端軟件中。軟件以20 s為周期實行運動識別算法,將20 s內(nèi)的運動員原始數(shù)據(jù)進(jìn)行動作分割,并對各動作進(jìn)行特征值提取,最后輸入已經(jīng)訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)得到各動作的識別結(jié)果,并對各運動類型進(jìn)行計數(shù)。軟件中間部分顯示了20 s內(nèi)各動作的計次結(jié)果以及累計計次結(jié)果,軟件中指示的其他動作代表靜止動作。
圖11 MEMS人體信號采集裝置樣機(jī)
圖12 PC端軟件界面
圖13所示為運動員在實戰(zhàn)中20 s內(nèi)乒乓球運動的動作分割與識別結(jié)果圖。通過該運動識別算法,不但準(zhǔn)確實現(xiàn)了動作分割,也實現(xiàn)了運動類型的準(zhǔn)確識別,識別結(jié)果已在圖中標(biāo)出。1代表乒乓球正手,3代表乒乓球反手,6代表跑動,7代表靜止,該圖準(zhǔn)確反應(yīng)了運動員9次乒乓正手,8次乒乓反手,4次跑動,最后以靜止?fàn)顟B(tài)結(jié)束,與圖12軟件中對應(yīng)動作計次情況一致。圖14為20 s內(nèi)羽毛球運動的動作分割與識別結(jié)果圖,2代表羽毛球正手,4代表羽毛球反手,5代表羽毛球挑球,同樣準(zhǔn)確反應(yīng)了運動員10次羽毛球正手,8次羽毛球反手以及4次羽毛球挑球,同樣與現(xiàn)場實際情況基本一致。
圖13 乒乓球運動動作分割與識別結(jié)果圖
圖14 羽毛球運動動作分割與識別結(jié)果圖
通過上述實驗,驗證了本文運動識別算法的準(zhǔn)確性。通過上位機(jī)軟件的實施,體現(xiàn)了一定的實時性,可應(yīng)用于專業(yè)乒乓球運動員以及羽毛球運動員在比賽或訓(xùn)練中的連續(xù)動作識別與計次。
本文提出的運動識別系統(tǒng),通過運動傳感器采集運動員持拍手臂的三軸加速度、三軸角速度以及三軸姿態(tài)角作為原始數(shù)據(jù);通過窗寬為5的平滑濾波算法對Z軸角速度進(jìn)行濾波,去除局部波峰波谷,提高了運動分割精度;通過尋找波峰波谷以及零點的方法獲得各個動作的起點和終點,并提取了一個動作的10種特征值作為BP神經(jīng)網(wǎng)絡(luò)的輸入;通過一定數(shù)目的運動樣本來訓(xùn)練神經(jīng)網(wǎng)絡(luò),最終可實現(xiàn)乒乓球和羽毛球等7種運動類型的識別與計數(shù);通過實驗驗證,該運動識
別系統(tǒng)在運功識別功能上具有一定的準(zhǔn)確性與實時性,并具有一定的使用價值。