鄭 毅,李 鳳,張 麗,劉守印
(華中師范大學物理科學與技術學院,武漢430079)
(* 通信作者電子郵箱 syliu@mail.ccnu.edu.cn)
根據國家統計局2016年的統計數據可知,在中國,60周歲及以上人口23086萬人,占總人口的16.7%;65周歲及以上人口15003萬人,占總人口的10.8%[1]。根據聯合國對“老齡化社會”的定義:區域中65歲以上的人口比率超過總人口的7%,中國已經屬于老齡化嚴重的國家之一。而老年人隨著年齡的增長,身體機能逐年下降,而隨著生活節奏的加快,子女由于自己的事業往往不能在其身邊陪伴;當突發事件(例如跌倒)發生時,老人無法第一時間得到幫助;對于一些患有輕微老年癡呆癥的老年人,更需要耗費人力物力監測其日常行為。人體姿態檢測技術有助于子女對其生活狀態與日常行為的掌握,也有助于醫療機構對老年人的身體機能與健康程度的判斷。因此,尤其是對于老齡化嚴重的中國來說,老年人姿態的檢測算法研究具有重要的意義。
人體姿態檢測按照檢測內容可以分為兩大類:突發性動作姿態檢測與持續性動作姿態檢測。突發性動作姿態檢測是指僅檢測出特定的、作用時間短的人體姿態。在對于老年人的這類研究中,由于跌倒對于老年人心理與生理上的危害特別大,所以跌倒檢測系統的設計顯得尤為重要。另一方面,持續性動作姿態檢測則是檢測出被測者保持在何種運動狀態,這對于老年人的日常行為起到記錄的作用。本文所用算法將跌倒作為一種特殊的運動狀態,同時檢測老年人的持續性與突發性動作姿態。
人體姿態檢測按照數據獲取來源可以分為基于圖片的姿態檢測與基于傳感器序列的姿態檢測。張承璽[2]使用攝像頭獲得的RGB圖像作為數據源,通過計算前景圖像的幾何特征結合支持向量機(Support Vector Machine,SVM)分類器完成固定場景下的人體姿態識別;李靖意[3]使用微軟開發的Kinect傳感器采集人體深度圖像,通過結合人體動作描述符與SVM分類器相結合,設計了人體動作識別算法;Bourke等[4]通過垂直速度閾值法(Vertical Velocity Threshold method,VVT)設計了一套光學運動捕捉系統并將其嵌入至可穿戴設備中。基于可穿戴設備或者攝像頭的數據采集設計一方面增加了設備硬件成本,另一方面,必須強制穿戴數據采集設備或在家中安裝攝像頭也會使老年人心理上產生一種被監視的感覺,不利于老年人的身心健康。而現如今,針對老年人設計的智能手機越來越多,老年人使用智能手機是必然的趨勢。而智能手機本身所包含的傳感器越來越多,使用其作為數據采集器可以很好地避免以上的不利因素,所以本文采取智能手機采集數據。
現在人工智能時代正在到來,機器學習算法已經應用到了各行各業中。依靠傳統算法手工提取特征值會遇到特征值提取不充分和無法區分相似度較高的動作。人工智能技術高速發展的今天,使用機器學習技術對老年人姿態進行檢測可以通過算法自動提取不同動作的特征,得到更準確的分類結果,從而為老年人提供更全面的照顧與保護。在國際上,通過智能手機采集數據后,Anguita等[5]通過SVM算法與固定點連續(Fixed-Point Continuation,FPC)算法相結合,對六種日常動作分類并獲得了89.3%的實驗結果;Tong等[6]則使用了隱馬爾可夫(Hidden Markov Model,HMM)算法,對于智能手機采集的加速度時間序列數據分為跌倒與正常兩種狀態,在訓練集上達到100%的正確率。國內這一領域的研究有吳科艷等[7]提出使用領域一致性指標與離散二進制粒子群算法相結合對老年人跌倒行為進行檢測,其輸出層使用K最近鄰(K-Nearest Neighbor,KNN)分類器得到98.77%的訓練集正確率;張舒雅等[8]使用SVM與KNN結合算法判斷跌倒動作,測試集正確率達到97.35%。然而,如何在老年人實際活動中的檢測達到實驗訓練集中的高正確率,仍然是尚未解決的難題。
根據上文所提到的相關工作可以總結出目前人體姿態檢測算法所遇到的難題仍有如下4點:
1)如何更準確、更高效地從傳感器數據中提取特征值。
2)如何提高檢測算法的泛化能力,即將實驗訓練集上高正確率在實際測試中復現出來。
3)人體的姿態不單單是靜態的姿態,如站立、平躺等,更多時候處于運動的狀態,如走路、爬樓梯等,如何使用一種算法模型同時檢測靜態與動態的多種人體姿態。
4)動作的持續時間有長有短,無記憶模型需要通過滑窗算法獲取一段時間的動作信息,無法實時處理不同持續時間的動作,并將其分至正確的類別。
1990年,Lecun等[9]歷史性地提出了神經網絡的反向傳播算法并提出了卷積神經網絡(Convolutional Neural Network,CNN)的概念。2006年以來,隨著 Hinton等[10]在 Science期刊上提出“多隱層神經網絡具有更為優異的特征學習能力,并且其在訓練上的復雜度可以通過逐層初始化來有效緩解”,深度學習開始飛速發展。CNN通過其特有的權值共享機制輸入是空間上的變化,即以圖像為典型例子的空域數據表現非常好[11]。但對于樣本序列出現的時間順序上的變化,即時域數據無法建模。
循環神經網絡(Recurrent Neural Network,RNN)[12]正是針對時域序列數據提出的,其特殊的網絡結構使神經元的輸出可以在下一個時間點作為輸入直接作用到自身,實現網絡的輸出為該時刻的輸入與歷史所有時刻共同作用的結果,達到對序列建模的目的。Lecun等[13]提出CNN并不完全適用于學習時間序列,如果使用CNN學習時間序列會需要補充輔助性處理,且效果也不一定好。面對對時間序列敏感的任務,RNN通常會比較合適。即RNN作為一種回歸型網絡,由于其具有一定的記憶效應更適用于序列數據,而CNN更側重于空間映射,在圖像數據處理方面更為貼合。
然而,Lecun等[11]進一步提出RNN網絡雖然目的是學習時序數據的長期依賴性,但是理論和經驗上的證據都表明RNN很難學習和保存長期的信息。其原因被認為是出現了時間軸上的梯度彌散(Gradient Vanishing)的現象,即當前時刻產生的梯度只能向歷史時刻傳播有限層,對于超過一定時間的歷史時刻無法產生影響,這導致了RNN在長序列數據上效果并不好。為了解決這個問題,Hochreiter等[14]提出的長短時記憶(Long Short-Term Memory,LSTM)網絡通過特有的門單元解決了這一問題。LSTM越來越多地被應用在時域序列數據的處理上,Sundermeyer等[15]將LSTM應用于自然語言模型上,比傳統的語言處理方法取得了較好的實驗結果。Graves等[16]在語音識別問題上使用了雙向LSTM網絡,使語音分類精度得到了提高。
LSTM應用于人體姿態檢測算法中相比其他分類器更有效地利用了其3個優勢:
1)相比手工設置閾值分類方法,LSTM可以準確、自動地從數據中提取特征。LSTM作為一種機器學習方法,可以從復雜的高維數據中自動地提取特征。對比傳統的憑借經驗提供先驗知識手工設置閾值的分類方法,LSTM自動提取特征的過程更加高效,且機器學習的過程學習的是數據集的概率分布,其方法提取的特征比經驗更加符合數據本身的概率分布。
2)相比淺層機器學習算法,屬于深度學習方法的LSTM擁有較強的非線性能力,能從數據中提取出更加具體的特征,其模型具有更強的泛化能力。淺層機器學習算法,例如SVM、KNN等,在訓練集樣本空間能學習到分類效果較好的超平面將訓練集數據正確分類。然而在實際應用中面對尚未進行學習的新數據——測試集數據的分類效果卻不理想,其原因在于淺層機器學習算法非線性能力較弱,所提取到的特征較為抽象,模型泛化能力較差。而深度學習算法則通過多層連接、權值共享的網絡結構,逐層提取出更具體的特征,增強模型的泛化能力。
3)相比同為深度學習模型中表現出色的前饋神經網絡(feed-forward neural net),屬于循環神經網絡的LSTM模型具有記憶性,能對數據中時間上的先后順序建模,對于時序數據有較好的擬合效果。在深度學習領域,傳統的前饋神經網絡在許多方面表現出色。卷積神經網絡作為前饋神經網絡的代表,在圖像、視頻等定長的空域數據分類問題上效果顯著;然而,對于人體姿態檢測數據所屬的時序數據處理上,由于其自身網絡結構的約束,效果并不太理想。LSTM則依靠獨特的遞歸結構善于處理人體姿態檢測任務這種具有復雜時間關聯性的數據,并且模型可以接受任意長度的輸入,更適合應用在持續時間不一的人體姿態行為分類任務上。
由于人體姿態檢測數據集的時域變化特點,為了克服目前人體姿態檢測算法所存在的難題,本文選取以LSTM為核心,在GPU上實現了人體姿態的算法模塊。該算法使用深度學習的方法自動高效地從傳感器數據中提取準確的特征,并利用LSTM的記憶特點僅需輸入當前時刻傳感器數據即可預測使用者當前行為,為上述難題提供了一種解決方案。
本文主要通過安卓手機內置的傳感器作為人體姿態數據感知層,其具體數據主要來源于手機內置的加速度傳感器、陀螺儀和氣壓計。
由于數據采集中包含跌倒這種對于老年人來說十分危險的突發性動作,所以人體姿態檢測的數據采集是由20名年輕志愿者模仿老年人各種行為來代替;又因為智能手機在不使用時大多時候隨身攜帶,所以智能手機作為數據采集裝置采集數據時被放置在志愿者褲子口袋中。具體的姿態被分為突發性動作與持續性動作共9類,共采集3 336個數據,分為2755個數據的訓練集與581個數據的測試集,如表1所示。

表1 人體姿態分類數據集Tab.1 Datasets of human posture classification
訓練集單次數據是由志愿者單一完成某項動作時的傳感器采樣后標記構成,測試集為傳感器采樣包含各項動作的自然行為后截取標記而成。在后續模型訓練中僅使用訓練集,測試集則用于通過模擬老年人真實日常行為來評估模型泛化能力。
數據集格式為:
[data,label]
其中:data為一種姿態的傳感器數據;label為人工標注的當前數據所屬姿態類別。data的具體格式為:
data= [sample,axis*sensor]
其中:sample為一次姿勢狀態的采樣點數,不同的姿態持續時間不同,所以sample維度不定;axis為傳感器軸數;sensor為傳感器個數。數據集由3個傳感器共9維數據構成。
跌倒作為典型的突發性動作,訓練集中采集到的跌倒數據可視化后如圖1所示。跌倒時三軸加速度傳感器(圖1(a))與三軸陀螺儀(圖1(c))波動非常劇烈,且持續時間非常短,經過短暫地劇烈波動之后所有數據都歸于平靜。從氣壓計(圖1(b))中可以看出,氣壓略有升高,反映了跌倒動作發生時海拔高度略有降低。訓練集中的持續性動作行走數據可視化后如圖2所示,上樓梯時三軸加速度傳感器(圖2(a))與三軸陀螺儀(圖2(c))數據呈現周期性波動,氣壓計(圖2(b))數據基本保持不變。

圖1 跌倒數據可視化示意圖Fig.1 Schematic diagram of falling data visualization
測試集則從志愿者連續完成多種動作行為截取單一動作行為并進行標注。如圖3所示,測試集加速度數據可視化后可以更直觀地看出,跳躍、奔跑、行走、跌倒與平靜的具有波形上的可分性。
從圖3中可以發現,無論是突發性動作還是持續性動作,不同動作的波形具有可分性,可以通過尋找其波形特征的差異區分開不同動作的波形。使用人工神經網絡可以自動地尋找這些差異性特征,具體的分類方法將在后文中介紹。

圖2 行走數據可視化示意圖Fig.2 Schematic diagram of walking data visualization

圖3 測試集數據可視化示意圖Fig.3 Schematic diagram of test set data visualization
本文所構建的姿態檢測算法是為了解決在現實場景中,通過攜帶的智能手機傳感器檢測人體當前的姿勢狀態,算法的總流程如圖4所示。

圖4 人體姿態檢測總流程Fig.4 General flowchart of human posture detection
由于人體姿態是一種動態的數據,且每一種姿態持續時間各不相同,所以本文將一條采樣數據按時序分割。在第t時刻,模型獲得傳感器當前時刻采集的12維數據,經過數據歸一化,使輸入的12維數據映射到值域為[0,1]的區間中,轉化為無量綱表達式,有利于消除各維度之間的量綱影響。然后將歸一化的數據與t-1時刻LSTM網絡單元的輸出一起輸入到LSTM網絡單元,重復此操作直到此次長度為sample的數據被讀取完畢,最后將sample次迭代的LSTM網絡單元輸出特征輸入至輸出層,最終得到分類結果。
人體姿態數據屬于時間序列,過去時刻發生的狀態信息對當前時刻有較強的影響。使用長短時記憶(LSTM)網絡既可以有效地將過去的信息傳遞到當前的計算中,又能克服RNN結構中無法傳遞相隔較遠信息的缺陷[17]。
人體姿態檢測網絡結構如圖5所示,左邊為網絡整體示意。假設數據長度為n(即數據集中變長采樣點數sample),輸入x為歸一化后維度為12的數據,經過隱藏層n次迭代后得到輸出y。右邊為時域展開后的網絡結構,在第t時刻,隱藏層接收t時刻輸入數據x(t)和上一時刻隱藏層輸出c(t-1)后輸出t時刻的隱藏層輸出c(t)。隱藏層為LSTM網絡單元,其具體結構[18]如圖6所示。

圖5 人體姿態檢測網絡示意圖Fig.5 Schematic diagram of human posture detection network

圖6 LSTM網絡單元結構圖Fig.6 Structure diagram of LSTM network unit
該網絡結構在隱藏層中加入了先驗知識——輸入門、遺忘門和輸出門,這些門將不同時刻的層間信息與某一時刻的輸入信息處理得更加透明。根據LSTM網絡單元結構圖,可以得到輸入門、輸出門與遺忘門的函數表達式如下:

其中:Wx為輸入權值矩陣;Wh為t-1時刻隱藏層狀態權值矩陣;b為偏置項。t時刻線性自連接單元狀態c(t)與隱藏層狀態h(t)表達式為:

分析式(1)~(5)可以發現,通過調整各門的權值矩陣W,輸入門i(t)可以控制流入自連接單元狀態c(t)的信息量;遺忘門f(t)可以控制當前時刻的自連接單元狀態c(t)所包含c(t-1)的信息量,即控制遺忘多少上一時刻的自連接單元狀態;輸出門o(t)控制可以流入到當前隱藏層狀態h(t)的自連接單元狀態c(t)信息。其中,線性自連接單元狀態c(t)的作用是完成歷史信息的積累,其積累方式為:

這里info為本次要積累的信息來源,將式(6)代入式(4)可得:

由式(7)可以得知,線性自連接單元狀態c(t)在積累歷史信息時,依靠遺忘門f(t)限制上一時刻c(t-1)傳遞的信息,同時依靠輸入門i(t)來約束新輸入的信息。根據式(5),當前隱藏層狀態h(t)是由輸出門約束的,由于是以線性方式更新,所以加入帶有非線性功能的tanh函數。
整個LSTM網絡單元的信息來源為當前的輸入x(t)、上一時刻的隱藏層狀態h(t-1)與上一時刻線性自連接單元狀態c(t-1),由于其中c(t-1)是根據式(4)計算出來的,所以三個門單元的控制依據實際都來源于當前的輸入x(t)與上一時刻的隱藏層狀態h(t-1)。
如圖5右上所示,在第n時刻時,即一組數據已經全部輸入完畢后,將LSTM網絡單元最終隱藏層狀態h(n)作為輸入傳遞進輸出層。由于是分類標簽大于2個為多分類問題,輸出層函數為:

通過式(8)計算得出最終姿態預測分類結果的概率分布。
訓練人體姿態檢測網絡是獲得構建網絡所以參數的過程,通過訓練得到的參數是式(1)~(8)中的權值矩陣W與偏置項b。
在網絡搭建完成后,第一步是將網絡權值矩陣初始化。對于LSTM網絡,由于正交初始化(Orthogonal Initialization)能減緩梯度彌散(Gradient Vanishing)與鞍點(Saddle Point)帶來的問題[18],本文采取正交初始化來初始化網絡權值。第二步,將一組數據輸入完畢后經過權值矩陣計算得到網絡輸出y與本組數據標簽y'(Label)計算交叉熵(Cross-entropy)作為誤差,誤差表達式如下:

第三步計算誤差函數loss對權值矩陣W的梯度,將獲得的梯度反向傳播調整網絡各部分權值矩陣,通過Adam下降方式(Adaptive Moment Estimation)反復迭代降低誤差loss直到網絡收斂至e。
為了方便重復實驗與人體姿態檢測的后續研究,表2列出了人體姿態檢測神經網絡中所設置的參數名稱與對應的參數值供研究參考。其中:隱藏層數為模型中所含有的LSTM網絡單元數目,隱藏層特征數為數據通過隱藏層后提取出的特征個數。

表2 人體姿態檢測神經網絡參數Tab.2 Parameters of human posture detection neural network
為了驗證人體姿態檢測網絡的性能,本文使用獨立于訓練集分開采集的581條數據作為測試集驗證人體姿態檢測神經網絡模型的效果,由于測試集數據為截取自然行為數據標注而成,其包含有部分非標準行為特征與不同行為切換時的數據,與通過志愿者做出單一動作時采集的標準訓練集存在差異。本文利用訓練集與測試集采集時的差異驗證該模型從實驗室采集數據對連續自然行為的泛化能力。
本文使用Top-1正確率與模型參數量作為評測指標:Top-1正確率為網絡最終分類結果正確的次數占總次數的百分比,如圖7所示,其值越高表明人體姿態網絡的分類越準確;模型參數量是指訓練模型所需的參數數量,其值越高說明模型越復雜,訓練難度越大。擬合效果;測試集曲線則體現了網絡對新輸入的數據集的泛化能力。

圖7 網絡訓練中Top-1正確率變化Fig.7 Correct rate change of Top-1 in network training
為了驗證LSTM網絡在處理人體姿態檢測任務上的優勢,本文使用經典的淺層學習方法支持向量機(SVM)、決策樹方法與基于KD樹的K近鄰算法(KNN-kd)三種常用的機器學習算法與卷積神經網絡(CNN)、全連接神經網絡(Fully Connected neural network,FC)兩種深度學習網絡作為對照組與LSTM網絡做對比實驗。表3、4、5分別列出了SVM、決策樹與KNN算法的參數。

表3 SVM對照組參數表Tab.3 Parameters of SVM control group

表4 決策樹對照組參數Tab.4 Parameters of decision tree control group

表5 KNN對照組參數Tab.5 Parameters of KNN control group
深度學習對照組CNN與FC網絡所使用參數如表6所示。

表6 深度學習對照組參數Tab.6 Parameters of deep learning control group
比較結果如表7所示,從表7中可以得知,本文方法(LSTM)在測試集上得到了最高的正確率98.02%,與次好的機器學習算法(KNN-kd)的93.53%相比提高了4.49個百分點,獲得了更好的分類效果。進一步分析發現,SVM等淺層學習方法在訓練集上可以得到較高的正確率,而在測試集上效果降低了很多。這說明這些方法對于數據的泛化能力不如本文所使用的方法,即受訓練樣本的約束過大,沒有從有限的樣本提取到最合適的特征。
由于人體姿態檢測網絡使用深度學習方法,本文設置了同為深度學習的全連接神經網絡(FC)與卷積神經網絡(CNN)作為對照實驗。由于CNN網絡需要輸入為固定長度的數據,所以本文將數據處理為采樣點數sample=128(約為3 s)的定長數據集。對比結果如表8所示,其中FC-1為隱藏層為1的全連接神經網絡,FC-2為隱藏層為2的全連接神經網絡,CNN-1為隱藏層為1的卷積神經網絡,以此類推。

表7 不同方法的實驗結果對比Tab.7 Comparison of experimental results of differents methods

表8 LSTM網絡與深度學習對照組結果對比Tab.8 Comparison of LSTM network and control groups of deep learning
全連接神經網絡(FC)由于其網絡結構特點會對網絡輸入數據整體感知,其模型訓練參數十分巨大,并會隨輸入數據長度即采樣點數sample的增加而大幅度增加。卷積神經網絡(CNN)通過局部感知參數共享的方式能大幅度降低網絡訓練參數,然而其本質是將時域輸入數據轉換至空域卷積計算,對128個采樣點無關先后順序賦以相同權重,128個采樣點發生之前的數據對當前輸出無任何影響,這對于持續時間較長的行為或較短時間內發生的突發行為來說,需要手動調節合適的采樣點數才能獲得較好的結果。
由表8可得,隱藏層為3的CNN網絡能和本文使用的LSTM網絡獲得相近的正確率,但是進一步分析CNN網絡后發現,由于CNN的輸入需要為定長且包含至少一個完整姿態動作周期的數據,對照組的采樣點數為sample=128,在采樣頻率為50 Hz的條件下,進行一次檢測判斷需要延遲約為3 s左右。這會導致將CNN網絡應用在人體姿態檢測中耗時過長,若采用滑窗采樣的數據采集形式,又會帶來重復的計算開銷。本文使用的LSTM網絡因為其具有對歷史時刻的記憶性質,每次輸入為當前采樣時刻的數據,可以實時計算并避免額外的計算開銷,更適合于人體姿態檢測的應用。
本文提出了基于LSTM的人體姿態檢測方法,利用循環神經網絡對歷史時刻數據的可記憶性,結合LSTM中特殊的門結構控制當前時刻與歷史時刻的數據輸入,提取了人體姿態時序數據中的特征并對其進行分類預測。通過對比經典的淺層學習方法得出,本文提出的方法能提取到準確且有效的特征值且具有較好的泛化能力,取得了較好的實驗效果;通過對比CNN網絡的分析研究得出,本文提出的方法能避免額外的計算開銷,并可以實時檢測老年人姿態狀況。
由于數據集本身對于神經網絡具有約束作用,數據集數目的增加對模型的特征提取與泛化能力都有幫助,所以下一步的工作主要是擴大數據集,并結合更復雜的神經網絡在保證誤差和正確率的情況下訓練出更具備泛化能力的網絡結構。