何 堅 郭澤龍 劉樂園 蘇予涵
①(北京工業大學信息學部 北京 100124)
②(北京市物聯網軟件與系統工程技術研究中心 北京 100124)
人體活動識別(Human Activity Recognition,HAR)[1]廣泛應用于人機交互[2]、醫療診斷[3]、智能家居控制[4]、異常行為檢查等領域[5],是普適計算和人機交互的重要研究領域。HAR主要依據由傳感器采集的活動特征數據來實現活動識別。依據傳感器的不同,HAR技術可以分為基于環境感知的HAR、基于視覺的HAR和基于可穿戴計算的HAR。其中,基于環境感知的HAR由嵌入人們工作生活環境的傳感器(如壓力傳感器、被動式紅外傳感器等)采集人體活動數據,實現人體活動的分類識別;由于其采用的傳感器需要部署在具體環境中,因此其通常僅適用于特定場景。基于視覺的HAR由部署于人們工作生活環境中的攝像機獲得人體活動的視覺數據,并應用計算機視覺技術對人體活動進行分類識別[6]。基于視覺的HAR具有不影響用戶日常活動、使用方便等優點,但其存在易受光線變化和遮擋干擾,并會涉及用戶隱私等缺點[7]。基于可穿戴計算的HAR,將加速度計、陀螺儀等慣性傳感器集成于可穿戴手表、背心等設備中,通過采集人體活動力學數據實現人體活動的分類識別[8]。可穿戴HAR具有成本低、易于使用且不影響用戶日常活動等優點,成為HAR研究熱點之一。
可穿戴HAR任務可分為人體活動數據感知、特征數據提取和活動分類識別3個階段。隨著微電子機械系統技術(Micro Electro Mechanical Systems,MEMS)的發展,3軸加速度計、陀螺儀、磁力計等慣性傳感元器件精度越來越高、體積越來越小,研究人員開發了多種集成了慣性傳感器的可穿戴設備來采集人體活動的3軸加速度、角速度等動力學數據,依據不同日常活動(如行走、上樓、下樓等)中3軸加速度、角速度數值及變化趨勢的差異,提煉不同的人工特征(例如,瞬時加速度/角速度,合加速度/角速度,加速度/角速度的方差/均方差等),并在此基礎上研究不同的人體活動分類識別算法。
早期可穿戴人體活動識別方法,以人體活動的人工特征數據為基礎,分別從閾值、時域、頻域方面進行特征提取和活動分類[9,10]。例如,Ravi等人[11]采用快速傅里葉變換(Fast Fourier Transform, FFT)提取人體活動的頻域特征并進行活動分類識別。隨著研究的深入,研究人員紛紛將傳統的機器學習方法引入到可穿戴HAR中。例如,何堅等人[12]構造了可穿戴活動感知背心,引入K鄰近 (K-Nearest Neighbor, KNN)并結合卡爾曼濾波設計了可穿戴跌倒檢測系統,跌倒檢測的準確率達到98.9%。Tran等人[13]在對原始活動數據FFT變換后,在智能手機上采用支持向量機(Support Vector Machines,SVM)實現人體活動的快速準確識別。近年來隨著深度學習在圖像處理、語音識別等領域取得成功,研究人員紛紛將深度學習技術引入到HAR中。Hanai等人[14]將卷積神經網絡(Convolutional Neural Network, CNN)引入到HAR中,實驗表明由于CNN包含更多隱藏層,并通過逐層卷積和池化計算提取不同尺度的人體活動特征,因此獲得了較高的人體活動識別準確率。針對人體活動的時序特征,文獻[15]結合CNN和長短期記憶網絡(Long Short Term Memory, LSTM)構造深度神經網絡提取人體活動的時空上下文特征,并通過實驗證明該方法相比單純CNN網絡具有更高的活動識別準確率。
概括起來,由于缺少統一的協議和規范,不同可穿戴HAR系統采用活動傳感器的類別、數量,以及傳感器部署的位置不盡相同。例如,文獻[16]將集成3軸加速度、陀螺儀的感知模塊部署于可穿戴背心的胸背部;文獻[17]將慣性傳感器部署于人體腰部;文獻[18]將慣性傳感器集成于項鏈的吊墜上;文獻[19]將慣性傳感器部署于人體腰部和左右大腿部。由于可穿戴HAR傳感器的類型、部署位置不盡相同,已有HAR采用的活動分類識別算法難以推廣應用。此外,盡管深度學習算法取得了較高人體活動識別準確率,但其需要較高的運算和存儲資源,需要GPU等專用處理器支持才能滿足實時人體活動識別需要。
針對上述問題,本文借鑒人體骨架模型思想,建立通用人體活動力學模型;其次,建立3軸加速度、角速度與RGB像素之間的映射關系,通過引入滑動窗口技術構造基于人體活動力學模型的像素圖像;最后,構造面向人體活動識別的卷積網絡(Convolutional Neural Network is designed for Human Activity Recognition, HAR-CNN)提取人體活動的時空上下文信息,并采用公開的Opportunity數據進行算法驗證測試。實驗結果表明HAR-CNN具有較高人體活動識別率,并具有良好的運行效率。
人體活動過程中,頭、手、足、四肢、腰和胸部會呈現出不同的運動特征。對此,本文參考微軟人體骨架模型[20],并采用笛卡爾坐標系建立通用人體活動力學模型(如圖1所示),圖1(a)—圖1(c)為根據人體運動特征提取出的骨架關節點,圖1(d)為關節點上傳感器的加速度與角速度的方向示意圖。
人體形態主要由四肢、軀干、手、足和頭部通過關節鉸鏈式連接構成。其中,在人體活動中肢體運動主要體現在胸部(如挺胸)、腰部(如彎腰),因此胸部和腰部通常會作為人體活動力學數據的檢測點。依據文獻[21]的人體骨架模型,人體活動建模需要部署的動力學傳感器節點集S={S1, S2, ···,S13, Hl, Hr, Fl, Fr}。如圖1(c)所示,S1為頭部感知節點;S2, S3, S4, S9, S10, S11為左右臂感知節點;Hl, Hr為左右手感知節點;S7, S8為胸部、腰部腳感知節點; S5, S6, S12, S13為左右腿感知節點;Fl,Fr為左、右腳的感知節點。
為了規范表示人體活動力學特征,本文采用笛卡爾坐標系建立統一的人體活動力學模型。在圖1(d)中,ax,ay和az分別代表人體活動中3軸加速度計分別沿著坐標系中x軸、y軸和z軸采集得到的加速度分量數據;ωx,ωy和ωz分別代表人體活動時陀螺儀分別沿x軸、y軸和z軸感知到的人體傾轉角加速度分量數據。設A表示人體活動,Fext為特征提取函數,Fcls為人體活動分類函數。則

Hl, Hr和Fl, Fr構成與Si相同。由于不同廠家傳感器的量程和測量精度不盡相同,為了避免這些因素對活動識別算法的影響,可以采用式(3)對采樣數據進行歸一化處理,使得加速度、角速度的取值在[0,1]。式(3)中,x代表傳感器采集的原始數據,xmin代表傳感器量程的最小值,range代表加速度計或陀螺儀的量程范圍,xscale代表歸一化之后的數據。

已有可穿戴活動感知技術中,研究人員選取了圖1所示的人體活動力學模型中感知節點集的子集作為人體活動力學數據的采樣點,設計了動力學數據的信號向量模、方差、均方差、熵等人工特征方法來提取人體活動特征,并研究了不同分類算法以實現人體活動的分類識別。
深度學習可在無需事先知道檢測目標所具有的人工特征情景下,通過監督學習來提取目標特征并分類,其在圖像識別、自然語言處理等方面取得了巨大成功。對此,本節引入滑動窗口技術構造人體活動的RGB位圖,進而構造基于卷積神經網絡的深度學習算法提取人體活動特征,并進行活動分類。
由于人體活動具有連續性和長期性等特征,運動力學傳感器實時采集的人體活動數據形成連續流數據。而傳統針對固定靜態數據的算法無法直接應用于流數據場景。對此,本文通過滑動窗口技術緩存人體活動數據,并為每一個感知數據設置對應時間戳。這樣,隨著新數據的不斷產生,系統依據時間戳按照先進先出的原則,不斷更新窗口內的老數據。

對人體活動模型中的3軸活動力學數據與圖像的RGB通道數據建立映射關系(例如:x軸分量值對應紅色通道子像素值,y軸分量值對應綠色通道子像素值,z軸分量值對應藍色通道子像素值),則可以將人體活動的3軸加速度、角速度數據分別轉化為對應的RGB像素(如圖2所示)。從圖2可知,將人體活動力學數據轉換為RGB像素圖,不僅保存了同一時刻中人體活動3軸加速度、角速度之間的關聯關系,同時也保存了滑動窗口中不同時刻3軸加速度、角速度之間的依賴關系,這為設計基于卷積網絡的深度學習算法提供了基礎。

圖2 人體活動力學數據轉位圖示意
由于加速度計和陀螺儀傳感器的量程與精度不盡相同,為此本文采用式(4)對加速度計和陀螺儀傳感器感知的數據進行規范化處理,通過四舍五入將結果轉化為整型數據。其中,RGB圖像中子通道通常為1 Byte,即取值為0~255的整型數據。

通過式(4)將3軸加速度計和陀螺儀采集的x,y和z軸數據均規范到0~255范圍內。這樣就可將每次3軸加速度計和陀螺儀采集到的數據轉換成一個像素點。
通過對LeNet-5[22]、AlexNet[23]、VGGNet[24]等經典的卷積神經網絡進行歸納總結,本文提出了面向人體活動識別的卷積網絡架構,即HAR-CNN。HAR-CNN由輸入層、卷積層、池化層、全連接層、softmax層構成,如圖3所示。其中,第1層為輸入層,輸入A×A×3,其中A為RGB位圖長/寬度。

圖3 HAR-CNN架構
中間層為m×n個卷積單元。每個卷積單元Um,n(m, n = 1, 2, 3,···)包含1或多個卷積層,0或1個池化層。每一列卷積單元串聯成一個卷積通道,多個卷積通道可以并聯成多通道的卷積網絡。
每個卷積單元Um,n中的Cm,n,i(i = 1, 2, 3,···)為卷積層。在每個卷積單元中有i個卷積層,每個卷積單元中的所有卷積層采用相同大小的卷積核 (Kl,Sl, Cl, Ol),其中Kl為卷積核大小,Sl為卷積核的步長,Cl為特征圖輸入通道數,Ol為特征圖輸出通道數。每個卷積單元中的所有卷積層采用相同的Padding(方式為VALID或SAME),不同的Padding方式將導致卷積層輸出的特征圖大小不同。
Sm,n為卷積單元中的池化層。每個卷積單元最后的卷積層后可以添加0或1個池化層。池化通常取整個池化區域的最大值或平均值。
Fk(k=1, 2, ···, K) 是全連接層。在卷積單元后添加全連接層將卷積單元輸出的特征結合起來,全連接層可以為1或多層。
HAR-CNN的最后一層為softmax層。通過softmax層輸出預測結果,將概率最大的類別作為預測結果輸出。
本文采用公開的Opportunity[25]人體活動數據集,參考其對應的實驗環境和傳感器部署情況(如圖4所示)設計構造了HAR-CNN實例,并進行相應網絡的訓練和測試。

圖4 Opportunity 數據集傳感器分布圖
為了開展人體活動識別技術研究,歐盟在第7框架項目中搭建了包含躺椅、餐桌、冰箱、櫥柜等設施的日常生活仿真環境,按照圖4設計了包含7個慣性傳感器和12個3軸加速計的可穿戴設備以采集人體活動數據。4位被試按照設定的場景描述各自獨立完成5組日常活動和1組訓練活動。其中,日常活動由被試從躺椅上起身、活動準備、室外散步、準備咖啡、喝咖啡、準備三明治、吃三明治、清理餐桌、躺躺椅上休息9個順序活動構成。在1組訓練活動中被試重復20次如下9組活動:打開/關閉冰箱、打開/關閉洗碗機、打開/關閉不同高度的3個抽屜、開/關門1、開/關門2、打開/關閉燈、清理餐桌、站立喝飲料、坐著喝飲料。
從時序上可將Opportunity活動數據分為周期性重復活動(如坐、站、躺、走等)、非重復性周期活動(打開/關閉門、打開/關閉冰箱、打開/關閉洗碗機、移動杯子、清理餐桌等)。表1所示為Opportunity數據集中周期性、非周期性活動數據集描述。其中,數據的采樣頻率為30 Hz。由于原始Opportunity數據集存在部分數據缺失,對此本文采用線性插值進行數據補齊。

表1 Opportunity數據集描述
本文按照式(3)對Opportunity數據進行歸一化處理,并采用3.1節的滑動窗口方法生成Opportunity數據對應的RGB位圖。本文將4位被試活動數據的80%作為訓練樣本,其余20%作為測試樣本。
HAR-CNN網絡架構如圖5所示。其中,對于周期性活動,HAR-CNN的輸入為26像素×48像素的3 通道RGB位圖。由于Opportunity數據集中針對非周期性活動還包含了環境傳感器(如門、抽屜開關電磁閥等)采集的數據,因此對于非周期性活動的HAR-CNN輸入數據擴充為57像素×48像素的3通道RGB位圖。HAR-CNN共有 6 個網絡層(不包含輸入層)。圖5中,網絡的卷積層標注為 C,池化層標注為Sx,全連接層標注為 Fx。x為網絡的層號。

圖5 HAR-CNN網絡架構
C1為第1層卷積層。在卷積的過程中如果卷積核步長不能被輸入圖片尺寸整除,會發生丟棄數據的情況。為了防止輸入的數據丟失,本文首先對數據的邊緣進行擴充,在輸入圖片的四周補0,將圖像擴充為28×50×3尺寸來進行卷積。卷積層1有32個卷積核,卷積核大小為2×2×3,卷積的步長為1,每個卷積核同時在圖像的3個通道中卷積,輸出1維的卷積圖像。每個卷積核有2×2×3以及1個偏置共13個連接參數,該層共416個參數,最后輸出32張26×48的特征圖。
S2為第1層池化層。第1層池化層的輸入為第1層卷積層后輸出的26×48×32的特征圖,在池化操作前對輸入特征圖進行邊緣擴充。池化的窗口為2×2,步長為2,每次僅提取窗口中的最大值作為輸出,該層最后輸出32張13×24的特征圖。
C3為第2層卷積層。第2層卷積層的輸入為第1層池化層輸出的特征圖,在卷積前對輸入特征圖進行邊緣補充操作。卷積層2的卷積核數量為64,大小為2×2×3,卷積步長為1。該層最后輸出64張13×24的特征圖。
S4為第2層池化層。第2層池化層的輸入為第2層卷積層后輸出的特征圖。第2層池化層的窗口大小為2×2,步長為2,選擇窗口中最大的數據進行保留,該層最后輸出7×12×64特征圖。
F5為網絡的全連接層。全連接層內有512個神經元,將池化層2的結果展平作為全連接層的輸入,為了防止網絡過擬合,添加了dropout層,隨機地丟掉神經元,dropout的參數設置為0.8。
Outputs為網絡最后的輸出層,輸出將全連接層的輸出與5個周期性活動標簽類進行全連接操作,通過softmax函數計算出每個活動類別的概率,其中概率最大的為預測的活動標簽。
本文選擇了一臺搭載Ubuntu操作系統的服務器(Xeon E5-2620 v4 CPU, 128 GB內存, TESLA M40圖形加速卡),采用Tensorflow和Python設計實現HAR-CNN實例。使用Opportunity公開數據對HAR-CNN進行模型訓練和測試。其中,網絡訓練的學習率0.0001,batch size設置為750,訓練迭代1000次后識別準確率不再提高,課題組停止模型訓練。此外,課題組使用了Adam方法對網絡進行優化。
本文采用同時兼顧精確率和召回率的F1值(如式(5)所示)作為模型的評估指標。

為了驗證本文提出的網絡模型的有效性,本文選取了MS-2DCNN[7]和DeepConvLSTM[15]以及DRNN[26]3種有監督機器學習算法以及Weka中的Bayes Network, Random Forest, Na?ve Bayes,Random Tree 4種分類算法進行活動識別性能對比。其中,MS-2DCNN將不同軸向的傳感器數據分別輸入神經網絡,然后對卷積得到的不同軸向的特征進行拼接分類,該網絡共有11層,包括輸入輸出層、4層卷積層、1層池化層、1層數據轉化層、2層全連接層以及1層連接分類器;DeepConvLSTM采用卷積神經網絡和長短時記憶網絡分別提取人體活動的時空特征并分類。DeepConvLSTM除輸入層外,包括4個卷積層、2個LSTM層及一個softmax輸出層。每個卷積層的卷積核長度為5×1,卷積核個數為64個,每個LSTM層包括128個LSTM單元。DRNN網絡為一個包含3層隱藏層的循環神經網絡。
Opportunity數據集中周期性重復活動稱為運動模式(Modes of Locomotion, ML),非重復性離散活動稱為姿態模式(Gesture, GR),表2所示為兩種對比算法以及Weka中的4種分類算法與本文算法的F1值對比。其中,Gesture(NULL)和ML(Null)分別表示包含NULL的姿態和運動模式,NULL類為間隔時間不含任何特征活動。
通過表2可以看出,Weka上4種算法的人體活動識別F1值普遍低于HAR-CNN, DRNN, MS-2DCNN和DeepConvLSTM算法,這可能是其提取的人體活動特征少于MS-2DCNN, DRNN, HARCNN和DeepConvLSTM方法的原因。DeepConvLSTM算法在每一類活動分類上都取得了較高的F1值,其在周期性重復活動ML高于本文的HARCNN算法;但由于其采用卷積神經網絡和LSTM相結合的網絡結構,網絡參數較多,導致其訓練和識別的時間相比HAR-CNN和MS-2DCNN較長。DRNN網絡每一項都取得了較高的得分但是其使用的循環神經網絡在訓練時易遇到梯度爆炸與消失等問題,并且算法的運行時間較長。MS-2DCNN算法在每一項分類中的F1值均與本文算法相近,但是其網絡層數較多導致運行時間較長。本文HARCNN網絡在離散類活動Gesture(NULL)和Gesture以及周期類活動ML(NULL)中取得了最高F1值,說明其對周期性、離散性活動均有較好的識別效果,同時運行時間也小于DeepConvLSTM,MS-2DCNN和DRNN算法。

表2 不同算法F1值對比
本文還對數據分割使用的滑動窗口長度和步長進行了實驗分析(如圖6所示),圖6(a)、圖6(b) 為隨著窗口長度增加兩種活動識別的F1值變化,圖6(c)、圖6(d)為隨著滑動步長變化兩種活動識別的F1值變化。從圖6(a)、圖6(b) 可以看出ML和Gesture活動識別結果隨著窗口從40 ms增加到1500 ms時,人體活動識別F1值總體上逐步提高(去除局部波動)。其中,針對周期性重復活動在窗口寬度為1600 ms時,F1值達到峰值,然后隨著窗口增大F1值逐漸減小;離散活動在窗口寬度為1300 ms時,F1值達到峰值,然后隨著窗口增大F1值逐漸減小。這說明不是滑動窗口越長,人體活動識別F1越好,而是滑動窗口大小有一個峰值,在該狀態下人體活動識別準確率最高。這是因為當窗口過小時,活動特征無法被完全提取會導致F1值較低。而當窗口太大時窗口中可能包含兩類以上的活動,導致網絡無法學習有效特征導致F1值下降。
本文通過實驗分析每類活動的持續時間最終選定1.6 s作為滑動窗口大小。確定滑動窗口大小后,本文繼續實驗分析每次滑動窗口移動步長對活動識別F1值的影響。窗口滑動步長通常小于窗口長度,這使得相鄰兩個窗口間有部分重疊活動數據。從圖6(c)、圖6(d)可以看出ML和Gesture活動識別結果隨著窗口滑動步長從40 ms增加到800 ms時,人體活動識別F1值總體上逐步提高,并在步長為800 ms時F1值達到峰值,然后隨著步長增大F1值逐漸減小。本文通過實驗得到的最優滑動步長為滑動窗口大小的一半時,人體活動識別準確率最高。

圖6 不同滑動窗口長度和步長的F1值
如表3和表4列出了包含NULL類時本文算法和DRNN算法針對ML和Gesture兩類活動的識別準確率、召回率的比較。表3、表4中本文算法的平均準確率都達到了90%優于DRNN算法,證明本文的算法有良好的識別效果。在ML標簽活動識別中,兩種算法的站立活動識別準確率都較高,而走路識別準確率卻最低。分析Opportunity數據集發現站立數據占數據集的40%,而走路數據僅占23%。站立的訓練數據較多使得站立活動的識別準確率較高。本文算法在GR標簽活動識別中,因數據集中NULL類占比高達58%,故大多數的錯誤識別均是將活動類別識別為NULL類。

表3 ML活動識別的準確率和召回率(%)

表4 GR活動識別的準確率和召回率(%)
本文建立基于人體骨架的通用人體活動力學模型,并構造了面向人體活動識別的HAR-CNN網絡。通過對比另外3種深度學習算法與4種傳統機器學習算法在Opportunity數據集的活動識別結果,證明了本文設計的HAR-CNN算法有較高的準確率和運算效率,是一種有效的活動識別算法。未來課題組將繼續優化網絡結構,包括網絡的卷積核大小、連接方法等。此外,會進一步探索解決人體活動數據不平衡性(諸如NULL過多等問題)導致識別準確率降低等問題。