范長軍,高 飛(浙江工業(yè)大學計算機科學與技術學院,杭州 310023)
隨著智能移動設備和可穿戴式傳感器的使用越來越普遍,智能手環(huán)、智能胸帶等產(chǎn)品屢見不鮮。通過這些設備,心電、呼吸、體溫等生理信號以及加速度、陀螺儀等慣性信號的獲取都變得十分方便,人們能隨時隨地獲取自身的各項體感信息。通過感知的各類體感信息來識別日常運動及活動,并長時間連續(xù)記錄相關的數(shù)據(jù),可分析出一個人的活動模式和能量消耗,方便進行健康監(jiān)護和醫(yī)療保健[1],大大提高人們的生活質量。
加速計、陀螺儀和磁力計等慣性傳感器能夠感知運動的加速度、角速度以及運動幅度等,并具有體積小、靈敏度高、功耗低的特點[2],成為人體活動識別最常用的傳感器[3]。此外,心率計、溫度計等生理傳感器在智能可穿戴產(chǎn)品中也日益普及,心率等生理指標與運動強度、耗氧量呈正比,會隨著運動強度而發(fā)生變化,能為人體健康監(jiān)測和活動識別提供不可或缺的體感信息。比如,走路和負重走兩類活動的運動模式相同,僅通過慣性傳感器無法進行區(qū)分,但兩者引起的生理疲勞程度不同,引入心率等生理特征可有效解決此問題。
目前有關人體活動識別的研究主要通過以下方式實現(xiàn):①在實驗環(huán)境下,專業(yè)人員按照一定的規(guī)范采集加速度和陀螺儀等慣性數(shù)據(jù)(僅部分工作采用了生理信號,比如文獻[4-6]),并進行標注;②將采集到的傳感數(shù)據(jù)經(jīng)過預處理后,通過啟發(fā)式的方法人工提取特征信息[7-8];③將上述特征信息進行篩選和降維,并通過機器學習算法進行活動的分類和識別[9-11]。此類方法已經(jīng)比較成熟,并在某些類別的活動識別中取得了不錯的效果[12-13],但也存在一些問題。
首先,數(shù)據(jù)采集過程比較繁瑣,普適化程度不高[14]。其次,傳統(tǒng)的機器學習算法的分類效果嚴重依賴于提取特征的全面性和表示能力,而這需要相應領域的專家知識[15-16]。在多模態(tài)傳感器存在的情況下,不同類型的傳感數(shù)據(jù)(比如加速度和心電)的特征工程需要不同領域的專家知識,這極大增加了人體活動識別的難度。尤其是,相比于加速度等慣性信號,心率等生理信號具有特有的長期時序依賴[17],現(xiàn)有工作對此考慮不足。最后,為了有效融合多模態(tài)傳感數(shù)據(jù),需要人工設計不同的融合算法[17-18],特征工程、信息融合與分類算法是分開進行的,沒有實現(xiàn)端到端的一站直達式系統(tǒng),這在一定程度上提高了人體活動識別應用的門檻。
針對以上問題,本文提出了一種基于多模態(tài)信息融合的可穿戴人體活動識別系統(tǒng)——iWearRT。首先,設計了iWearRT的整體系統(tǒng)框架,規(guī)劃了系統(tǒng)模塊的組成、分工、采集軟件以及采集實驗,方便了普適環(huán)境下的數(shù)據(jù)采集工作;其次,將可穿戴設備上的各類傳感器獲取的慣性和生理數(shù)據(jù)進行了初步預處理,設計了LSTM-RNN深度神經(jīng)網(wǎng)絡來自動提取傳感數(shù)據(jù)的特征(尤其是長期時序依賴),并進行多模態(tài)傳感器的自動融合,如此實現(xiàn)了從原始數(shù)據(jù)到分類結果的端到端學習;最后,對本文提出的方法進行了實驗驗證與分析。
將可穿戴人體活動識別系統(tǒng)設計為三部分:數(shù)據(jù)采集部分、數(shù)據(jù)傳輸部分以及數(shù)據(jù)處理部分。數(shù)據(jù)采集工作主要由穿戴在人身上的各類傳感器完成,它們以一定的頻率收集人的加速度、角速度等慣性信息和心率、呼吸等生理信息。采集的傳感數(shù)據(jù)通過Zigbee或藍牙等網(wǎng)絡模塊發(fā)送到隨身攜帶的智能手機上,可以由智能手機進行數(shù)據(jù)處理和識別任務;也可以將傳感數(shù)據(jù)在手機端進行基本的降噪、篩選、壓縮等操作,并將它們傳送到遠端云平臺。云平臺具有強大的并行計算能力,能高效地進行大數(shù)據(jù)的分析、處理和可視化操作。系統(tǒng)總體架構如圖1所示。
在人體活動識別應用中,各類可穿戴傳感器不僅要在各種場景下隨人移動,而且要全面捕捉人體的生理和運動狀況,因此,各傳感器佩戴的位置對系統(tǒng)的設計也至關重要。文獻[19]充分考慮了人體適合放置可穿戴計算機的部位以及人體對自身的感知范圍(如圖2所示),本系統(tǒng)選用其中的位置d來放置心率等生理信號傳感器和加速度、陀螺儀等慣性傳感器,并選用位置c和h來放置慣性傳感器,智能手機可放置在人體的任何位置,一般會選擇放在位置f的口袋中。
圖1 可穿戴人體活動識別系統(tǒng)架構
圖2 適合放置可穿戴計算機的部位[19]
為便于收集各類傳感器數(shù)據(jù),在智能手機上基于Android平臺開發(fā)了一個通用的數(shù)據(jù)采集軟件系統(tǒng)——SomaticLog。
SomaticLog可運行在Android 2.3.3及以上版本的平臺上,能夠記錄智能手機自身內置的各類傳感器的感知數(shù)據(jù),比如GPS、加速度、角速度以及光強、大氣壓等,也能通過藍牙等無線網(wǎng)絡接收各傳感器節(jié)點發(fā)送來的傳感數(shù)據(jù)。此外,SomaticLog提供了用戶友好的圖形化人機交互界面,可供用戶自由選擇需要記錄的傳感器類型,方便配置其采樣頻率,并可通過選擇菜單項的方式標記當前的運動和活動類型,方便進行樣本數(shù)據(jù)的標注。
數(shù)據(jù)采集軟件系統(tǒng)界面如圖3所示,圖3(a)是系統(tǒng)主界面,由三部分構成:第1部分用于標記數(shù)據(jù)采集的地點、活動(運動)類型、手機擺放的位置、方向以及屏幕的朝向等,部分下拉菜單可見圖3(b)~圖3(d);第2部分顯示了智能手機自帶傳感器感知到的部分數(shù)據(jù),如加速度、磁場、光強等;第3部分顯示了從生理傳感設備傳遞來的部分數(shù)據(jù),如心率、呼吸率、身體姿態(tài)傾角等。當有新的傳感器接入時,可通過添加組件的形式進行擴展。獲取的數(shù)據(jù)樣本既可以保存在本地閃存卡上,也可通過UDP協(xié)議實時地發(fā)送到遠程云平臺,以便后續(xù)進行處理。
圖3 SomaticLog軟件界面
為了驗證本文方法的有效性,進行了模擬場景實驗。選用的實驗設備有:一部運行Android 2.3.3系統(tǒng)的HTC Sensation G14智能手機,一條BioHarnessTMBT無線傳感胸帶,以及3個獨立的無線運動傳感模塊(Inertial Measurement Unit,IMU)。胸帶位于圖2位置d處,主要用于采集心率;每個IMU內嵌兩個三軸加速計、一個三軸陀螺儀和一個三軸磁力計,可提供12通道傳感數(shù)據(jù),分別位于c、d、h處,用于捕捉軀干、手腕和腳腕的運動。
本試驗共有23個測試者,其中包括18個男性和5個女性。他們的生理狀況,比如年齡、體重、身高和體質指數(shù),如表1所示。各測試者分別通過SomaticLog采集并標注了十三類日?;顒拥膫鞲袛?shù)據(jù),包括躺、坐、站、走、跑、騎自行車、撐桿走(Nordic Walking)、上樓、下樓、跳繩、看電視、開車和電腦前工作。
表1 被試主體的生理狀況
一個人一類活動持續(xù)1 min對應的傳感數(shù)據(jù)為一組,一共采集得到1 240組數(shù)據(jù),其中,每類活動的數(shù)據(jù)不少于30組。隨機抽取其中的90%作為訓練數(shù)據(jù)來建模,剩下的10%作為測試數(shù)據(jù)來檢驗模型的分類效果。
如果將原始傳感數(shù)據(jù)直接輸入識別算法,效果往往不夠理想,這是因為信號的質量受很多因素影響,其中最常見的是高頻噪音和信號丟失。
圖4 濾波前后加速度信號變化
加速度、角速度等慣性信號在激勵、檢測和傳輸過程中,會受到不同程度的隨機噪聲的污染。這些噪聲信號的頻帶寬、信號強,與人的運動信息混雜在一起,容易將真實的運動信號淹沒。由于人的自然活動通常變化較慢,主要為低頻信號,因此可行的方法是使用低通濾波器濾掉高頻噪聲信號。本文選取了Butterworth低通IIR數(shù)字濾波器對原始加速度、角速度進行濾波處理,從圖4可以看出,帶有噪聲的加速度數(shù)據(jù)經(jīng)過低通濾波后,噪聲被有效地消除了,而加速度信號的特征和細節(jié)被保留下來。
此外,人呼吸引起的胸部起伏會對采集的生理信號造成影響,佩戴生理傳感設備時,其與皮膚的接觸和摩擦程度也會影響生理信號數(shù)據(jù)的測量和記錄,比如,靠電傳導工作的智能胸帶與皮膚接觸不良時,容易發(fā)生信號漂移與數(shù)據(jù)丟失現(xiàn)象。而且,相對于加速度而言,心率傳感信號的固有頻率低,采樣頻率不宜過高,導致了在同一時間窗口內心率數(shù)據(jù)少于加速度數(shù)據(jù)。為了補全上述缺失的數(shù)據(jù)而不改變生理特征的內在模式,采用線性插值的方法計算缺失的數(shù)據(jù)。
由于人體活動識別算法的輸入是連續(xù)采集的慣性信號和生理信號等數(shù)據(jù),對應于一個很長的序列,不適合直接進行特征提取和分類,因此通常在對這些信號做其他處理之前,會先對其進行加窗操作。所謂加窗就是把較長的信號分割成許多具有相同長度的重疊的窗口。本系統(tǒng)將滑動窗口的長度設為2.56 s時長的傳感序列樣本數(shù),其中加速度傳感器的采樣頻率為100 Hz,因此一個窗口的長度為256,并且設置相鄰兩個窗口間相互重疊50%,如圖5所示,陀螺儀、磁場、心率等其他傳感器以此類推。
圖5 加速度信號加窗
人體活動識別屬于監(jiān)督式分類問題,中心環(huán)節(jié)是分類器的設計與實現(xiàn)。
在現(xiàn)有的人體活動識別研究中,為了有效進行活動的區(qū)分,需要從原始數(shù)據(jù)中啟發(fā)式地人工提取能夠表示活動的時域、頻域和時頻域等各類特征。找出能夠充分表示各類活動的特征是十分困難的,嚴重依賴于專家知識,并且不同類別的數(shù)據(jù),需要不同領域的先驗知識(如慣性特征有別于生理特征)。此外,人體活動是一個持續(xù)的過程,除了短時的內在模式,各類傳感數(shù)據(jù)(尤其是心率等生理信號)還存在長期時序上的依賴關系。
近年來快速發(fā)展的深度學習技術強調直接從原始數(shù)據(jù)開始進行端到端的學習,不用像過去一樣要先人工設計特征,因此能有效解決特征提取問題。為了達到信息保持與傳遞的目的,研究者們?yōu)閭鹘y(tǒng)神經(jīng)網(wǎng)絡添加了循環(huán)遞歸模塊,形成了遞歸神經(jīng)網(wǎng)絡RNN(Recurrent Neural Network)。RNN能夠有效利用上一時刻的輸出結果,比較適于用來處理時序數(shù)據(jù)。此外,相對于淺層模型,深層模型可以更好地融合不同類型的輸入數(shù)據(jù),能夠有效進行多模態(tài)傳感器的融合[20]。
長短時記憶網(wǎng)絡LSTM(Long Short-Term Memory Network)是一種特殊形式的RNN網(wǎng)絡,它的各個隱藏層由一系列遞歸相連的存儲塊組成,每個存儲塊包括一個記憶單元,內含輸入、遺忘和輸出3個門,它們可以對記憶單元進行讀、寫和復位操作,控制信息在不同記憶單元之間傳遞,有效解決了普通RNN的“梯度消失”問題。
一個LSTM記憶單元的結構如圖6所示,記憶單元的狀態(tài)通過以下公式進行更新:
it=σ(Wi·[ht-1,xt]+bi)
(1)
ft=σ(Wf·[ht-1,xt]+bf)
(2)
ot=σ(Wo·[ht-1,xt]+bo)
(3)
ct=ft*ct-1+it*tanh(Wc·[ht-1,xt]+bc)
(4)
ht=ot*tanh(ct)
(5)
式中:it,ft,ot,ct和ht分別代表在t時刻,輸入門、遺忘門、輸出門、控制單元和記憶單元的輸出。bi,bf,bo,bc分別為對應的偏置向量。Wi,Wf,Wo,Wc為權重矩陣。
圖6 LSTM記憶單元結構圖
圖7 設計的LSTM-RNN深度神經(jīng)網(wǎng)絡結構
為了進行人體活動識別,設計了用于訓練傳感數(shù)據(jù)的深度神經(jīng)網(wǎng)絡結構,并采用Google的深度學習開源平臺Tensorflow來實現(xiàn)。該網(wǎng)絡結構一共包括三部分,分別是輸入層(Input_Layer)、輸出層(Output_Layer)和用于進行LSTM-RNN訓練的隱藏層(LSTM_Cells),如圖7所示。
圖7為Tensorflow可視化工具tensorboard繪制的網(wǎng)絡結構圖的主干部分。從圖7可以看出,本文設計隱藏層為兩層LSTM的結構,以此來增加網(wǎng)絡深度,充分挖掘LSTM對人體活動的表示能力,以及彌補淺層模型對輸入特征的融合能力的不足。
將Input_Layer輸入層擴展開,得到圖8(a)所示的計算流程。從圖8可知,輸入層的主要工作包括:訓練數(shù)據(jù)X經(jīng)過維度轉換后,與權重hidden_weight、偏置hidden_bias進行線性加權,并通過Relu激活函數(shù)處理,處理后的結果作為輸入傳入LSTM_Cells隱層,即:
f(X)=max(0,X·hidden_weight+hidden_bias)
(6)
圖8 輸入輸出層計算流程
圖9 LSTM-RNN訓練流程圖
兩個隱藏層分別對應一個LSTM單元,一個LSTM單元的結構如圖6所示。第1層LSTM單元(LSTM_Cell_1)的輸入由兩部分組成,分別為輸入層傳入的數(shù)據(jù)和上一個時間點LSTM_Cell_1的狀態(tài)輸出;同理,第2層LSTM單元(LSTM_Cell_2)的輸入也由兩部分組成,除了LSTM_Cell_1的計算輸出,還包括上一個時間點LSTM_Cell_2的狀態(tài)輸出。對應的LSTM_Cells整體結構如圖9所示。
LSTM_Cells隱層計算的結果與權重out_weight、偏置out_bias進行線性加權后,結合訓練數(shù)據(jù)的標簽y,計算softmax交叉熵損失,并得到對應的識別準確率,如圖8(b)所示,對應的損失計算公示如下:
(7)
式中:H代表LSTM_Cells隱層的計算結果,K表示活動類別的數(shù)目,圖9中K=6。Li表示樣本屬于第i類活動的交叉熵分類損失,它越大,樣本屬于第i類活動的概率越小?;诖?反向傳播算法反向逐層進行權值的更新和網(wǎng)絡模型的訓練。
在僅融合加速度和心率的場景下(即表5中的Acc+HR組合),軀干、手腕、腳腕三處各兩個三軸加速度,共有18個數(shù)據(jù)通道(用n_channels表示),外加一路心跳數(shù)據(jù),總計19個數(shù)據(jù)通道,每通道數(shù)據(jù)的窗口長度(用seq_len表示)為256,因此,在一個時間窗口內的數(shù)據(jù)(seq_len,n_channels)即為一個256×19的矩陣。比如,在19個數(shù)據(jù)通道中,軀干處佩戴的三軸加速度的X軸、Y軸以及心跳3個通道在一個時間窗口內的數(shù)據(jù)可分別表示為[body_acc_x_0,body_acc_x_1,…,body_acc_x_255],[body_acc_y_0,body_acc_y_1,…,body_acc_y_255],[heartbeat_0,heartbeat_1,…,heartbeat_255]的列矢量,因此,在一個時間窗口內19個數(shù)據(jù)通道提供的訓練數(shù)據(jù)堆疊起來可表示為[[body_acc_x_0,body_acc_y_0,…,heartbeat_0],[body_acc_x_1,body_acc_y_1,…,heartbeat_1],……,[body_acc_x_255,body_acc_y_255,…,heartbeat_255]]的256×19矩陣。其中的每一項(比如第k項[body_acc_x_k,body_acc_y_k,…,heartbeat_k])對應了19路數(shù)據(jù)的拼接,實現(xiàn)了原始數(shù)據(jù)層的融合。
在模型訓練階段,將上述訓練數(shù)據(jù)進行批量輸入(用batch_size表示批大小),以實現(xiàn)訓練效率和訓練效果的折中,則一次輸入神經(jīng)網(wǎng)絡的數(shù)據(jù)為(batch_size,seq_len,n_channels)維度的三維矩陣。批大小可根據(jù)情況來設定,本系統(tǒng)一律設為1 024。為方便后續(xù)神經(jīng)網(wǎng)絡的訓練,在LSTM-RNN輸入層需要將其維度轉換為(seq_len,batch_size,n_channels)的形式,并逐層向后傳播??傮w訓練流程如下:原始數(shù)據(jù)經(jīng)過維度轉換傳入輸入層,輸入層對應的神經(jīng)元數(shù)目為19;將隨后的兩個LSTM隱層的神經(jīng)元個數(shù)設為57,其中每一個LSTM單元訓練的序列長度為256,如圖9所示。經(jīng)過一定迭代次數(shù)的前向和反向傳播過程,LSTM-RNN網(wǎng)絡的各項參數(shù)得到逐步調整和更新,準確率和損失趨向于收斂,最終得到穩(wěn)定的網(wǎng)絡模型。
基于LSTM-RNN的人體活動識別模型是在Ubuntu 16.04平臺上,由TensorFlow框架通過NVIDIA GTX 1060顯卡硬件加速訓練得到的。訓練過程中的超參數(shù),比如學習速率、批大小、損失系數(shù)和訓練迭代次數(shù),都由多次賦值測試并進行篩選得到,此處分別選用0.002 5,1 024,0.001 5,300。
首先,考慮特征工程對活動識別準確率的影響,并采用公開的UCI HAR數(shù)據(jù)集進行實驗,此數(shù)據(jù)集通過固定在腰部的手機來記錄三軸加速度和三軸陀螺儀數(shù)據(jù),以識別走路、上樓、下樓、坐、站、躺6種活動[21]。針對此數(shù)據(jù)集,采用以下3種方案分別進行活動識別。方案1采用決策樹算法直接在Anguita等人[21]提取的561個特征的基礎上進行活動識別,實驗結果如表2所示。方案2通過一個通用的時序特征提取工具tsfresh[22]對原始數(shù)據(jù)每一通道的各窗口分別提取275個時域或頻域特征,并輸入決策樹進行活動識別,分類效果如表3所示。方案3通過LSTM-RNN直接對原始數(shù)據(jù)進行訓練,分類混淆矩陣如表4所示。
表2 基于專家知識提取特征的識別效果
表3 基于通用時序特征的識別效果
表4LSTM-RNN的分類混淆矩陣
從實驗結果可以看出,特征的提取對于活動識別的準確率有很大影響。采用專門針對活動識別優(yōu)選的561個特征,經(jīng)過決策樹算法訓練后識別準確率高達94%;而采用tsfresh提取的特征,同樣經(jīng)過決策樹算法訓練后,識別準確率僅有83%;最后,通過LSTM-RNN直接對原始傳感數(shù)據(jù)進行訓練,活動識別的準確率可達93.28%。方案3識別的準確率和方案1相比差別不大,但是無需手工提取特征,避免了特征提取方法不完善導致的低準確率(如方案2),減少了對專家知識的依賴。
為了考察多模態(tài)傳感器融合的活動識別效果,并與現(xiàn)有工作(文獻[17])相比較,進行如下實驗。將SomaticLog采集的13種活動類型重新歸為6類,包括躺、靜止(坐或站)、走路、跑步、騎車和其他(所有剩余的活動類別)。并將4種傳感器采集的數(shù)據(jù)(加速度Acc,角速度Gyro,磁場Mag,心率HR)進行交叉組合,構成了6類不同的組合數(shù)據(jù)集(如表5所示)。針對此6類數(shù)據(jù)集,設定訓練迭代次數(shù)為300,并記錄每次迭代訓練后測試數(shù)據(jù)的分類準確率、訓練損失和最終的F1-score。圖10所示為僅由加速度傳感數(shù)據(jù)進行訓練的過程。從圖10可以看出,隨著迭代次數(shù)的增加,測試集的分類準確率逐漸升高,訓練損失逐漸減少,最終達到收斂。
圖10 LSTM-RNN訓練迭代趨勢
由于訓練過程中參數(shù)優(yōu)化的隨機性,每次模型訓練的結果略有差異。為此,分別對6類數(shù)據(jù)集各訓練八次,取準確率和F1-score的均值和方差,得到表5所示的結果。MARCEL是文獻[17]提出的分類器級的多模態(tài)數(shù)據(jù)融合人體活動識別方法。從表5可以看出,與之相比,LSTM-RNN能夠自動融合不同的多模態(tài)數(shù)據(jù),得到了更好的識別準確率,并且融合的傳感器類型越多,準率越高。
從表5還可以看出,在僅有加速度的數(shù)據(jù)集(Acc)基礎上,加入心率(Acc+HR),識別準確率得到了一定程度的提升;在僅有慣性傳感數(shù)據(jù)的數(shù)據(jù)集(Acc+Gyro+Mag)基礎上,加入心率(Acc+Gyro+Mag+HR),識別準確率也得到了一定程度的提升,這說明生理信號能夠對人體活動識別起到積極的輔助作用。
表5 不同模態(tài)數(shù)據(jù)融合的分類結果與比較(均值±方差)
最后,從所有類別的活動中取出其中的6類,分別是躺、坐、站、看電視、開車和電腦前工作,并通過LSTM-RNN算法進行如下實驗。首先,僅利用胸部佩戴的四類傳感器(即Acc+Gyro+Mag+HR)采集的數(shù)據(jù)來分類上述6類活動,然后,用所有傳感器采集的數(shù)據(jù)來分類此6類活動,并進行對比,結果分別如表6中E1、E2所示。從表中E1可以看到,僅通過軀干處的慣性傳感器和心率,無法準確的區(qū)分此6類活動。直觀上理解,此6類活動的運動強度都不大,而且對應的軀干處的運動模式類似,造成分類效果不佳。當采用本文設計的傳感器佩戴方式,全面捕捉軀干和四肢運動,融合身體各部位的各類傳感數(shù)據(jù)后,可以更準確地區(qū)分開此6類活動。
表6 LSTM-RNN 10種活動分類結果
本文提出了一種融合慣性信號和生理信號等多模態(tài)傳感數(shù)據(jù)的可穿戴人體活動識別系統(tǒng)iWearRT。首先,設計了iWearRT的總體系統(tǒng)框架,規(guī)劃了系統(tǒng)模塊的組成、分工,并重點研究探討了可穿戴設備的傳感器類型、佩戴位置、數(shù)據(jù)采集框架等;接著,將可穿戴設備上的各類傳感器獲取的慣性和生理等多模態(tài)數(shù)據(jù)進行了降噪、加窗等預處理,并設計了LSTM-RNN深度神經(jīng)網(wǎng)絡進行人體活動識別;最后,進行了模擬場景實驗。實驗結果表明,該方法無需人工提取特征,減少了對專家知識的依賴,并可自動融合異構傳感數(shù)據(jù),準確性高,分類效果好。