?

基于注意力機制的耐力訓練動作識別方法*

2024-03-23 07:30田新壯孫少明王君洪
傳感器與微系統 2024年3期
關鍵詞:步長骨骼耐力

田新壯,孫少明,王君洪

(1.安徽大學物質科學與信息技術研究院,安徽 合肥 230601;2.中國科學院合肥物質科學研究院,安徽 合肥 230031;3.中科合肥技術創新工程院,安徽 合肥 230088)

0 引 言

傳統耐力訓練方法訓練過程枯燥,同時對場地、天氣和訓練時間存在要求。目前市面上有一些諸如Keep 這類的健身軟件,通過視頻語音引導訓練者完成訓練動作,訓練者僅需一部手機可于家中完成訓練,不需要器械,具有訓練時間碎片化的特點。但是需要訓練者自覺完成訓練,缺少監督性。

本文提出一種基于注意力(Attention)機制與門控循環單元(gated recurrent unit,GRU)的、面向耐力訓練的Attention-GRU動作識別方法。在手機端上實現了對耐力訓練動作的識別和監督。

1 相關研究

動作識別作為近年來的研究熱點之一,目前關于動作識別的方法主要有兩種,第一種是基于可穿戴設備或Kinect設備采集人體動作信息。例如曾億山等人[1]基于六軸傳感器實現對嬰幼兒爬行動作的識別。楊文璐等人[2]利用Kinect實時采集下肢動作的骨骼點序列信息實現對康復動作的識別與引導。李浩等人[3]利用Kinect 提取手勢深度信息,基于支持向量機(support vector machine,SVM)算法和動態時間規整(dynamic time warping,DTW)算法實現火車駕駛員手勢識別。這種方法基于可穿戴設備或Kinect設備具有動作識別準確率高的優點,但是對設備存在要求。第二種是基于視頻圖像的人體動作識別方法。楊君等人[4]基于OpenPose提出一種圖像動作識別指導系統,實現人體動作識別。王威等人[5]提出一種基于BlazePose[6]的動作識別算法,采用梯度提升決策樹(gradient boosted decision tree,GBDT)算法實現對開合跳、雙臂伸展、深蹲以及跳繩4個動作的識別,該方法基于手機端實現動作識別,具有實時性以及便攜性,但存在算法總體識別準確率較低,動作識別種類較少的問題。

2 耐力訓練動作識別方法

本文的耐力訓練動作識別方法由輸入層、算法層和輸出層3個部分組成。其結構如圖1所示。

圖1 耐力訓練動作識別方法結構

2.1 移動端數據采集App

本文通過自己開發的數據采集App 采集人體骨骼點信息,整體流程如圖2 所示,首先將手機固定在手機支架上,距離測試者約1.8 m,保證攝像頭可以拍攝測試者全身的視頻信息,視頻輸入至BlazePose 網絡模型中,模型輸出每一幀視頻圖像的人體骨骼點數據,隨后將數據存儲至Excel表格中。

圖2 數據采集流程

BlazePose[6]是一種可實時運行于手機端提取視頻圖像中的人體骨骼點二維坐標的輕量級卷積神經網絡。如圖3所示,左側為該網絡提取的33個骨骼點,其中有面部、手部和足部信息,這部分信息在本文動作識別時作用不大并且會增加計算量。因此選取做耐力訓練時變化幅度較大的節點作為輸出,圖3右側為本文選取的13個關鍵節點。

圖3 BlazePose提取的人體骨骼點信息

2.2 數據預處理

在原始數據采集的過程中,存在鏡頭抖動、光線變化以及網絡模型自身性能的干擾,會有噪聲產生。本文使用滑動窗口均值濾波算法對骨骼點數據進行預處理,算法過程如下:如圖4所示,滑動窗口S的大小為5,骨骼點數據序列長度為n,對于時間t這一時刻的數據在處理后為t-2 至t+2這一時間段共計5幀數據的均值。計算公式如下所示

圖4 滑動窗口均值濾波算法

2.3 特征提取

人體動作識別是基于時間序列的分類問題[7],因此輸入特征需要包含時間維度上的信息。本文采用滑動窗口來提取時間維度上的特征,實驗的手機采樣頻率為(28 ±5)fps左右,因為幀率存在波動,將輸出降采樣至20 fps。對于本文耐力訓練動作數據集來說,最佳窗口為40 幀,最佳步長為30。

因為濾波后13個關鍵節點的位置信息屬于低階特征,無法充分表達動作信息,所以本文基于圖3中13個關鍵節點構建基于靜態和動態特征的融合特征。

2.3.1 靜態特征

靜態特征包含12個距離特征與10個角度特征。其中12個距離特征如表1 所示,因為本文模型采集的數據為2維信息不包括深度信息,為了消除測試者離攝像頭遠近所帶來位置的差異,在計算距離時需要除以x,y軸對應的基準值。以左右臀部x軸的相對距離為例,其計算公式如下

表1 靜態特征

以左肩部與左肘部y軸的相對距離為例,其計算公式如下

其中,x軸方向的基準值為xbase,y軸方向的基準值為ybase。計算公式如下所示

本文選取的10個角度特征如表1 所示。其中,2 個骨骼點P1(x1,y1),P2(x2,y2)與原點構成的夾角θ的計算公式為

其中,由3個骨骼點P1(x1,y1),P2(x2,y2)和P3(x3,y3)構成的夾角θ的計算公式為

2.3.2 動態特征

靜態特征包括了關節點的距離特征與角度特征,運動作為一個動態的過程,關節角速度信息對于動作識別也很重要。本文提取了10個動態特征,是上述提取的10 個角度對應的角速度特征。在計算角速度時,選取當前幀j與上一幀j-1 之間角度的差值作為當前幀的角速度。角速度ωi的計算公式為

2.3.3 融合特征

本文共選取了32個特征,分為12個距離特征和10 個角度特征以及10個角速度特征。距離特征組成的向量D為

角度特征組成的向量φ為

角速度特征組成的向量W為

提取的融合特征組成的向量T為

最終模型輸入的每個窗口包含40幀數據,每幀數據包括32個特征。

2.4 動作識別算法

本文提取的融合特征是骨骼點運動的距離,角度以及角速度特征的集合。網絡模型的輸入為窗口大小為40 的一系列時間序列上的特征,這就要求動作識別模型能夠處理時序信號。本文采用Attention-GRU 方法對骨骼點序列進行動作識別。

2.4.1 GRU層

循環神經網絡(recurrent neural network,RNN)是一種處理時序信號常用的神經網絡[8],RNN處理當前數據受到之前輸入的數據的影響。但RNN無法處理長距離依賴,在長序列訓練過程中性能不佳。LSTM[8]通過單元狀態解決了RNN模型不能記憶長時間信息的缺點,在處理長序列具有更佳的性能。

本文采用GRU處理時序信息,GRU是LSTM的一種變體[9],其結構如圖5 所示。相比起LSTM 具有3 個控制門單元,GRU 有2 個控制門單元,分別是重置門與更新門,GRU通過重置門與更新門控制單元狀態,從而克服了RNN的缺點。與LSTM相比GRU 計算量更小,訓練時間短,同時兩種模型性能差異不大[10]。

圖5 GRU結構

rt和zt分別為GRU的重置門和更新門,重置門用于控制t-1時刻狀態信息需要遺忘多少,更新門則控制有多少t-1時刻的狀態信息被傳遞至t時刻。Wz,Wr,Wh和Uz,Ur,Uh分別為神經元t時刻的輸入權重矩陣和循環輸入的權重矩陣,bz,br,bh為偏置向量。σ為激活函數Sigmoid,其輸出值范圍為(0,1),其公式為

上述公式中,?為矩陣的Hadamard積。tanh為雙曲正切激活函數,其輸出值范圍為(-1,1),其公式為

首先,t時刻重置門和更新門的狀態由t-1 時刻的隱含狀態信息ht-1和t時刻的輸入xt獲取。然后對t時刻的隱含狀態h′t進行計算,最后計算t時刻的隱含層輸出ht。

2.4.2 Attention層與輸出層

本文在動作識別模型中引入Attention 機制,通過Attention機制加強GRU網絡模型某個時間節點與其他時間節點信息時間的關聯性,解決GRU網絡模型在處理長時間序列容易忽略重要時序信息的不足,使得模型更加關注時序輸入中的重要信息。Attention機制模型結構如圖6所示。

圖6 Attention機制結構

其中,ht為GRU 網絡輸出的第t個特征向量,通過解碼器得到權重系數st相乘累加求得最終的輸出向量y。其中,解碼器使用一層全連接網絡,激活函數為SoftMax。?為矩陣的Hadamard積。計算過程如下

將Attention機制層的輸出作為輸出層的輸入,使用一層全連接層進行分類,激活函數為SoftMax,得出最終的動作識別結果,計算公式如下

式中W為Attention 機制層輸出至分類結果的訓練權重系數矩陣,b為偏置,pres為動作識別結果向量。

3 實 驗

本文構建了新的耐力訓練動作數據集,對本文提出的Attention-GRU算法和傳統機器學習算法LSTM、GRU 進行對比實驗,并從準確率(accuracy,A)、精確率(precision,P)、召回率(recall,R)3個方面對實驗結果進行評估。

3.1 數據集構建

本文基于耐力訓練動作構建數據集。共選取測試人員20名,其中男性13名,女性7名。20位測試人員的基本信息如表2所示。

表2 實驗測試人員基本信息

本文使用移動端設備采集數據,設備型號為小米10 智能手機,CPU為高通865,12 GB 運行內存。將設備使用手機支架固定,測試者站在手機的正前方,保證測試者全部身體都能被攝像頭拍攝到。同時打開錄屏功能,后續人工對數據集進行標注。

每一位測試者執行本文制定的8 種耐力訓練動作,各執行1 min,完成一種動作后休息5 min,保證動作的標準。20位測試者完成測試后,每種動作共有20 min的骨骼點數據,這些數據構成本文的數據集。

3.2 評估標準

采用10折交叉驗證法,將數據集劃分為10 份不重合的子數據集,每次選取1份子數據集作為測試集,其余9 份為訓練集,共進行10 次實驗,取平均結果為最終的實驗結果。

本文從A,P,R以及混淆矩陣對實驗結果進行評估。其中,TP為真正例,TN為真反例,FP為假正例,FN為假反例。公式如下

式(25)中,0≤i,j≤7,n為人工標記為i動作,模型識別結果為j動作。

3.3 實驗結果與分析

實驗設備配置:Intel?i5-7400 處理器,8 G 內存,操作系統為Linux。編程語言:Python3.8??蚣埽篢ensorFlow2.4。

首先對該數據集下不同窗口長度和窗口步長下3種算法的識別情況進行實驗,結果如表3,其中Attention-GRU表示本文的算法。這里使用A評估最優的窗口與步長,本文提出的算法在不同窗口長度和窗口步長下均比另外2種算法A高,同時3種算法在窗口大小為40,步長為30時A最高。

表3 窗口大小與步長實驗結果

當窗口大小為40 幀時,A最高,因為本文提取的骨骼點信息經過降采樣后為20 fps,40 幀為2 s的數據。本文數據集的動作執行時間都在2 s 以內,40 幀的窗口大小可以有效地包括整個動作特征。當步長為窗口大小的75%時相比其為窗口大小的50%時,能夠更加有效地解決1 個窗口內包含2個動作信息的問題,減少包括2 個動作信息的窗口的數量,從而提高了A。

基于表3,本文選取40 幀的窗口大小和30 的步長對3種算法進行評估。識別結果如表4 所示,本文提出的方法在A,P,R上均比GRU和LSTM算法要高,這證明通過融合Attention機制能夠更加有效地關注輸入時重要的時序信息,從而提高動作識別性能。同時,因為GRU 具有易于訓練的優點,在數據集較小的情況下,通常性能更優,因此基于本文構建的數據集的GRU比LSTM性能更好。

表4 3 種算法的識別結果%

為了更詳細地分析8 種動作的識別結果,給出3 種算法的混淆矩陣。如圖7 所示。在耐力訓練動作數據集中,混效率最高的動作是平板支撐,這是因為該動作與靠墻俯臥撐的關節角度較為相似。同時開合跳、雙臂伸展、仰臥起坐和坐位體前屈都取得了100%的識別率。本文方法在所有動作的識別率上都比GRU高,除了靠墻俯臥撐和平板支撐識別率比LSTM低外,其他動作識別率也都比LSTM高。

圖7 3 種算法的混淆矩陣

4 結 論

本文方法利用手機攝像頭提取人體骨骼點信息,經過特征提取生成融合特征后,通過Attention-GRU網絡對骨骼點特征序列進行識別,輸出動作識別結果。經實驗,針對8種耐力訓練動作的動作識別A為99.56%。

本文研究存在無法實時監測訓練者動作是否標準,無法識別由多個簡單動作組合而成的復雜動作,在以后的研究中需要對這些進行改進與提升從而更好地實現訓練監督。

猜你喜歡
步長骨骼耐力
倍耐力P Zero Elect原配超高性能極氪001FR
基于Armijo搜索步長的BFGS與DFP擬牛頓法的比較研究
做家務的女性骨骼更強壯
三減三健全民行動——健康骨骼
多面好手 倍耐力全新Cinturato P6
骨骼和肌肉
基于逐維改進的自適應步長布谷鳥搜索算法
一種新型光伏系統MPPT變步長滯環比較P&O法
3000m跑,鍾練耐力和意志
一種新穎的光伏自適應變步長最大功率點跟蹤算法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合