閆 航,陳 剛,佟 瑤,姬 波,胡北辰
(1.鄭州大學 信息工程學院,鄭州 450001;2.鄭州大學 互聯(lián)網(wǎng)醫(yī)療與健康服務協(xié)同創(chuàng)新中心,鄭州 450001;3.鄭州大學 護理與健康學院,鄭州 450001)
腦卒中發(fā)病人數(shù)逐年上升,已成為威脅全球居民生命健康的重大疾病,具有極高的致殘率,其中重度殘疾者約占40%[1]。大量研究表明,由于大腦的可塑性,因此長期規(guī)范化的康復訓練能夠有效幫助腦卒中患者恢復大部分的運動控制和日常生活能力,也是患者出院后進行中長期康復的主要途徑[2]。而居家環(huán)境下的康復過程缺乏必要的指導,家屬由于外出工作等原因也難以做到實時監(jiān)督,因此患者普遍存在康復訓練依從性較差的問題[3],而將基于視頻的動作識別技術用于識別人體的康復鍛煉動作,實時監(jiān)督和指導患者的康復過程,可以提高中長期訓練的康復效果。
目前,學者們對基于可穿戴設備的康復動作識別方法進行大量研究。文獻[4]采用三軸加速度計獲取患者的運動信息,通過支持向量機(Support Vector Machine,SVM)識別肩關節(jié)屈伸、手臂伸展等多種康復動作。文獻[5]采用加速度傳感器采集腦癱兒童的活動數(shù)據(jù),分別結合決策樹、SVM 和隨機森林識別患者動作。文獻[6]通過可穿戴設備獲得上肢康復訓練的常見動作樣本,提出改進的SVM 分類器,實現(xiàn)對6 種康復動作的識別。然而,此類方式會對人體活動造成一定干擾,患者需要同時佩戴多個設備才能實現(xiàn)更好的識別效果。
基于機器視覺的康復動作識別不會對人體活動造成過多干擾,因此具有更好的應用前景,但是視頻處理的復雜性導致該領域的研究充滿挑戰(zhàn)[7]。相比吃飯、喝水、刷牙等簡單的日常行為,腦卒中康復動作更加復雜,通??煞纸鉃槎鄠€元動作,并且動作持續(xù)時間較長,因此識別難度較大。傳統(tǒng)人工特征用于動作識別時缺乏足夠的判別能力,難以對復雜場景的行為進行有效建模[8]。深度學習能夠自主提取關鍵特征,包括3D CNN[9]、LRCN[10]、Two-Stream[11]等典型方法,但深度學習模型通常參數(shù)量龐大,計算復雜度高,制約了其在現(xiàn)實場景中的應用[8]。人體姿態(tài)特征對背景或無關對象具有較強的魯棒性,包含的運動信息也更豐富[12]。文獻[13]基于國際生物力學學會規(guī)范的康復動作,采用深度相機Kinect 提取人體姿態(tài)并通過分析關節(jié)角度的變化進行動作識別。文獻[14]基于Kinect 獲取骨架關節(jié)點,然后結合隨機森林識別老年人的室內活動動作。以上通過傳統(tǒng)分類器或者關節(jié)角度比對的識別方式需要人工建立復雜的對照模型,泛化能力較差。文獻[15]采用循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)從骨架數(shù)據(jù)中提取時空特征,顯著提高了對康復動作的識別能力,而RNN 在挖掘時序關系時仍存在一定的局限性。此外,多數(shù)識別算法的輸入需要依賴已獲取的姿態(tài)特征,對RGB 視頻的通用性較差。
針對上述問題,本文以鄭州大學第二附屬醫(yī)院神經(jīng)康復科設計的家庭腦卒中康復動作為研究基礎,提出一種基于姿態(tài)估計與門控循環(huán)單元(Gated Recurrent Unit,GRU)網(wǎng)絡的人體動作識別算法Pose-AMGRU。引入OpenPose 姿態(tài)估計方法[16]對RGB 視頻中等間隔采樣的圖像幀提取骨架關節(jié)點,并通過預處理進一步提高姿態(tài)數(shù)據(jù)的可靠性。結合注意力機制構建融合三層時序特征的GRU 網(wǎng)絡,從輸入動作特征序列中提取豐富的時空信息,并通過Softmax 分類器進行人體康復動作識別。
本文提出的人體康復動作識別算法主要由人體姿態(tài)估計、預處理、特征提取和分類網(wǎng)絡組成。Pose-AMGRU 識別框架如圖1 所示。
圖1 Pose-AMGRU 識別框架Fig.1 Framework of Pose-AMGRU recognition
該框架的輸入為RGB 視頻流,以一定間隔截取視頻幀,通過OpenPose 姿態(tài)估計方法從中提取包括手臂、腿部以及頸部等18 個2D 骨架關節(jié)點。針對姿態(tài)估計過程中缺失的關節(jié)點,通過計算相鄰幀中相同關節(jié)點坐標的均值以填充缺失點,然后通過霍爾特指數(shù)平滑法減小原始關節(jié)坐標的抖動。在直角坐標系中將骨架關節(jié)點轉化為26 個動作特征并進行歸一化處理,結合注意力機制構建多層GRU 網(wǎng)絡挖掘豐富的時空關系并融合初級、中級和高級時序的特征,融合后的特征通過全連接神經(jīng)網(wǎng)絡(FC)與Softmax 分類器進行多種康復動作識別。該算法利用2D 骨架關節(jié)點的多層次時序關系進行動作識別,相比于3D CNN 等算法具有更強的速度優(yōu)勢,并且由于每一幀只對提取的26 個關鍵動作特征進行處理,構建的多層GRU 網(wǎng)絡相對于主流方法中的CNN網(wǎng)絡大幅減小了參數(shù)規(guī)模,降低了對海量數(shù)據(jù)集的依賴,模型更易于優(yōu)化。
本文采用兼具速度與精度的OpenPose 姿態(tài)估計方法從視頻中檢測骨架關節(jié)點。OpenPose 是一種自頂向下、基于深度學習的實時姿態(tài)估計方法,能夠實現(xiàn)人體面部、軀干、四肢以及手部關節(jié)點的提取,在多人場景中也能保持速度優(yōu)勢。
OpenPose 網(wǎng)絡采取多階段預測的方式,結構如圖2 所示,引入VGG-19 模型的前10 層作為基礎網(wǎng)絡,將輸入的圖像轉化為特征F,通過多層卷積神經(jīng)網(wǎng)絡(C)分階段回歸L(p)與S(p),其中:L(p)為親和度向量場(Part Affinity Fields,PAFs),描述關節(jié)點在骨架中的指向;S(p)表示關節(jié)點的置信度,描述關節(jié)點的位置信息。
圖2 OpenPose 網(wǎng)絡結構Fig.2 Structure of OpenPose network
預測過程通過前TP個階段預測親和度向量場Lt,后TC個階段預測置信度St。在每個階段都將前一階段的結果與原始特征相融合,用以保留圖像較低與較高層次的特征。當1≤t≤TP時,Lt的計算公式為:
當TP≤t≤TP+Tc時,St的計算公式為:
預測出關節(jié)點的位置與親和度向量后,采用匈牙利算法對相鄰關節(jié)點進行二分最優(yōu)匹配,最終得到屬于同一個人體的姿態(tài)信息。姿態(tài)估計模型需要大量標注關節(jié)點的圖像樣本進行訓練,本文預先加載在超大規(guī)模圖像數(shù)據(jù)集COCO 中訓練的網(wǎng)絡參數(shù),在保證檢測精度的同時能夠簡化訓練過程。為加快姿態(tài)估計速度并減少相鄰視頻幀中的冗余信息,每間隔兩個視頻幀進行一次姿態(tài)運算。
OpenPose 兼顧了速度與精度,但應用于視頻中時會出現(xiàn)一定強度的節(jié)點抖動,且在短暫遮擋、光照劇烈變化、目標移動過快等復雜場景下存在關節(jié)點丟失問題。為了盡可能地補全漏檢的節(jié)點坐標,假定短時間內關節(jié)點的移動位近似勻速,在時域上通過結合相鄰視頻幀的節(jié)點信息計算缺失點坐標。
時域均值填充方法如圖3 所示,假設第i幀存在丟失的關節(jié)點,j表示人體關節(jié)編號,通過求取間隔K幀內的關節(jié)點均值來填充缺失點,缺失點的計算方法為:
圖3 時域均值填充示意圖Fig.3 Schematic diagram of time domain mean filling
通過在未缺失關節(jié)點上的實驗結果表明,當K=2 時能取得較好的填充效果。然后采用霍爾特指數(shù)平滑法對關節(jié)點坐標進行平滑操作,去除原始姿態(tài)數(shù)據(jù)中的極值點以減小抖動,同時進一步修正所填充的關節(jié)點坐標,計算公式為:
其中:α、β為平滑參數(shù)且通常均設為0.5;xi、Si、bi分別為第i幀的關節(jié)點坐標檢測值、平滑值和趨勢增量;Si、bi在初始時分別設置為第1 幀的關節(jié)點坐標平滑值、第2 幀與第1 幀的關節(jié)點坐標之差。圖4 為坐站活動中左手關節(jié)點的平滑過程。
圖4 坐站活動中左手關節(jié)點的平滑過程Fig.4 Smoothing process of the left hand joint point in sit-down activities
單個視頻幀能夠獲取到運動目標的18 個2D 骨架關節(jié)點即36 個特征,為進一步減小冗余特征,從中提取能夠表達人體運動的顯著性特征。首先去除左右眼、左右耳共4 個對于所研究動作無關的關節(jié)點,保留的關節(jié)點為鼻(x1,y1)、頸(x2,y2)、左肩(x3,y3)、右肩(x4,y4)、左肘(x5,y5)、右肘(x6,y6)、左手(x7,y7)、右手(x8,y8)、左腰(x9,y9)、右腰(x10,y10)、左膝(x11,y11)、右膝(x12,y12)、左足(x13,y13)和右足(x14,y14)。人體骨架關節(jié)點為直角坐標系下的絕對坐標對于目標遠近、位置和視角變化比較敏感,本文從14 個關節(jié)點中基于肢體劃分進行矢量運算,提取出反映肢體活動的13 個動作矢量。
動作矢量提取方式如圖5 所示,計算方法為同一視頻幀中相鄰的兩個關節(jié)點坐標之差,計算公式為:
其中,Va,Vb,…,Vm為提取的13 個動作矢量,每一個動作矢量為直角坐標系下(x,y)兩個坐標值,表征了每個肢體活動的角度與幅度信息。
圖5 動作矢量提取示意圖Fig.5 Schematic diagram of action vector extraction
骨架關節(jié)點的取值范圍與視頻分辨率成正比,為統(tǒng)一不同樣本的尺度大小并且減少樣本間的差異,將動作矢量V(x,y)進行如下處理:
其中,(vw,vh)為視頻源的分辨率為歸一化為[0,1]的動作矢量。由于不同視頻樣本的時長不一致,因此通過補0 的方式統(tǒng)一時間步長的大小并將其設置為T,每個時間步長的特征維度為26。
人體動作能夠通過具備時序關系的一系列姿態(tài)關節(jié)點進行描述,本文結合注意力機制并融合多層時序信息挖掘具有明顯辨別性的動作特征。循環(huán)神經(jīng)網(wǎng)絡利用可遞歸的循環(huán)單元,通過分析上下文狀態(tài)挖掘時序信息,但傳統(tǒng)的RNN 無法解決長期依賴問題,限制了其預測能力。長短時記憶(Long Short Term Memory,LSTM)網(wǎng)絡的出現(xiàn)解決了長時間序列訓練過程中的梯度消失問題,并廣泛應用于語音識別、機器翻譯等領域。文獻[17]在LSTM 的基礎上提出GRU 網(wǎng)絡,其在保證性能的同時相比LSTM 結構更加簡單,并減小了神經(jīng)網(wǎng)絡的參數(shù)量,其網(wǎng)絡結構如圖6 所示。
圖6 GRU 網(wǎng)絡結構Fig.6 Structure of GRU network
在圖6 中,σ表示Sigmoid 激活函數(shù),GRU單元網(wǎng)絡將原LSTM 中的輸入門、遺忘門和輸出門整合為更新門zt和重置門rt,并去除了LSTM 的單元狀態(tài)c,僅保留一個輸出狀態(tài)h。若當前時刻序列的輸入為xt,則GRU 單元網(wǎng)絡的一次前向計算為:
融合多級空間特征的SSD[18]等卷積神經(jīng)網(wǎng)絡在目標檢測領域取得了較好的結果。受該思想啟發(fā),本文融合不同層次的時序特征進行動作識別,同時結合注意力機制增強特征的顯著性,所設計的分類網(wǎng)絡如圖7 所示。
圖7 分類網(wǎng)絡結構Fig.7 Structure of classification network
分類網(wǎng)絡模型的輸入是從每幀圖像中提取26 個動作特征,時間步長大小為T。MK 為Masking 層,用于支持變長序列,在GRU 遞歸計算中忽略特征值全為0 的時間步長。BN 為Batch Normalization 層,引入可學習參數(shù)β、γ,對輸入樣本進行批標準化處理,將其轉化為均值為0 且方差為1 的分布,能夠改善網(wǎng)絡梯度并加快訓練時的收斂過程。設計三層堆疊的GRU 單元網(wǎng)絡,每層網(wǎng)絡神經(jīng)元的個數(shù)為64,底層單元網(wǎng)絡所有時刻的輸出狀態(tài)h傳遞給下一層。視頻中每幀圖像對于特定動作的分類并非同等重要,為增強關鍵視頻幀的表達能力,引入注意力機制計算每個時間步長輸出特征ht的注意力權重αt,通過每一時刻輸出特征與注意力權重的加權求和得到每一層的時空特征v。本文通過神經(jīng)網(wǎng)絡得到注意力打分函數(shù),計算公式為:
其中,Watt、batt分別為注意力網(wǎng)絡的權重和偏置。第一層~第三層GRU 單元網(wǎng)絡通過注意力機制提取的向量v1、v2、v3分別表達了低層、中層和高層時序特征,并將三層時序特征拼接為融合的特征F:
然后將融合的時序特征F通過全連接神經(jīng)網(wǎng)絡進一步整合關鍵特征,輸出層采用Softmax 分類器進行多種康復動作的分類。通過Softmax 激活函數(shù)將多個神經(jīng)元的輸出轉換為0 到1 范圍的置信概率,假設為Softmax激活函數(shù)輸入向量的第i個特征,計算公式為:
其中,K表示輸入特征個數(shù),即待分類的類別數(shù),通過將輸入轉為概率分布??紤]到人體活動過程中除康復動作外,還會出現(xiàn)其他的動作類型。為提高算法魯棒性,將日常活動所發(fā)生的動作與行為歸為一類并與K-1 種康復動作同時進行分類。對于多分類問題采用交叉熵損失函數(shù),并引入L2 正則化降低模型過擬合風險:
其中,n表示輸入的樣本批量大小,標簽yi為one-hot編碼函數(shù)運算時只保留正確預測的置信概率,其他值則為0。之后采用Adam 優(yōu)化算法來最小化損失函數(shù),Adam 結合了多種優(yōu)化算法的優(yōu)勢,通過計算梯度的一階矩陣和二階矩陣估計動態(tài)調整每個參數(shù)的學習率,具有計算高效、迭代過程穩(wěn)定的特點。經(jīng)過多次迭代來訓練神經(jīng)網(wǎng)絡直到參數(shù)收斂,Pose-AMGRU 算法的分類網(wǎng)絡通過加載訓練好的模型對輸入的視頻進行動作識別。
分類網(wǎng)絡應結合實際動作的特點、持續(xù)時長和視頻幀率選擇輸入的序列長度即時間步長T,因為過短的時間步長不能覆蓋一個完整的動作,過長的時間步長存在的冗余信息不但會降低識別精度,而且會增加模型預測時間,所以合理的時間步長對于識別精度與計算速度至關重要。
本文實驗處理器采用Intel i7-8750,內存為8 GB,顯卡為GTX1060,顯存為6 GB,通過1080P 攝像頭采集視頻,基于Tensorflow 深度學習框架進行姿態(tài)估計模型及分類網(wǎng)絡的搭建,并使用GPU 加速姿態(tài)估計模型的識別過程。
本文根據(jù)參考文獻[19]設計的腦卒中患者家庭康復動作并在專業(yè)護理醫(yī)師的指導下自建一組康復動作數(shù)據(jù)集,同時為客觀評價Pose-AMGRU 算法性能,選取了KTH 公開數(shù)據(jù)集[20]作為對比,數(shù)據(jù)集示例如圖8 所示。
圖8 數(shù)據(jù)集示例Fig.8 Datasets examples
KTH 是動作識別領域的經(jīng)典數(shù)據(jù)集,包含由25個志愿者錄制的拳擊、拍手、揮手、慢跑、跑步和步行6 種動作。該數(shù)據(jù)集共有599 個視頻,可細分為2 391 個動作片段。KTH 中的視頻包含整個目標人體,能夠檢測到完整的姿態(tài)關節(jié)點。
康復動作數(shù)據(jù)集由10 位志愿者在6 種不同環(huán)境下采集的動作組成,共有2 075 個視頻。動作類型分為5 種康復動作及1 種日?;顒觿幼?,其中康復動作的具體說明如表1 所示。日?;顒觿幼靼?、伸展、靜止坐、靜止站等多個行為狀態(tài)。視頻幀率為15 frame/s,持續(xù)時長為7 s~15 s。
表1 腦卒中康復動作描述Table 1 Description of stroke rehabilitation actions
KTH 數(shù)據(jù)集參考文獻[19]的劃分規(guī)則選取訓練集與測試集,其中訓練集的視頻樣本通過對稱變換、隨機裁剪等方式進行數(shù)據(jù)增強,將訓練集擴增1 倍??祻蛣幼鲾?shù)據(jù)集中按照7∶3 的比例劃分訓練集和測試集,并保證測試集中每類動作的樣本比例保持平衡。分類網(wǎng)絡的訓練參數(shù)通過高斯分布獲取的隨機值進行初始化,樣本分批量(batch-size)輸入到分類網(wǎng)絡中。初始學習率設置為0.001,batch-size 為32,時間步長為500。
2.4.1 識別結果可視化及序列長度對準確率的影響
圖9 為Pose-AMGRU 算法對康復動作識別的可視化結果,所測試的動作類型分別為站位扣手上舉、坐位扣手上舉、站位扣手左右平舉、坐位扣手左右平舉、坐站和日?;顒?。本文算法對每種康復動作都預測出較高的置信概率值,表現(xiàn)出較強的區(qū)分能力,在顯卡GTX1060 上的運行速度達到14.23 frame/s。
為分析輸入的序列長度對識別準確率的影響,設置不同的時間步長輸入到分類網(wǎng)絡。實驗結果如圖10 所示,KTH 和康復動作數(shù)據(jù)集分別在80、70 的時間步長下達到最優(yōu)識別準確率,且隨著時間步長的增加,識別性能出現(xiàn)下降的趨勢。
圖9 康復動作識別的可視化結果Fig.9 Visualized results of rehabilitation action recognition
圖10 不同時間步長下的識別準確率比較Fig.10 Comparison of recognition accuracy under different time steps
2.4.2 網(wǎng)絡模型結構與數(shù)據(jù)預處理對準確率的影響
本文驗證融合多級時序特征與引入注意力機制的網(wǎng)絡模型有效性,實驗結果如表2 所示。可以看出,引入注意力機制的GRU 網(wǎng)絡顯著提高了識別效果,未融合三層時序特征的GRU 網(wǎng)絡識別效果也優(yōu)于單層GRU 網(wǎng)絡,而融合三層時序特征的GRU 網(wǎng)絡進一步提高了識別準確率,其在KTH 和康復動作數(shù)據(jù)集中的識別準確率相比單層GRU 網(wǎng)絡分別提高了6.48 和0.97 個百分點。
表2 不同網(wǎng)絡模型結構的識別準確率對比Table 2 Comparison of recognition accuracy of different network model structures %
本文對原始骨架關節(jié)點進行缺失點填充、數(shù)據(jù)平滑和歸一化等數(shù)據(jù)預處理操作,數(shù)據(jù)預處理對識別準確率的影響如表3 所示。相比原始關節(jié)點數(shù)據(jù),預處理后的關節(jié)點數(shù)據(jù)進一步提高了姿態(tài)特征的魯棒性和識別準確率,而康復動作數(shù)據(jù)集中的視頻分辨率較高,因此原始關節(jié)點也取得了較高的識別準確率。
表3 數(shù)據(jù)預處理對識別準確率的影響Table 3 Influence of data preprocessing on recognition accuracy %
2.4.3 不同動作識別算法的準確率對比
圖11 為本文Pose-AMGRU 算法在KTH 數(shù)據(jù)集上的混淆矩陣。可以看出,Pose-AMGRU 算法對拳擊、拍手、慢跑和步行這4 種動作的識別準確率高達100%。
圖11 Pose-AMGRU 算法在KTH 數(shù)據(jù)集上的混淆矩陣Fig.11 Confusion matrix of Pose-AMGRU algorithm on KTH dataset
表4 為本文Pose-AMGRU 算法在KTH 數(shù)據(jù)集上與其他人體康復動作識別算法的識別準確率對比結果。對比算法具體為:1)基于3D CNN 的人體康復動作識別算法[9],從空間與時間維度同時進行卷積來提取時空特征進行動作識別;2)基于Optical flow-SURF+SVM的人體康復動作識別算法[21],融合光流和加速穩(wěn)健特征后,通過SVM分類器進行動作識別;3)基于DT+SVM的人體康復動作識別算法[22],采用降維后的稠密軌跡特征與SVM 分類器進行動作識別;4)基于LC-YOLO的人體康復動作識別算法[23],先從視頻幀中檢測目標人體,再結合CNN 與LSTM 對目標人體進行動作識別;5)基于CNN+SVM-KNN 的人體康復動作識別算法[24],采用混合的SVM 與KNN 分類器對CNN 提取的特征進行動作識別。
表4 KTH 數(shù)據(jù)集上人體康復動作識別算法的識別準確率對比Table 4 Comparison of recognition accuracy of human rehabilitation motion recognition algorithms on KTH dataset %
在康復動作數(shù)據(jù)集中,首先從視頻中提取骨架關節(jié)點進行預處理,在姿態(tài)特征的基礎上將本文Pose-AMGRU 算法與其他人體康復動作識別算法進行對比,實驗結果如表5 所示。運行時間為所有測試樣本的預測總時長,不包括姿態(tài)估計與預處理的計算耗時??梢钥闯?,基于RNN 系列的人體康復動作識別算法的識別準確率優(yōu)于基于傳統(tǒng)隱馬爾科夫模型(Hidden Markov Model,HMM)的人體康復動作識別算法,而Pose-AMGRU 算法取得了最好的識別結果,但其需要耗費更多的運算時間,在一定程度上影響了實時性。
表5 康復動作數(shù)據(jù)集上人體康復動作識別算法的識別準確率對比Table 5 Comparison of recognition accuracy of human rehabilitation motion recognition algorithms on rehabilitation action datasets
2.4.4 不同動作識別算法的訓練參數(shù)量對比
將本文Pose-AMGRU 算法與基于主流深度學習模型的人體康復動作識別算法的訓練參數(shù)量進行對比,實驗結果如表6 所示。基于Two-Stream 的人體康復動作識別算法[11]雖然在動作識別領域取得了較好的成果,但是其光流圖的計算非常耗時,模型也存在參數(shù)量過大的問題?;贑3D 的人體康復動作識別算法[27]由多層3D CNN 構成,參數(shù)量龐大?;贚RCN 的人體康復動作識別算法[11]中的卷積網(wǎng)絡部分可以采取遷移學習方法,一定程度上解決了小樣本下的學習問題。本文Pose-AMGRU 算法只需對每幀所提取的低維度特征進行處理,并通過淺層GRU 網(wǎng)絡進行時空特征提取,大幅降低了所需訓練的參數(shù)量。
表6 4 種人體康復動作識別算法的訓練參數(shù)量對比Table 6 Comparison of training parameter amount of four human rehabilitation motion recognition algorithms
本文提出一種輕量且高效的人體康復動作識別算法。通過姿態(tài)估計方法獲取骨架數(shù)據(jù)并進行預處理,然后從中提取表征肢體活動的動作特征序列,結合注意力機制構建融合多級特征的GRU 網(wǎng)絡進行動作識別。實驗結果表明,該算法在康復動作數(shù)據(jù)集中能夠有效識別5 種典型的腦卒中康復動作,并且具備良好的實時性。后續(xù)將增加更多類型的腦卒中康復動作,同時引入多視角視覺信息以提取更加豐富的特征,進一步增強人體康復動作識別算法對復雜動作的識別能力。