李毅
(西安郵電大學(xué),陜西 西安 710100)
當(dāng)前常用的人體姿態(tài)方式為通過傳感器或者圖像視頻信息獲取人體運動特征數(shù)據(jù),并根據(jù)不同動作之間的特征數(shù)據(jù)差異來識別動作姿態(tài)。其中圖像視頻信息識別方式雖然有著較高的動作姿態(tài)識別率,但卻會將人體活動范圍局限在視頻圖像獲取范圍,并且相關(guān)設(shè)備成本較高,不利于普及推廣;傳感器識別方式多是采用加速度/角速度傳感器獲取運動原始數(shù)據(jù),并從中獲取特征數(shù)據(jù),根據(jù)特征數(shù)據(jù)對人體運動姿態(tài)進(jìn)行識別分析,相對于視頻圖像信息方式來說,傳感器方式成本更低,并且數(shù)據(jù)獲取便利,不易受到環(huán)境干擾,相關(guān)特點促使基于傳感器的運動識別方式得到廣泛應(yīng)用[1]。不過結(jié)合實際情況來看,單一傳感器所獲取的表征人體運動數(shù)據(jù)較少,難以保障特征數(shù)據(jù)的精準(zhǔn)性,所以需要采用兩個或者兩個以上的傳感器設(shè)備。因此,以加速度傳感器為研究視角,提出一種基于多加速度傳感器的人體姿態(tài)識別方法,保障獲取特征數(shù)據(jù)的精準(zhǔn)性,將有著一定的研究價值。
AdaBoost算法通常由多個弱分類器組成,實際預(yù)測時使用多個弱分類器進(jìn)行分別預(yù)測投票后獲得結(jié)果。同時,算法還會通過加權(quán)的方式輸出一個強(qiáng)分類器,并以此來對算法進(jìn)行分類判斷。AdaBoost算法強(qiáng)分類器表達(dá)式如下所示:
式中,(x)為算法強(qiáng)分類器;ft(x)為算法弱分類器;at為弱分類器權(quán)重;T為弱分類器數(shù)量。
AdaBoost算法的樣本分類存在錯誤幾率,實際錯誤率計算公式如下:
式中,i為特征向量,yi為類別標(biāo)簽,t為迭代次數(shù)。
弱分類器權(quán)重at表達(dá)式如下:
由此獲取算法權(quán)重更新公式如下:
式中,Zt作為歸一化因子,其所有樣本權(quán)重之和的計算公式如圖1所示。
圖1 AdaBoost 算法流程示意圖
在圖1中,左側(cè)的矩陣為訓(xùn)練數(shù)據(jù)集,其中矩形的寬度代表了此樣本在本土數(shù)據(jù)集中的權(quán)重差異。算法每經(jīng)過1次迭代便會產(chǎn)生1個新的弱分類器,最終將所有弱分類器通過權(quán)重因子加權(quán)的方式獲得最終的強(qiáng)分類器,并由此來對所有測試數(shù)據(jù)進(jìn)行分類判別。
通常情況下,衡量機(jī)器學(xué)習(xí)算法的成功程度是基于錯誤率實現(xiàn)的,也就是說實際測試中需要分析錯分樣本占據(jù)總樣本數(shù)量的比例值[2]。不過此種方式會掩蓋錯分是如何錯誤的事實,所以研究中還需要采用召回率、正確率、ROC曲線等方式來進(jìn)一步衡量指標(biāo)參數(shù)[3]。對此,以下研究中將會采用ROC曲線進(jìn)行指標(biāo)衡量,其中ROC曲線的閾值變化面積代表了分類器的評分性能值,更有利于直觀判斷AdaBoost算法獲取分類器的綜合性能,提高研究精準(zhǔn)性和有效性。
2.1.1 行走姿態(tài)識別
行走作為人體的自主性動作,其實是一個不斷重復(fù)的過程。具體來說,人體動作可以拆分成以下四個階段:第一階段:人體單腳向前邁出,另一只腳先后蹬地;第二階段,人體雙腳向前運動;第三階段,另一只腳向前邁出;第四階段,人體雙腳向前運動,此后人體行走重復(fù)循環(huán)此四個階段過程。在實際行走過程中,人體邁出腳落地前的行進(jìn)方向并不固定,并且一個周期行走姿態(tài)中,第一階段和第三階段呈現(xiàn)出對稱運動,第二階段和第四階段基本一致[4]。因此,在實際行走過程中,人體會在前進(jìn)方向和垂直方向形成一個加速度,且前進(jìn)方向加速度變化大于垂直方向加速度變化。由于人體行走過程中加速度變化主要集中在腳腕和腰部等位置,所以需要分別在人體雙腳腳腕和腰部三個位置設(shè)置加速度傳感器,并由此進(jìn)行行走姿態(tài)測試,獲取三軸加速度特征數(shù)據(jù)。為保障數(shù)據(jù)結(jié)果的精準(zhǔn)性,會分別進(jìn)行10次測試。
2.1.2 跑步姿態(tài)識別
人體跑步也是一個不斷重復(fù)的自主性動作過程,其也可以分為四個階段,并且每個階段內(nèi)容與人體行走姿態(tài)大致相同,差異點僅在于人體跑步每個周期的運動時間小于人體行走每個周期的運動時間。相對于人體行走來說,人體跑步速率更快,此過程中會產(chǎn)生一個水平方向的加速度值,但由于此加速度值相對較小,所以可以適當(dāng)忽略。最終在綜合分析考慮后,為精簡算法模型,人體跑步姿態(tài)模型將會沿用人體行走姿態(tài)模型[5]。根據(jù)實際情況來看,人體跑步過程中加速度變化主要集中在腳腕和腰部等位置,所以需要分別在人體雙腳腳腕和腰部三個位置設(shè)置加速度傳感器,并由此進(jìn)行跑步姿態(tài)測試,獲取三軸加速度特征數(shù)據(jù)。同人體行走姿態(tài)一樣,為保障數(shù)據(jù)結(jié)果的精準(zhǔn)性,會分別進(jìn)行10次測試。
2.1.3 模型測試
在此次測試中,測試者包括15名男性、5名女性,每個人共進(jìn)行10組(每個周期為一組)動作,分別獲取200組行走和跑步數(shù)據(jù)。然后,將20名測試者合理分為5組,并從中選擇出4組測試者的跑步和行走測試數(shù)據(jù),即320組數(shù)據(jù)作為訓(xùn)練集,剩下一組測試者的數(shù)據(jù)作為測試集,進(jìn)行5次尋優(yōu)算法,獲得最佳參數(shù)模型。此過程中,通過采用交叉驗證-網(wǎng)格搜索法(K-CV)對AdaBoost行走和跑步識別模型中的基分類器和弱分類器的最大迭代次數(shù)等參數(shù)進(jìn)行自適應(yīng)尋優(yōu)后,進(jìn)而構(gòu)造出AdaBoost行走識別動態(tài)模型。對模型進(jìn)行多次訓(xùn)練,并將每次訓(xùn)練分類結(jié)果求平均數(shù),將平均數(shù)作為交叉驗證的最終結(jié)果,確定模型最優(yōu)值為基尼指數(shù)[6]。此模型訓(xùn)練集的最好模型得分為90.15%,所繪制出的ROC曲線如圖2所示。
圖2 AdaBoost 人體行走和跑步識別模型ROC 曲線
基于圖2的結(jié)果,在保障模型得分最佳的情況下,對測試中的5組數(shù)據(jù)進(jìn)行分別測試分析,最終獲得表1中的模型測試集結(jié)果。
表1 行走和跑步模型測試集結(jié)果
由表1可知,在保障模擬得分最佳的情況下,行走模型識別和跑步模型識別的正確率分別為99.5%、98%,由此可見,單以此模型來看,行走模型識別測試精準(zhǔn)性大于跑步模型測試結(jié)果。
2.2.1 右轉(zhuǎn)姿態(tài)識別
在人體右轉(zhuǎn)過程中,身體會出現(xiàn)一個向右的角度變化?;诖?,合理設(shè)置加速度傳感器以后,傳感器將會獲取人體左轉(zhuǎn)過程中水平方向上的加速度變化數(shù)據(jù);相對來說,人體右轉(zhuǎn)過程中垂直方向雖然也會出現(xiàn)加速度變化,但整體相對較??;前進(jìn)方向上的加速度變化主要取決于人體右轉(zhuǎn)速度,并且由于人體特征的影響,右轉(zhuǎn)過程中左側(cè)的加速度傳感器所獲取的數(shù)值大于右側(cè)傳感器獲取的數(shù)值[7]。由于人體右轉(zhuǎn)過程中加速度主要集中在雙手、雙腳等部位,所以測試中會分別在測試者的雙手、雙腳設(shè)置加速度傳感器,以此來獲取三軸加速度數(shù)據(jù)。為保障數(shù)據(jù)結(jié)果的精準(zhǔn)性,會分別進(jìn)行10次測試。
2.2.2 左轉(zhuǎn)姿態(tài)識別
在人體左轉(zhuǎn)過程中,由于身體會出現(xiàn)角度變化,所以針對此變化合理設(shè)置加速度傳感器,對身體水平方向上的加速度變化值進(jìn)行獲??;垂直方向上雖然也會存在加速度變化,但相對來說,此加速度變化值相對較小;前進(jìn)方向上加速度變化值的大小主要取決于身體左轉(zhuǎn)速度。同時,左轉(zhuǎn)中,身體右側(cè)加速度設(shè)備獲取的加速度值大于左側(cè)設(shè)備獲取的加速度值。由于人體左轉(zhuǎn)過程中加速度主要集中在雙手、雙腳等部位,所以為獲取測試結(jié)果,分別在測試者雙手、雙腳設(shè)置加速度傳感器,以此來獲取三軸加速度。為保障數(shù)據(jù)結(jié)果的精準(zhǔn)性,會分別進(jìn)行10次測試。
2.2.3 模型測試
同行走和跑步識別模型測試一樣,右轉(zhuǎn)和左轉(zhuǎn)識別模型測試實驗也會采用同樣的測試者獲取右轉(zhuǎn)測試數(shù)據(jù)和左轉(zhuǎn)測試數(shù)據(jù)各200組,然后將20名測試者合理分為5組,從中選擇4組測試者的測試數(shù)據(jù),即320組測試數(shù)據(jù)作為訓(xùn)練集,剩下一組測試者的數(shù)據(jù)作為測試集,共進(jìn)行5次尋優(yōu)算法,最終獲得最佳參數(shù)模型。具體模型訓(xùn)練集中最優(yōu)模型得分獲取過程與行走和跑步識別模型訓(xùn)練集得分獲取過程大致相同,在此將不再另行贅述,最終獲取模型最佳得分為90.65%,ROC曲線如圖3所示。
圖3 AdaBoost 人體右轉(zhuǎn)和左轉(zhuǎn)識別模型ROC 曲線
基于圖3的結(jié)果,在保障模型得分最佳的情況下,對測試中的5組數(shù)據(jù)進(jìn)行分別測試分析,最終獲得表2中的模型測試集結(jié)果。
表2 右轉(zhuǎn)和左轉(zhuǎn)模型測試集結(jié)果
由表2可知,在保障模擬得分最佳的情況下,右轉(zhuǎn)模型識別和左轉(zhuǎn)模型識別的正確率分別為95.5%、95.5%,由此可見,單以此模型來看,人體右轉(zhuǎn)識別率和人體左轉(zhuǎn)識別率大致相同,但兩者識別效果均不甚理想。
2.3.1 跌倒動作識別
人體跌倒作為一種非自主性動作,其發(fā)生時通常表現(xiàn)出突發(fā)性特征,所以無法進(jìn)行提前預(yù)測。同時,跌倒動作與其他人體動作之間也存在較大差異,整個動作過程存在一定的不固定性和復(fù)雜性,無法提前預(yù)知跌倒方向和跌倒前后動作及姿勢。結(jié)合當(dāng)前社會關(guān)注點來看,人們對于跌倒動作更關(guān)注于是否會對人體重要部位造成影響、人體跌倒后是否能夠自主站起、是否會對人的生命健康造成危害等。
基于以上人體跌倒特征及要求,在數(shù)據(jù)獲取過程中不能采用單一的加速度傳感器進(jìn)行數(shù)據(jù)獲取,所以研究中將會采用多軸加速度傳感器。同時,由于跌倒的突發(fā)性和不可控性,所以在動作發(fā)生的初始階段通常具有較大的加速度,而人體在反應(yīng)過來自己發(fā)生跌倒動作后,會下意識做出手撐地的動作,此時不僅會降低跌倒的人體損傷,還會促使跌倒動作中的加速度值減??;不過部分人反應(yīng)速度較慢,在發(fā)生跌倒動作后可能無法及時作出保護(hù)動作,進(jìn)而導(dǎo)致跌倒對人體造成較大損害,此時加速度不會減小,跌倒過程中人體所受到的合力方向包括水平方向的水平合力和垂直方向的垂直合力[8]。由于人體跌倒過程中身體會出現(xiàn)垂直方向上的位移變化,同時雙手會下意識向跌倒方向撐地,所以此時人體的加速度主要集中在雙手等腰部以上部位,對于腰部以下部位的加速度相對較小,所以人體跌倒測試中將加速度傳感器分別設(shè)置在人體雙手手腕和腰部等位置,以此來獲取三軸加速度。為保障數(shù)據(jù)結(jié)果的精準(zhǔn)性,會分別進(jìn)行10次測試。
2.3.2 模型測試
同行走和跑步識別模型、右轉(zhuǎn)和左轉(zhuǎn)識別模型測試一樣,跌倒識別模型測試實驗也會分別獲取測試者跌倒和非跌倒時的數(shù)據(jù)信息各200組,然后將20名測試者合理分為5組,從中選擇4組測試者的測試數(shù)據(jù),即320組測試數(shù)據(jù)作為訓(xùn)練集,剩下一組測試者的數(shù)據(jù)作為測試集,共進(jìn)行5次尋優(yōu)算法,最終獲得最佳參數(shù)模型。具體模型訓(xùn)練集中最優(yōu)模型得分獲取過程與行走和跑步識別模型、人體右轉(zhuǎn)和左轉(zhuǎn)識別模型訓(xùn)練集得分獲取過程大致相同,在此將不再另行贅述,最終獲取模型最佳得分為89.78%,ROC曲線如圖4所示。
圖4 AdaBoost 人體跌倒識別模型ROC 曲線
基于圖4的結(jié)果,在保障模型得分最佳的情況下,對測試中的5組數(shù)據(jù)進(jìn)行分別測試分析,最終獲得表3中的模型測試集結(jié)果。
表3 跌倒識別模型測試集結(jié)果
由表3可知,在保障模擬得分最佳的情況下,跌倒識別模型的識別正確率為98%,由此可見,單以此模型來看,人體跌倒識別模型的識別正確率相對較高。
為能夠進(jìn)一步驗證本文所提出的AdaBoost算法的有效性,在此對AdaBoost算法和其他機(jī)器學(xué)習(xí)算法進(jìn)行匹配對比,選擇機(jī)器學(xué)習(xí)算法中較為常用的K-近鄰算法和隨機(jī)森林算法作為對比對象。具體測試中,K-近鄰算法和隨機(jī)森林算法將會分別對4組測試者的跌倒和非跌倒數(shù)據(jù)、4組跑步數(shù)據(jù)作為訓(xùn)練集,然后將剩余1組測試者的跌倒和非跌倒數(shù)據(jù)、跑步數(shù)據(jù)作為測試集,在控制測試變量的情況下,最終獲取的測試及對比結(jié)果如表4所示。
表4 不同算法測試對比結(jié)果
如表4所示,相對于K-近鄰算法和隨機(jī)森林算法來說,本文所提出的AdaBoost算法整體測試精度更高,在應(yīng)用過程中具有更強(qiáng)的動作識別效果。同時,對不同算法的訓(xùn)練-測試時間進(jìn)行記錄分析,進(jìn)而獲得圖5中的結(jié)果。
圖5 不同算法的訓(xùn)練-測試時間對比
如圖5所示,相對于機(jī)器學(xué)習(xí)中的兩種常用算法來說,本文所提出的AdaBoost算法的訓(xùn)練-測試時間更短。總體來說,AdaBoost算法具有更強(qiáng)的識別精度和更短的識別時間,所以在實際人體動作識別中也將獲取更強(qiáng)的應(yīng)用成效。
綜上所述,本文提出一種基于AdaBoost算法的多加速度傳感器的人體跌倒識別方法,此方法可以實現(xiàn)人體行走和跑步、左轉(zhuǎn)和右轉(zhuǎn)、人體跌倒等姿態(tài)識別,并且為驗證此方法的有效性,在研究中還將此方法與機(jī)器學(xué)習(xí)中常用的K-近鄰算法和隨機(jī)森林算法進(jìn)行訓(xùn)練-測試匹配對比,最終發(fā)現(xiàn)本文所提出的基于AdaBoost算法的多加速度傳感器的人體跌倒識別方法具有更強(qiáng)的識別精度和更短的識別時間,所以其在實際人體動作識別中也將發(fā)揮出更強(qiáng)的應(yīng)用成效,值得在相關(guān)研究及設(shè)備研發(fā)中進(jìn)行參考和應(yīng)用。