閆 航 陳 剛 崔莉亞 張樂蕓 胡北辰
1(鄭州大學信息工程學院 河南 鄭州 450001)2(鄭州大學互聯網醫療與健康服務協同創新中心 河南 鄭州 450052)3(鄭州大學護理與健康學院 河南 鄭州 450001)
近年來基于視覺的人體動作識別的研究得到了廣泛的關注,是計算機視覺中一個極具挑戰性的課題,其涉及圖像處理、模式識別、人工智能等多個學科,在智能監控、人機交互、康復運動等領域有著廣泛的應用前景[1]。腦卒中是最常見的慢性病之一,具有高發病率、高致殘率的特點,是老年人健康的重大威脅。而康復鍛煉是恢復卒中患者日常生活能力的主要手段,也是廣泛推薦的康復療法[2]。當前在居家康復領域缺乏護理醫師的現場指導,同時存在看護者缺乏耐心和信心、康復知識不足的問題,導致患者出院后在家中難以完成有針對性的康復目標,依從性較差[3]。因此建立一種居家康復場景下的在線動作識別模型,實現患者康復過程中動作的實時監督與指導,對患者中長期的康復水平有著重要的意義。
根據獲取數據的方式,可以分為基于傳感器和基于視覺的人體動作識別。基于傳感器的動作識別方式起步較早,且在康復動作識別領域中也有較多的研究。Bisio等[4]采用三軸加速度計采集病人運動信息,通過SVM分類器對手臂伸展、肩關節屈伸等康復動作取得了良好的識別效果。馬高遠等[5]對采集的上肢肌電信號通過小波分解提取特征,在8種常用康復動作上取得了92.86%的識別率。復雜動作通常需要多個傳感器協同工作才能達到較好的識別效果,然而該方式會給身體帶來極大的不適。基于視覺的動作識別主要分為人工特征和深度學習特征兩類。傳統的采用人工特征的動作識別方法側重于局部特征提取,Wang等[6]提出改進的稠密軌跡用于動作識別,提升了對復雜場景的魯棒性。深度學習能自主提取具有強大表征能力的特征,逐漸獲得了更多的關注。主流的深度學習模型有3D CNN[7]、Two-Stream CNN[8]、LRCN(Long-term Recurrent Convolutional Network)[9]、R-C3D(Region Convolutional 3D Network)[10]等。然而以上模型對整幅視頻幀進行深層卷積操作,存在復雜度高、運算速度慢、訓練困難等問題,制約了其在現實生活中的應用。基于視覺的康復動作識別研究工作較少且主要采用骨架特征。人體骨架特征包含的運動信息比較完整,對于肢體動作來說是一種良好的表征方式[11]。邵陽等[12]采用深度相機Kinect獲取人體骨架信息,通過基于余弦的動態時間規整方法有效識別了6種上肢訓練動作。唐心宇等[13]提出一種基于Kinect的三維人體姿態估計方法,并通過計算關節角度來評估指定的康復動作。文獻[14]同樣對Kinect獲取的三維人體骨架關鍵點進行角度計算,與標準的動作規范進行比較來識別動作并指導康復訓練。以上康復動作識別方法存在如下問題:每個動作需要人工建立復雜的對照模型,不易拓展且泛化能力較差,對人員位置、角度均有嚴格的要求;缺乏對多人場景的兼容問題,居家康復環境下易受干擾;相比于單目攝像頭,深度相機Kinect較為昂貴、普及度不高且設備難以獲取;多數算法僅能處理經過裁剪的視頻段或識別過程需要繁瑣的人工干預,難以實現在線、連續的動作識別。
在線動作識別更具挑戰性:預定義的目標動作發生時間不確定;除了目標動作外還存在其他動作與狀態;處理速度能夠匹配上監控視頻流。在線動作識別對于應用落地具有重要的現實意義,但是相關的研究工作卻很少。Li等[15]基于Kinect獲取3D骨架數據,提出了一種聯合分類和回歸的LSTM網絡實現了單人場景下的在線動作識別,但其識別的是持續時間較短的日常活動。
當前大多數基于視覺的人體動作識別算法存在復雜度高、建模困難、無法處理在線視頻、部署條件苛刻等問題,而基于傳感器的動作識別會對人體造成極大的不適。為了更好地適用于居家場景下卒中患者的康復動作識別,本文設計并實現了一種基于單目視覺的在線動作識別算法。采用姿態估計算法OpenPose對單目攝像頭獲取的連續視頻流進行骨架關鍵點提取并結合最近鄰匹配生成目標動作序列,對人體多個關節的運動變化進行充分的表征,同時避免了其他圖像區域帶來的噪聲干擾。通過實驗選取合適的滑動窗口大小,在目標人體的動作序列上通過滑動窗口提取原始特征并進一步預處理為魯棒性特征,輸入到預訓練的LSTM分類網絡中進行康復動作識別。本文提出的方法在康復訓練場景中能夠有效進行在線動作識別,模型易于部署,一定程度上能夠適應非理想、嘈雜的環境,對于腦卒中患者的康復具有重要的意義。
姿態估計OpenPose[16]是首個基于深度學習實現的實時多人姿態估計開源庫,能夠實時地對圖片中每個人的姿態進行精準的估計,實現面部、軀干、四肢、手部骨骼點的提取。它兼顧了實時性與準確性,且具有較強的魯棒性。
該方法的核心是一種利用Part Affinity Fields(PAFs)的自下而上的人體姿態估計算法,即先檢測關鍵點再獲得骨架,在多人的場景下避免了過多的運算時間。圖1所示為OpenPose的多階段預測網絡結構,該框架以VGG-19網絡模型為基礎,將輸入的圖像轉化為圖像特征F,通過分階段預測分別回歸L(p)與S(p),其中:L(p)表示親和度向量場PAFs,描述關鍵點在骨架中的走向;S(p)表示關鍵點的置信度。該結構將每一次預測分為6個階段,通過前4個階段預測親和度向量場Lt,后2個階段預測置信度St。在每個后續階段,將前一階段的預測結果與原始圖像特征連接起來作為輸入,用于生成更精細的預測。在得到關鍵點的置信度及親和度之后,采用匈牙利算法對相鄰關鍵點進行最優匹配,從而得到每一個人的骨架信息。OpenPose的實時性非常出色,采用單目攝像頭即可獲取可靠的關鍵點信息,無需專用的深度攝像頭。

圖1 多階段預測網絡架構
循環神經網絡(Recurrent Neural Network,RNN)是一種利用上下文狀態來挖掘數據中時序信息的深度神經網絡。相比于卷積神經網絡,RNN會對于每一個時刻的輸入結合當前模型的狀態計算輸出。單純的RNN存在長期依賴問題,可能會喪失學習遠距離信息的能力。長短時記憶網絡(LSTM)的出現成功解決了梯度消失問題,是當前最為流行的RNN網絡,廣泛應用于語音識別、自然語言處理、視頻描述、動作識別等領域。
圖2為LSTM的網絡結構示意圖,LSTM的輸入包括當前時刻網絡的輸入xt、上一刻LSTM的輸出ht-1、上一時刻的記憶單元ct-1,輸出包括當前時刻的輸出ht和當前時刻的記憶單元ct。

圖2 LSTM網絡結構示意圖
LSTM通過輸入門與遺忘門控制記憶單元并結合輸出門從而更有效地刻畫長距離依賴。輸入門、遺忘門與輸出門的計算如下:
it=σ(Wi·[ht-1,xt]+bi)
(1)
ft=σ(Wf·[ht-1,xt]+bf)
(2)
ot=σ(Wo·[ht-1,xt]+bo)
(3)
式中:Wi、Wf、Wo分別為輸入門、遺忘門和輸出門的權重矩陣;bi、bf、bo分別為輸入門、遺忘門和輸出門的偏置。LSTM的輸出由記憶單元與輸出門聯合計算如下:
(4)
(5)
ht=ot×tanh(ct)
(6)

本文提出的在線動作識別算法主要由動作信息采集、特征提取和分類網絡組成。算法的識別框架如圖3所示,其輸入為單目攝像頭獲取的實時監控視頻流,首先采用姿態估計OpenPose提取圖像幀中的多人骨架關鍵點,結合最近鄰匹配算法在持續的監控流中生成目標人體動作序列,記錄人體手部、手臂、腿部、頸部等多個關節的運動軌跡。動作序列為具備時序關系的連續2D骨架關鍵點,每幀提取的骨架信息作為一個時間步長。在動作序列上通過滑窗選取原始骨架關鍵點特征,經過坐標歸一化、絕對坐標轉相對坐標從而轉化為魯棒性特征并輸入到構建的LSTM分類網絡中,通過Softmax分類器判斷三種康復動作并區分正常活動所表現的動作與狀態。

圖3 在線動作識別算法框架
滑窗大小的選擇通過實驗并結合平臺處理速度與動作持續時間,LSTM分類網絡則采用經過裁剪的康復動作數據集進行訓練,將訓練好的網絡參數遷移到在線動作識別算法。該算法通過2D骨架關鍵點的時序信息進行動作識別,相比于雙流、3D CNN等算法具有極強的速度優勢。由于每一幀只對提取的18個人體骨架關鍵點進行處理,構建的LSTM網絡相對于主流方法中的CNN網絡而言其參數大大減少,模型易于優化從而避免了對海量數據集的依賴。
2.2.1動作信息采集
本文以1 920×1 080分辨率的單目攝像頭獲取實時監控視頻流,用于在線動作識別。采用智能手機以及單目攝像頭采集經過裁剪的康復動作數據,用于訓練分類網絡。為了提高識別算法的魯棒性和給予被監護人員一定的自由度,數據集存在角度、遠近、背景、分辨率的差異。
利用姿態估計方法OpenPose提取骨架關鍵點,通過VGG-19網絡將輸入的圖像轉化為圖像特征F,然后通過多層CNN分別預測關鍵點置信度與親和度向量,聯合置信度與親和度向量得出人體的骨架信息。訓練過程中模型總損失為置信度網絡與親和度向量場網絡兩者的損失之和,通過不斷迭代完成神經網絡參數的更新。由于姿態估計模型需要大量標注人體關鍵點的數據集來訓練,為了達到更準確的效果,采用在超大規模圖像數據集COCO中預訓練的參數來初始化網絡。將圖像的分辨率調整為432×368后輸入到模型中,輸出為人體的18個2D骨架關鍵點,包括左右耳、左右眼、鼻、脖、左右肩、左右肘、左右腕、左右胯、左右膝和左右腳踝。圖4所示為視頻流中人體18個骨架關鍵點的檢測結果,展示了“慢走”動作發生過程中人體關鍵點的變化。

圖4 視頻流中的人體骨架關鍵點檢測
裁剪的視頻段為單人視頻且只發生一種動作,根據時序關系以一定的間隔對整個視頻采樣圖像并提取骨架關鍵點來訓練分類網絡。視頻流中提取的骨架信息仍是單幀的圖像中獨立的檢測結果,目標人體在多人場景下失去時序關系,對于監控視頻流則結合最近鄰匹配算法生成目標人體動作序列。所設計的方法步驟如下:


(7)
3) 生成動作序列。結合最近鄰匹配結果將視頻流中目標人體的18個骨架關鍵點按照時序關系加入到動作序列中,若連續10幀沒有檢測到目標人體,則刪除目標動作序列,重新執行步驟1)以確認目標人體。
2.2.2特征提取
本文通過滑動窗口的方式從動作序列中提取原始特征,每幀的目標人體有18個2D骨架關鍵點,共36個特征。設置滑動窗口的大小為n,即連續n幀圖像作為一組分段特征,滑窗間隔設置為k幀。為了合理利用資源,設計隊列的方式進行滑窗處理,假設動作隊列為T,滑窗提取分段特征的流程如下:
1) 目標人體的骨架關鍵點不斷加入隊列直到隊列長度為n,即T=[T1,T2,…,Tn],提取該分段特征。
2) 從隊頭刪除T1,T2,…,TK,隊尾不斷加入后續的k幀關鍵點即Tn+1,Tn+2,…,Tn+k,提取該分段特征。
3) 重復步驟2),直至該目標消失。
上述提取的分段特征仍是原始的骨架關鍵點,為進一步提升算法對拍攝角度、目標遠近、錄制過程抖動等因素的魯棒性,分別將關鍵點坐標進行歸一化、轉化為相對坐標、標準化處理。關鍵點坐標的大小范圍是相對于視頻分辨率的,將坐標值(x,y)分別除以視頻分辨率(vw,vh)歸一化到(0,1)范圍,減小了不同視頻分辨率以及不同肢體關鍵點的數值差異。然后選取脖子部位的關鍵點(x0,y0)作為原點,對其他坐標進行變換:
(8)

(9)
(10)
(11)

2.2.3分類網絡設計
動作的描述可以由具備時序關系的一系列人體關鍵點構成[17]。為了充分挖掘序列的關系,設計了雙層疊加的長短時記憶網絡。本文設計的動作分類網絡如圖5所示,輸入為滑窗提取并經過預處理得到的長度為n、特征維度為36的骨架關鍵點序列。兩個LSTM網絡單元的神經元個數為32,時間步長等于滑動窗口的大小n,第一層隱藏層每個時間步的輸出狀態傳遞給第二層隱藏層,取最后一個時間步的輸出向量傳遞給神經元個數為64的全連接層,最后通過Softmax分類器進行動作類型的識別。Softmax分類器通過Softmax激活函數將多個神經元的輸出映射到(0,1)之間,即各個類別的數值轉化為概率,概率最大的類別即判定為分類結果。此外人體的大部分時間為靜止坐位、慢走、站立等正常活動,而將正常活動誤識別為康復動作對于患者的康復過程是不可靠的。分類網絡將多種正常活動視為一類動作類型,同時進行康復動作以及正常活動的識別,提升了對康復動作識別的穩定性。

圖5 人體動作分類網絡
網絡參數的更新采用經過裁剪的康復動作視頻段進行訓練,即每個視頻只包含特定的一個動作。由于視頻時長不同而導致樣本的時間步不同,通過0值填充轉化為時間步一致的樣本,訓練時跳過特征值全為0的時間步。首先提取視頻中人體的關鍵點序列,經過特征預處理轉化為魯棒性特征后輸入到所設計的分類網絡中,通過前向傳播與反向傳播完成參數的更新。結合L2正則化與Dropout來防止過擬合,訓練完成后保存在測試集取得最優效果的參數。在線動作識別算法的分類網絡加載訓練好的參數,經過前向傳播并通過Softmax分類器得出概率最大的動作類型,實時輸出目標人體正在發生的動作類別與概率值。
本實驗的硬件環境如下:CPU為酷睿i7-8750,2.20 GHz,8 GB內存;GPU為GTX 1060,6 GB顯存;監控攝像頭的分辨率為1 920×1 080。搭建的深度學習模型基于TensorFlow框架,采用GPU加速處理過程。
為了客觀評價算法的準確性以及在康復場景的可用性,本文選取一個公開數據集KTH[18],并參考文獻[19]規范的腦卒中患者康復動作采集了一組康復動作數據集,各數據集如圖6所示。

圖6 KTH與康復動作數據集樣本示例
1) KTH是計算機視覺一個具有標志性的數據集,包含了4類場景下25個志愿者的6種行為:慢跑(Jogging)、步行(Walking)、跑步(Running)、拳擊(Boxing)、揮手(Hand waving)和拍手(Hand clappong)。該數據集共有599個視頻,每秒25幀,分辨率為160×120,具有人體尺度和光照的變化,背景較為簡單。按照與文獻[18]一致的劃分方式采用18個志愿者的視頻作為訓練集,其他9個志愿者為測試集。
2) 康復動作數據集由5位實驗人員在3種不同的環境下采集而成,包含4類行為共964個視頻段,具有光照、人體尺度、背景、拍攝角度的變化。行為類型分為三種康復動作以及一類正常活動動作,其中康復動作為上下臂鍛煉、左右臂鍛煉和坐起鍛煉,正常活動包括靜止站立、靜止坐位、慢走、伸展等,具體動作說明見表1。每個視頻的分辨率為1 280×720或1 920×1 080,幀速率為15幀每秒,視頻段持續時間為8~15 s之間。

表1 腦卒中康復動作描述
兩個數據集都為經過裁剪的短視頻,數據集的基本訓練流程如下:
1) 視頻段中每幀提取的36個骨架關鍵點特征作為一個時間步,小于選定步長的樣本通過補0的方式進行填充。
2) 對每幀提取的36個關鍵點特征進行預處理,將原始特征轉化為魯棒性特征。
3) 通過正態分布的方式生成隨機值來初始化分類網絡的權重參數,預處理后的樣本分批量(batch-size)輸入到分類網絡,進行前向傳播得到損失值,采用Adam優化器來最小化損失函數,學習率設置為0.001。
KTH數據集的樣本較少,采用數據增廣的方法將訓練集擴充一倍,對視頻進行左右對稱變換并將其比例轉換為5∶4。將康復動作數據集按照7∶3的比例隨機分為訓練集與測試集,同時保證測試集中每種動作的樣本比例均衡。另外,為了增大幀間動作差異同時提升運行效率,每間隔3個圖像幀進行處理。訓練時批量設置為32,一共分500個Epoch運行,模型在KTH數據集和康復動作數據集上分別訓練迭代9 000、6 000次后逐漸收斂。
3.4.1不同模型設置對精度的影響
動作識別數據集的對比分析通常采用準確率作為評價標準,為分析不同的模型設置對識別精度的影響,實驗分別從LSTM單元隱藏層節點個數、時間步長、特征預處理三個方面對KTH與康復動作數據集進行分析。實驗分別將LSTM隱藏層節點個數設置為16、32、64、128,時間步長統一設置為50,實驗結果如表2所示。當隱藏層節點個數依次增加時,KTH與康復動作數據集的識別準確率分別提高至94.9%、100%。依據實驗結果選取最佳的隱藏層節點數量,在KTH數據集下的隱藏層節點個數設置為64,康復動作數據集中設置為32。

表2 隱藏層節點個數對精度的影響 %
選取合理的時間步長對于識別精度是至關重要的,過短的時間步不能夠充分表達一個動作,而過長的時間步則導致運算速度慢,冗余的信息也會干擾識別過程。實驗分別將時間步長設置為10、20、40、60、80,KTH數據集中隱藏層節點個數設置為64,康復動作數據集中隱藏層節點設置為32,實驗結果如表3所示。通過識別精度在每個數據集選取合理的時間步長,時間步長在KTH與康復動作數據集中分別大于60、40后模型的精度不再提高,即兩個數據集分別通過提取的前60和40幀就能夠達到最好的識別效果。

表3 時間步長對精度的影響 %
本文將姿態估計算法獲取的骨架關鍵點進行了預處理,將其轉換為魯棒性特征,在對比分析加上預處理后的識別效果。KTH數據集上時間步為60,隱藏層節點個數為64。康復動作數據集上時間步為40,隱藏層節點個數為32,對比分析結果如表4所示。相比于原始特征輸入到分類模型,經過預處理后的魯棒性特征在KTH與康復動作數據集的識別準確率分別提高了2.78和1.04個百分點。

表4 特征預處理對識別精度的影響 %
3.4.2不同算法的識別精度對比
為了客觀展示算法的性能,表5展示了與其他文獻中的算法在KTH數據集上的對比結果。文獻[7]是在傳統卷積神經網絡的基礎上增加了對時間維度的卷積,是動作識別領域的典型模型。文獻[20]采用樹狀層次結構的深度網絡提取視頻的時空特征,結合KNN分類器進行動作識別。文獻[21]提出融合興趣點表現特征的增強單詞包并通過SVM分類器實現動作識別。本文設計的動作識別算法均高于以上三種方法,識別準確率達95.37%。由于KTH數據集分辨率較低,提取的骨架關鍵點存在較多丟失,同時算法在保證一定準確率的基礎上提升了處理速度,識別精度略低于文獻[22]方法。文獻[22]首先采用YOLO算法[23]檢測目標框,通過CNN提取目標框的圖像特征并由LSTM網絡進行分類,相比于本文算法,該特征提取模型更加復雜,計算量也更大。

表5 KTH數據集方法對比
對于康復動作數據集,采用姿態估計算法提取骨架關鍵點并應用相同的特征預處理方式,分別與隱馬爾可夫模型(HMM)、全連接循環神經網絡(SimpleRNN)和門控循環單元(GRU)三種優秀的時序關系模型進行對比。對比分析結果如表6所示,相對于傳統機器學習算法HMM,循環神經網絡對時序關系的提取能力更強,本文算法也取得了最好的識別結果。

表6 康復動作數據集方法對比
3.4.3在線康復動作識別
相比離線的數據集,在線動作識別更具挑戰性。為測試康復訓練場景下動作識別的效果,通過分辨率為1 920×1 080的單目攝像頭捕獲連續的視頻流,采用在康復動作數據集中訓練好的參數初始化分類網絡。考慮到康復活動發生過程較慢,間隔3幀采樣圖像,采用時間步長為80、隱藏層節點個數為32的分類網絡參數。實時獲取系統時間作為參考,在線動作識別效果如圖7所示,圖7(a)、圖7(b)演示的動作分別為上下臂鍛煉、左右臂鍛煉;圖7(c)、圖7(d)演示的動作分別為正常活動、坐起鍛煉,其中加入了無關人員的干擾,并且目標人體的位置產生了移動。算法處理能力達18 幀每秒,能夠持續捕捉并判斷監控流中目標人體的康復動作,實時輸出目標位置、動作類型以及動作概率,對于活動位置、其他人員干擾具有較強的適應能力。

圖7 在線動作識別結果
為了客觀展示算法于在線動作識別方式下對康復動作的識別準確率,實驗人員連續做左右臂鍛煉、上下臂鍛煉、坐起鍛煉各50次,并以站立、慢走等正常活動作為間隔動作。實驗結果如表7所示,算法平均識別率達93%,且不易將正常活動誤識別為康復動作,在線場景下能夠有效進行康復動作識別。然而相對于在康復動作數據集中的表現,在線場景下模型對三種康復動作的平均識別率僅90.66%,原因在于實時環境下不同目標的動作行為存在較大的不確定性,需要更加充分的數據集訓練分類網絡來進一步達到更好的識別效果。

表7 連續動作識別結果
本文提出了一種基于單目視覺的在線動作識別算法,結合姿態估計OpenPose與最近鄰匹配算法對視頻流中的目標人體生成動作序列,采用滑動窗口選取原始關鍵點特征并轉換為魯棒性特征后輸入到雙層LSTM網絡進行動作分類。利用OpenPose獲取骨架關鍵點的實時性對監控流中的目標人體進行快速檢測,同時基于基準坐標結合最近鄰匹配算法跟蹤目標人體,避免了視頻流中大量無關區域以及其他人體的噪聲干擾。結合LSTM對長時間序列的處理能力,能夠對視頻流中目標人體的行為做出準確的識別。通過在公開數據集KTH和康復動作數據集中實驗,KTH數據集的平均識別率達95.37%,康復動作數據集中的識別率達到了100%。在線動作識別下的康復動作識別率達90.66%,證明了該方法的有效性,探索了基于計算機視覺的動作識別方法在康復訓練領域的應用。
由于康復動作數據集的樣本規模較小,算法在連續視頻流中進行在線動作識別下的識別率與其在數據集中的表現存在較大差距。未來研究將會采集更豐富的數據集,加入更多的康復動作類型,同時優化訓練策略與分類網絡,進一步提升對真實場景的適應能力,幫助患者在居家場景下更好地完成康復訓練計劃。