孫宇航,周建欽,張學鋒
(安徽工業大學 計算機科學與技術學院,馬鞍山 243002)
隨著微型智能穿戴設備的普及與應用,以及智能設備內置處理器運算能力越來越強,人體運動識別成為了當代一個很有價值的研究.很多應用包括健康和健身監測[1,2]、運動記錄等都是基于該研究.此外,通過佩戴智能手環及攜帶智能手機可以實現對用戶進行不同運動模式的記錄,這樣可以幫助用戶及時了解運動的情況,及時做出調節,使用戶可以更加科學地安排各類運動的時間.運動手環上配備了越來越多的傳感器,比如溫度傳感器、加速度傳感器、壓力傳感器等,可以隨時隨地采集用戶的運動信息,這為我們研究人體運動模式提供了硬件支持.同時,伴隨著人工智能的發展,機器學習,數據挖掘算法為我們提供了算法支持.不過市面上的智能手環大多只局限于計步和脈搏測量等簡單功能,現有的研究也大多只針對一些簡單動作如走路,上樓、下樓、靜止等,并沒有對球類和劃船等體育運動進行識別記錄.
目前國內外學者已經展開對人體運動模式識別算法的研究,也取得了相應的成果.張旭[3]利用表面肌電(SEMG)傳感器在相應肌群皮膚表面捕獲的肌肉活動信息進行了手勢命令的檢測與識別.該方法只針對手勢動作、頸部動作和腿部動作的識別進行了研究,在運動識別種類上有很大的局限性,無法對一些常見戶外運動如球類運動、劃船等進行識別.陳燕湄[4]利用計算機視覺相關算法,處理捕獲攝像機拍攝的手勢圖像并對圖像加以分析進行手勢識別.此外,江超等[5]通過提取攝像頭動態手勢軌跡來識別動作,準確率達到了90%以上.這兩種主要是基于圖像和視頻處理來設計運動識別算法,對拍攝圖片和視頻的背景要求比較苛刻,在復雜的環境中難以準確捕捉人體的運動動作,而且基于圖像處理算法復雜度較高.張毅等[6]通過將加速度傳感器和陀螺儀相結合,融合兩個傳感器的數據,再構建隱馬爾科夫模型實現日常行為的識別.這種方法需要處理兩種傳感器的數據,大大增加了系統的開銷,而且隱馬爾科夫模型只依賴于每一個運動狀態,而傳感器輸出的數據為長序列,此模型對于長期運動識別并不理想.
本文描述一種對走路、跑步、羽毛球正手揮拍、劃船、打乒乓球5 種運動模式的識別方法.只需要佩戴單個智能手環即可實現,不需要依賴復雜的硬件設施,手環如圖1所示.首先通過手環內嵌的MPU-9250獲取5 種運動產生的加速度數據.其次經過低通濾波后對數據分段處理,確定每一個完整動作的開始位置和結束位置,再對每個動作進行特征提取.本實驗分別在時域和頻域上提取特征,歸納了不同運動的不同特性,然后通過計算信息增益的方法進行特征的規約,以去除非關鍵特征來提高整個系統的計算效率.最后選取支持向量機[7,8]、決策樹[9]、隨機森林算法分別對5 種模式分類,從中選取出最優的分類模型.整個過程分為5 個模塊,各個模塊之間的流程如圖2所示.

圖1 佩戴示意圖

圖2 流程圖
MPU9250 芯片主要由三軸加速度傳感器,三軸角速度傳感器以及磁力計組成.3 個方向加速度單獨測量,輸出均為16 位的數字量.實驗主要分析由芯片內的加速度傳感器采集的數據.由于要識別的5 種運動相互之間有很大差異,所以需要頻率足夠高的傳感器來收集數據.將內置MPU9250 傳感器頻率設置為200 Hz.這樣的采集頻率足夠收集到5 種運動模式的細節,會給后續的識別算法帶來更高的識別率[10].整個軟件系統客戶端使用MFC 框架完成,算法部分使用Python 語言編寫.
本實驗所有的數據先儲存在手環內置的存儲卡中,以文本格式保存,文本內的數據以向量集 <xi,yi,zi>,i=1,2,3,···的形式展現.實驗過程中使用讀卡器讀取所有采集的數據.
因為不同性別和年齡的人運動有很大的差異性,所以本次實驗的數據采集一共由實驗室5 名男性和5 名女性完成,年齡分布在20~45 歲.采集數據前統一規定手環的佩戴方向和位置(如圖1所示),用來消除不同穿戴方式對實驗的干擾,這樣采集的樣本更具科學性.原始數據采集完成后進行手動標記[11],用數字1,2,3,4,5 分別標記走路、跑步、羽毛球正手揮拍、劃船以及打乒乓球動作.
加速度信號在時域中以數據流的形式呈現,不能直接進行特征工程.常規的方法是設置滑動窗口進行處理,這種方法已經被廣泛地應用于人體運動狀態識別中.滑動窗口是一種簡潔有效的數據分割方法,這種方法的核心是確定滑動窗口的大小.如果窗口設置太大,可能會造成運動識別延遲,還可能導致一個窗口包含不同類型動作,造成訓練誤差.如果窗口設置太小,會導致一個窗口中不能包含一個完整動作,導致運動信息的缺失,從而影響識別結果.文獻[12]采用了200個采樣點大小的窗口,并且相鄰的窗口之間沒有重疊;文獻[13]則將采樣窗口設置為128 個采樣點,相鄰窗口重疊50%.近年來許多學者經過多次實驗研究,發現將滑動窗口重疊率設置為50%是一種比較有效的方法.
實驗綜合分析了5 種運動模式的特點并統計完成每種動作需要的時間,選用4 s 作為一段動作的默認時長,為一個滑動窗口,寬度為800 個采樣點,每兩個相鄰窗口重疊50%.以走路X 方向加速度數據為例,選用4 s 作為窗口的寬度,如圖3,這樣規整了不同動作的加速度信號的長度,對接下來的特征提取和運動識別尤為重要.
相對于機器運動,人體運動較為緩慢,主要包含低頻信號,在實際應用中,加速度信號不可避免地會受到硬件電路、傳輸噪聲、擾動頻率噪聲和抖動的影響,輸出的信號往往夾雜著很多無關信號.當加速度為零時,輸出的結果不為零,而是一個非零向量的輸出areal,即測量值ameasured如式(1)所示.

式中,areal為真實的加速度值,aerror為傳感器的測量誤差.為了使測量的加速度信號更接近真實值,實驗采用了自適應的平滑濾波方法[14].

圖3 信號加窗處理示意圖
常見的平滑濾波方法有兩種:滑動平均濾波方法以及一階慣性低通濾波方法[15].滑動平均法雖然簡單,但是實驗證明實用性較差.在靜態情況下,一階慣性低通濾波效果明顯,但是在運動狀態,相位滯后,所以原始的方法不適合動態信號的處理,為了適應信號的實時性,采用增加閾值的方式去更新濾波參數.定義新的輸出值為當前采樣值和上一次輸出值進行加權,得到本次輸出值.具體算法如式(2)所示.

式中,Y(n)為當前濾波輸出值;m為濾波系數(通常是一個大于0 小于1 的數),它對濾波的效果影響很大;X(n)為本次采樣值;Y(n-1)為上次濾波輸出值.可以看出,本次采樣值對于本次輸出值只占很小的比例,但能夠起到一定的修正作用,這樣做使加速度數據保持較大的慣性,模擬了低通濾波的功能.接下來引入判定運動狀態的條件閾值 Δa,根據式(3)和式(4)進行修改濾波系數m,即:

式中,Δ為本次濾波輸出值和上次濾波輸出值的差;Δa為運動狀態閾值;k0為默認參數.
選取走路模式X 方向某段8 s 原始數據為例,采用上述濾波算法進行濾波處理,濾波前后波形圖如圖4和圖5所示.

圖4 濾波前的加速度信號

圖5 濾波后的加速度信號
對原始的加速度信號進行分割和平滑之后,接下來從時域和頻域中提取相關的特征量[16].根據X,Y,Z 3 個方向上的加速度分別從時域和頻域中提取了34 個特征量,包括3 個方向加速度的均值、合成加速度均值、3 個方向加速度方差、3 個方向加速度最大值、3 個方向加速度最小值、3 個方向加速度兩兩相關系數、3 個方向加速度峰谷值、合成加速度峰谷值、合成加速度方差、以及頻域中通過小波變換得到的加速度信號的能量值.

式中,ax,k,ay,k,az,k為一個窗體中第k個采樣點得到的X,Y,Z 三軸加速度信號;n為每個窗口采樣點數.
合成加速度均值能夠體現某一個運動模式的綜合劇烈程度.計算公式如下:

式中,ak為窗口中第k個采樣點三軸合加速度的模.將ak帶入式(9)可得合成加速度均值aˉ.
3個方向加速度標準差,以X 方向為例,加速度方差 σ2x計算公式如下:

同理可得σ2y,σ2z:

合成加速度方差σ2的算式為:

加速度峰谷值表示在一個窗口中,加速度的最大值和最小值的差值,用apv表示:

利用式(14)可以計算出合加速度的峰谷值以及3 個方向加速度峰谷值.
3個方向加速度兩兩相關系數分別為:


小波的組成成分是一組小波基函數,它可以在局部范圍內對信號時間(空間)域和頻率(尺度)域的特征進行描述,這也是小波變換相對于傅里葉變換的優勢.在任意的時間域或空間域中,小波分析都能夠很有效地對信號進行分析,自適應信號分析的要求,有利于聚焦信號的細節,而這些特性對信號分析是尤為重要的.常用的小波函數有Haar、Daubechies (dbN)小波等15 種.信號經過小波分析之后可得到在各個層級中的能量特征.信號f(t)的二進小波分解可表示為:

其中,A是近似信號,為低頻部分;D是細節信號,為高頻部分,此時信號的頻帶分布如圖6所示.

圖6 多尺度分解的信號頻帶分布
信號的總能量為:

選擇第j層的近似信號和各層的細節信號的能量作為特征,構造特征向量[17]:

本次實驗直接調用Python 中的PyWavelets 信號處理庫,設置j為2,對加速度信號進行特征提取,輸出特征向量:

特征選擇是一個重要的“數據預處理”過程,能夠去除與當前學習任務無關的特征,以減輕學習負擔,降低學習難度.常用的特征選擇算法可分為4 種:過濾式(filter)、包裹式(wrapper)、嵌入式(embedding)以及基于信息增益的方法.由于前三類算法比較復雜,不管是內存開銷還是時間開銷都很大,所以實驗采用基于信息增益(Information Gain,IG)的特征選擇算法[18],這也是一種常用且高效的特征選擇算法.
計算信息增益首先定義信息熵(information entropy).信息熵是一般用作反映樣本集合純度的一種指標.假設pk(k=1,2,···,|y|)為當前樣本集合D中第k類樣本所占的比例,則D的信息熵定義為:

式中,|y|代表標簽類別個數,信息熵Ent(D)值越小,則集合D的純度越高.下面定義信息增益.
由于從信號中提取的特征均為連續值,連續值屬性的可取值數目不是有限的,因此不能直接根據連續值來直接計算信息增益,實驗采用連續值離散化技術.給定樣本集D和連續屬性v,假定v在D上出現了n個不同的取值{v1,v2,···,vn},基于劃分點t可將D分為子集D-t和D+t.對相鄰的屬性取值vi和vi+1來說,t在區間[vi,vi+1)中取任意值所產生的劃分結果相同.定義包含n-1 個元素的候選劃分點集合.

把區間[vi,vi+1)的中位點作為候選劃分點,選取最優的劃分點進行樣本集合的劃分,即:

式中,Gain(D,v,t)是樣本集D基于劃分點t二分后的信息增益,這樣我們將每個特征v帶入,得到所有特征的信息增益值,從而計算出每個特征的重要性值.實驗我們直接使用scikit-learn 中的feature_importance_庫函數計算所有特征的重要性值,根據計算結果我們從中選擇出了16 個特征,如表1所示.
由表1數據可得,Y 方向加速度標準差重要性值最大,體現了不同運動模式左右方向上的偏離程度.Z 方向加速度最大值能夠很準確地區分豎直方向上加速度變化幅度較大或較小的運動.X 方向加速度最小值能夠體現水平方向最小的運動力度.同樣的,其它13 個特征都在不同的方面對運動數據的分類起著至關重要的作用.以上16 個特征的重要性值都是基于訓練樣本計算而來,而訓練樣本由不同年齡和不同性別的人產生的運動加速度數據整理而來,所以通過以上16 個特征來構建出的分類模型對于不同類型人的運動識別均有很強的泛化能力和較好的普適性.其次,本文的特征選擇算法采用了特征子集搜索和評價機制相結合的方式得出特征的重要性值并篩選出最優特征子集,使訓練出的分類模型擁有更高更穩定的識別準確率.

表1 特征重要性值
第3 節我們已經提取并計算出用于分類算法的特征,并計算出特征重要性值,選擇出16 個比較重要的特征.利用被選取的特征值,制作訓練樣本集和測試樣本集.實驗中我們根據樣本的數量和樣本特征的特性,選取支持向量機、決策樹、隨機森林3 種分類模型進行了比較實驗,分別調整模型參數使分類模型對于5 種運動模式的分類準確度達到最優.對每一個分類模型進行了性能的評估,并結合在測試樣本集上的準確度來判別最優模型.
選用支持向量機進行分類是因為這個模型適用于樣本量較小的數據集,而且運算速度快,運算復雜度低.決策樹算法主要基于概率統計,不需要對數據進行歸一化,直接使用原始的數據樣本進行計算,避免了數據的失真,且魯棒性很強.
隨機森林是基于Bagging 的擴展變體,是一種可以同時兼顧分類和回歸的機器學習算法.通過引入兩次隨機,使得該模型在訓練樣本較少時不容易陷入過擬合.這樣即使在實驗中無法保證能夠整理出足夠的運動數據集進行模型訓練,也能確保最終的模型在測試數據識別上的表現比支持向量機和決策樹更加穩定.其次,隨機森林在訓練過程中能夠檢測到特征之間的影響,所以給定運動數據集,該模型就能夠判斷某種運動各個特征之間的相互影響,更加準確地識別當前運動的類別.最后,相比較支持向量機和決策樹,隨機森林更適合解決樣本不均衡問題.本文中5 種運動模式的樣本數并不是均衡的,所以使用隨機森林能夠帶來更好的效果.圖7的柱狀圖表示3 種分類算法分別針對5 種運動模式進行分類的準確率以及對于5 種運動模式的統計比較.

圖7 3 種分類模型的動作模式識別準確率
由圖7可以得出結論.3 種分類模型對于劃船動作的識別都為100%,支持向量機對于打羽毛球動作的識別準確率較高,效果好于另外兩個模型,而決策樹則是在乒乓球動作識別中表現最好.總體來說,隨機森林算法對所有運動模式識別率都很高,且平均準確率最高,達到97.37%,所以系統最終采用隨機森林作為分類模塊.圖8~圖10分別為3 種分類算法的混淆矩陣.
從混淆矩陣中可以看出,走路和跑步可能被誤識別為打羽毛球,少量打羽毛球數據被誤分類為走路和跑步.個別打乒乓球動作被誤分類為走路,總體上隨機森林表現最佳.

圖8 支持向量機算法產生的混淆矩陣

圖9 決策樹算法產生的混淆矩陣

圖10 隨機森林算法產生的混淆矩陣
本文我們是對走路、跑步、打羽毛球、打乒乓球、劃船5 種運動模式識別的研究.首先參與采集數據的實驗人員分別做5 種動作并記錄數據,然后對數據進行預處理,根據運動模式的特點提取出對分類貢獻比較大的特征,并通過特征選擇選取最終貢獻值較大的特征,之后使用分類算法進行運動模式的識別.從而實現對用戶行為的記錄和分析.
獲取原始數據之后,首先對數據進行了預處理,包括濾波、數據加窗等預處理.特別在加窗處理中,我們采用相鄰的兩個窗口重疊50%,以保證樣本的連續性.綜合分析了信號在時域和頻域的特征,選取了16 個最重要的特征,又保證了較高的識別率.我們將同樣的測試數據分別輸入到支持向量機、決策樹、隨機森林中,結果顯示隨機森林算法準確率最高.
本文研究的人體運動識別算法可直接應用于智能手環中,通過自動分析數據,識別并統計該用戶一天內的各類運動,將信息反饋給用戶,這種能識別多運動模式的手環比單一的計步手環提供更加豐富的運動信息.在接下的研究中來將繼續優化算法,減小識別誤差,同時識別更多的運動模式.