胡雙杰,秦建邦,郭 薇
(上海交通大學(xué)區(qū)域光纖通信網(wǎng)與新型光通信系統(tǒng)國家重點實驗室,上海 200240)
跌倒是導(dǎo)致老年人受傷甚至死亡的主要原因[1]。研究表明,在65歲以上的老年人中,有三分之一的人每年至少經(jīng)歷一次跌倒[2],其中4%~15%的跌倒會導(dǎo)致嚴(yán)重的受傷。而在與受傷相關(guān)的老年人死亡案例中,有23%~40%是由跌倒引起的[3]。雖然我們很難避免跌倒的發(fā)生,但如果能準(zhǔn)確的檢測到跌倒情況,并及時發(fā)出求救信號,可以有效降低嚴(yán)重受傷或死亡發(fā)生的概率。
隨著智能手機、智能腕表等可穿戴設(shè)備的快速發(fā)展,基于可穿戴傳感器的跌倒檢測系統(tǒng)吸引了越來越多的關(guān)注。與其他基于環(huán)境設(shè)備(如攝像頭[4]、體感傳感器[5]、WiFi[6]等)的跌倒檢測系統(tǒng)相比,可穿戴傳感器(如加速度計、陀螺儀、方向計等)可以被隨身攜帶,實現(xiàn)全天候全方位的監(jiān)測,因此在實際生活中具有更廣泛的使用價值。另外,攝像頭等設(shè)備設(shè)計用戶隱私問題,部分老年人不希望受到攝像頭的監(jiān)視,而可穿戴傳感器則較好的避免了這個問題。
閾值法和機器學(xué)習(xí)分類算法是目前使用較多的跌倒檢測方法。閾值法通過設(shè)置一個或多個閾值來檢測跌倒[7]。當(dāng)接收信號超過(或低于)預(yù)設(shè)閾值,便判斷為一次跌倒。機器學(xué)習(xí)方法利用訓(xùn)練數(shù)據(jù)訓(xùn)練分類算法模型(如支持向量機、決策樹、K近鄰算法等),并利用訓(xùn)練好的模型對新的數(shù)據(jù)進(jìn)行分類判斷。上述兩種方法都依賴于人工設(shè)計提取的特征來區(qū)分跌倒和非跌倒數(shù)據(jù)。特征主要通過對原始信號在時域或頻域的統(tǒng)計分析得到。劉鵬等人[8]提取加速度信號幅度向量SVM作為考察人體活動強度的特征。Sucerquia等人[9]選擇了兩個基于能量熵的特征作為分類算法的輸入。Vavoulas等人[7]共提取了均值、中值、標(biāo)準(zhǔn)差、能量熵等57個特征以更好的反映信號的變化情況。
盡管這些人工設(shè)計提取的特征可以在特定的數(shù)據(jù)集上表現(xiàn)出較好的性能,但仍然存在著一些問題。第一,特征工程要求研究人員具有人體運動學(xué)方面的專業(yè)知識,以尋找合適的特征。然而生活中有許多與跌倒過程十分相似的運動(如坐下,躺下等),要人為設(shè)計能夠完全區(qū)分這些運動狀態(tài)的特征是一項困難的工作;第二,如果提取的特征不合適,會導(dǎo)致原始數(shù)據(jù)中重要信息的丟失,這會影響算法最終的識別精確度;第三,特征值的計算占據(jù)了算法大部分的運行時間。Inoue等人[10]的實驗結(jié)果表明,特征提取部分至少需要11 ms的時間,而算法的分類判斷部分僅需1 ms。在傳感器采樣頻率較高的情況下(如100 Hz以上),算法中特征計算部分消耗的時間會影響系統(tǒng)的實時性。
為解決上述問題,提高跌倒檢測算法的精確度和實時性,本文使用深度學(xué)習(xí)模型代替閾值法或傳統(tǒng)機器學(xué)習(xí)分類算法,提出了一種基于長短期記憶LSTM(Long Short-Term Memory)循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(Recurrent Neural Network)的跌倒檢測算法。模型包含輸入層、非線性激活層、兩層級聯(lián)的LSTM隱藏層以及Softmax分類器。算法首先利用滑動時間窗獲取傳感器數(shù)據(jù),原始數(shù)據(jù)經(jīng)過簡單的預(yù)處理便可直接作為模型的輸入。神經(jīng)網(wǎng)絡(luò)通過對訓(xùn)練數(shù)據(jù)集迭代的學(xué)習(xí)尋找出合適的數(shù)據(jù)特征,并最終輸出其對輸入數(shù)據(jù)類別的判斷(跌倒或非跌倒),實現(xiàn)端到端的處理。
我們使用兩個公開數(shù)據(jù)集MobiAct[11]和SisFall[12]對算法性能進(jìn)行評估。MobiAct數(shù)據(jù)集利用智能手機內(nèi)置的加速度計,陀螺儀和方向計采集人體運動過程中的信號,手機被隨機放置于志愿者任意一側(cè)的褲袋中,且不規(guī)定手機放置的方向。而SisFall數(shù)據(jù)集利用固定在志愿者腰部的嵌入式設(shè)備采集加速度計和陀螺儀信號。為保證運動類型的完善,兩個數(shù)據(jù)集都采集了多種跌倒與非跌倒運動類型的數(shù)據(jù)。
LSTM網(wǎng)絡(luò)是一種門控循環(huán)神經(jīng)網(wǎng)絡(luò)(Gated RNN)。該模型除了外部的RNN循環(huán)外,還具有內(nèi)部的“記憶細(xì)胞”循環(huán),即自循環(huán)。引入自循環(huán)的思想,可以產(chǎn)生梯度信息長時間持續(xù)流動的路徑,從而解決普通循環(huán)神經(jīng)網(wǎng)絡(luò)優(yōu)化過程中存在的長期依賴(Long-Term Dependencies)問題[13,14]。因此,相比于普通RNN,LSTM網(wǎng)絡(luò)更適合處理較長的時間序列數(shù)據(jù)。
LSTM的結(jié)構(gòu)圖如圖1所示。其中最重要的組成部分是記憶細(xì)胞,它所存儲的狀態(tài)貫穿于整個網(wǎng)絡(luò),只進(jìn)行少量的線性交互,這樣可以保證梯度信息在長期傳播過程中保持穩(wěn)定[15]。另外LSTM中還包括3個門控單元(一種讓信息選擇性通過的結(jié)構(gòu)):“遺忘門”決定需要從細(xì)胞狀態(tài)中丟棄的信息;“輸入門”確定添加到細(xì)胞中的新信息;“輸出門”確定最終的輸出。
圖1 LSTM內(nèi)部結(jié)構(gòu)圖
神經(jīng)元在t時刻的輸出響應(yīng)ht由該時刻的輸入xt和前一時刻的輸出響應(yīng)ht-1共同決定:
ht=θ(Wxixt+Whhht-1+bh)
(1)
式中:θ(·)表示激活函數(shù),bh表示偏置向量,Wxh表示輸入與神經(jīng)元之間的權(quán)值矩陣,Whh表示神經(jīng)元內(nèi)部自循環(huán)的循環(huán)權(quán)值矩陣。神經(jīng)元內(nèi)各部分在t時刻的具體運算如下:
it=σ(Wxixt+Whiht-1+Wcict-1+bi)
(2)
ft=σ(Wxfxt+Whfht-1+Wcfct-1+bf)
(3)
ct=ft?ct-1+it?tanh(Wxcxt+Whcht-1+bc)
(4)
ot=σ(Wxoxt+Whoht-1+Wcoct-1+bo)
(5)
ht=ot?tanhct
(6)
式中:?表示向量之間的哈達(dá)瑪積,σ(·)表示sigmoid函數(shù):σ(x)=1/(1+e-x),W**表示任意兩個單元之間的權(quán)值矩陣,b*表示某一單元的偏置。
為實現(xiàn)從原始傳感器數(shù)據(jù)到最終判斷結(jié)果的端到端處理,本文設(shè)計了一個基于LSTM網(wǎng)絡(luò)的跌倒檢測模型。模型結(jié)構(gòu)如圖2所示,它主要由4個部分組成:
①輸入層:接收來自三軸加速度計和三軸陀螺儀的時間序列數(shù)據(jù)。通過滑動時間窗對原始數(shù)據(jù)進(jìn)行序列化分割處理后,截取得到包含n個采樣點的數(shù)據(jù)x=[x0,x1,…,xt,…,xn-1]作為后續(xù)網(wǎng)絡(luò)的輸入,其中n表示數(shù)據(jù)的長度(亦即滑動時間窗覆蓋的采樣點數(shù)),xt=[xt_accx,xt_accy,xt_accz,xt_gyrox,xt_gyroy,xt_gyroz]為t時刻的數(shù)據(jù)。因此x是維度為[6,n]的二維向量。
②非線性層:我們在輸入層與LSTM隱藏層中間加入了非線性激活層,目的是引入更多的非線性特征,從而更好的反映數(shù)據(jù)的變化規(guī)律。該層的輸出可表示為:
rt=ReLU(WNxt+bN)
(7)
式中:ReLU(·)為激活函數(shù),WN表示該層的權(quán)值矩陣,bN為偏置向量。
③LSTM隱藏層:模型中包含兩層級聯(lián)的LSTM網(wǎng)絡(luò)。根據(jù)式(1)和式(2)~(6),網(wǎng)絡(luò)對輸入數(shù)據(jù)進(jìn)行了一系列的線性與非線性變換。兩層級聯(lián)的結(jié)構(gòu)可以保證模型能夠?qū)W習(xí)到足夠豐富的特征。具體而言,網(wǎng)絡(luò)內(nèi)部的權(quán)值矩陣在訓(xùn)練階段不斷迭代更新,直到接近最佳值。這些權(quán)值代表了模型從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)提取到的特征,能夠反映時間序列變化的規(guī)律。但由于這些權(quán)值并不具有顯示的意義,我們將這樣的網(wǎng)絡(luò)層成為隱藏層。
④Softmax分類器:對經(jīng)過神經(jīng)網(wǎng)絡(luò)處理的數(shù)據(jù)進(jìn)行分類判斷(跌倒或非跌倒)。分類器由兩部分組成:首先通過一層線性變化計算輸入數(shù)據(jù)屬于某一類的未歸一化概率:
z=Wchn-1+bc
(8)
式中:Wc表示該層的權(quán)值矩陣,hn-1為LSTM隱藏層的輸出,bc表示偏置向量;然后根據(jù)式(9)將概率值歸一化,并將預(yù)測概率最大的一類作為最終的輸出結(jié)果:
(9)
此處pi表示各類別的歸一化概率值,C為類別數(shù)(本文中C=2)。
圖2 跌倒檢測神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)
模型的損失函數(shù)定義為:
(10)
顯然,損失函數(shù)的值越小,表明模型的預(yù)測結(jié)果越準(zhǔn)確。我們利用梯度下降法迭代地尋找損失函數(shù)的最小值,每一步迭代后通過反向傳播更新網(wǎng)絡(luò)中的權(quán)值ω,使得模型不斷優(yōu)化。損失函數(shù)的梯度L可以表示為:
(11)
梯度下降法在損失函數(shù)的負(fù)梯度方向上迭代地尋找局部最優(yōu)解,反向傳播機制[16]將每一次迭代的信息傳遞給各網(wǎng)絡(luò)層的權(quán)值矩陣ω,并根據(jù)式(12)更新矩陣:
ωt=ωt-1-εL
(12)
此處ε表示每次迭代的學(xué)習(xí)率。為使模型的訓(xùn)練更加快速而穩(wěn)定,我們采用了衰退學(xué)習(xí)率:
ε=(εsrd)ec/ed
(13)
式中:εs為初始學(xué)習(xí)率,rd表示衰退率,ec為當(dāng)前訓(xùn)練的迭代次數(shù),ed則是預(yù)設(shè)的超參數(shù),可控制學(xué)習(xí)率衰退的快慢。衰退學(xué)習(xí)率會隨著迭代次數(shù)的增加而減小,因此,在訓(xùn)練初期,學(xué)習(xí)率較大,模型可以快速地接近最優(yōu)解;而在訓(xùn)練后期,學(xué)習(xí)率逐漸變小,模型的訓(xùn)練也趨于穩(wěn)定,最終收斂于最優(yōu)解附近。
我們使用兩個公開數(shù)據(jù)集測試模型的精確度和時延。第1個數(shù)據(jù)集為MobiAct。該數(shù)據(jù)集使用Samsung Galaxy S3智能手機內(nèi)置的LSM330DLC慣性傳感器模塊采集志愿者運動過程中的三軸加速度計、陀螺儀及方向計數(shù)據(jù),采樣頻率設(shè)置為200 Hz。數(shù)據(jù)集采集自66名志愿者(51名男性,15名女性,年齡分布為20至47歲),包含了4種不同類型的跌倒姿勢和12種不同類型的非跌倒運動。智能手機被隨機放置于志愿者任意一側(cè)的褲袋中,且不規(guī)定手機放置的方向。利用時間窗對數(shù)據(jù)集進(jìn)行序列化預(yù)處理后,我們共得到7 633例非跌倒數(shù)據(jù)和767例跌倒數(shù)據(jù)。
第2個數(shù)據(jù)集為SisFall,該數(shù)據(jù)集使用可穿戴嵌入式設(shè)備采集志愿者運動過程中的三軸加速度計、陀螺儀數(shù)據(jù),采樣頻率同樣為200 Hz,設(shè)備被固定在志愿者的腰部。38名志愿者被分為兩組:23名年輕志愿者及1名60歲的柔道運動員提供了15種跌倒姿勢和19種非跌倒運動數(shù)據(jù);其余14名老年志愿者只提供15種非跌倒運動數(shù)據(jù)。利用時間窗對數(shù)據(jù)集進(jìn)行序列化預(yù)處理后,我們共得到3 753例非跌倒數(shù)據(jù)和1 798例跌倒數(shù)據(jù)。
一次跌倒過程的持續(xù)時間一般為10 s左右,為保證時間窗截取到完整的跌倒過程,同時結(jié)合兩個數(shù)據(jù)集各自的樣本時長,我們對MobiAct采用時長為8 s的時間窗,對SisFall采用時長為12 s的時間窗。
圖3展示了典型的跌倒與非跌倒運動的加速度、角速度信號變化情況。
圖3 跌倒與非跌倒運動(步行、慢跑、坐下)的 加速度、角速度信號變化情況
跌倒檢測屬于二分類問題,模型只需分辨跌倒和非跌倒運動兩種類別即可。二分類模型的判斷結(jié)果可能存在以下4種情況[17]:
①TP(True Positive):跌倒發(fā)生且系統(tǒng)成功檢測到,屬正確判斷;②TN(True Negative):未發(fā)生跌倒且系統(tǒng)未檢測到跌倒,屬正確判斷;③FP(False Positive):未發(fā)生跌倒但系統(tǒng)仍然檢測到,屬誤判;④FN(False Negative):跌倒發(fā)生但系統(tǒng)未檢測到,屬漏判。
根據(jù)以上4種情況,可以得到ACC(accuracy)、SEN(sensitivity)和SPE(specificity)3種模型評估指標(biāo):
(14)
(15)
(16)
ACC反映了模型的總體精確度,SEN反映了模型識別跌倒的能力,SPE反映了模型識別非跌倒運動的能力。
另外,算法的時延同樣是一個重要的評估指標(biāo),它反映了算法的時間復(fù)雜度。較低的時延可以保證系統(tǒng)能夠在較高的采樣頻率下運行。
本實驗使用TensorFlow深度學(xué)習(xí)框架搭建了跌倒檢測神經(jīng)網(wǎng)絡(luò)模型,并使用實驗數(shù)據(jù)集檢驗?zāi)P偷木_度和時延。實驗在個人電腦上完成,處理器型號為Intel core i5。網(wǎng)絡(luò)模型的超參數(shù)設(shè)置如表1所示。經(jīng)過實驗比較,在這些參數(shù)值下模型的收斂速度較快,訓(xùn)練精確度也較高。
表1 跌倒檢測神經(jīng)網(wǎng)絡(luò)參數(shù)設(shè)置
兩個實驗數(shù)據(jù)集均被隨機劃分為兩部分:70%的數(shù)據(jù)作為訓(xùn)練集,其余30%的數(shù)據(jù)作為測試集。訓(xùn)練過程中,每一輪迭代時將1/7的訓(xùn)練集數(shù)據(jù)作為驗證集,測試模型的泛化能力。為提高模型訓(xùn)練的效果和效率,我們對數(shù)據(jù)進(jìn)行了簡單的預(yù)處理。首先我們將原始數(shù)據(jù)減采樣至50 Hz以減少計算量,并對數(shù)據(jù)作歸一化處理以加快模型訓(xùn)練的收斂速度。
圖4以混淆矩陣的形式展示了LSTM網(wǎng)絡(luò)模型在兩組測試集上的表現(xiàn)。盡管MobiAct數(shù)據(jù)集中的跌倒與非跌倒樣本比例嚴(yán)重失衡(約為1/10),但最終在包含2 520個測試樣本的測試集上判斷錯誤的樣本數(shù)僅為8例(4次誤判,4次漏判);同樣,在SisFall數(shù)據(jù)集的1167例測試數(shù)據(jù)上,模型判斷錯誤的樣本數(shù)僅為7例(3次誤判,4次漏判)。較低的誤報率和漏報率說明算法在兩個數(shù)據(jù)集上都表現(xiàn)出了較高的識別精確度。
圖4 算法在MobiAct和SisFall測試集上的混淆矩陣
表2從精確度和時延兩方面進(jìn)一步評估了算法的性能。作為比較,我們測試了其他深度學(xué)習(xí)模型的性能,比較模型包括一個兩層的卷積神經(jīng)網(wǎng)絡(luò)(CNN),一個兩層的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)以及一個CNN-LSTM混合網(wǎng)絡(luò)。其中RNN和CNN-LSTM中的LSTM部分的參數(shù)設(shè)置與表1所列相同;CNN和CNN-LSTM中的CNN部分采用了維度為[1,50]的一維卷積核,其余參數(shù)與表1一致。
由表2數(shù)據(jù)可知,本文提出的LSTM網(wǎng)絡(luò)在MobiAct和SisFall數(shù)據(jù)集上都達(dá)到了較高的精確度,其中ACC分別為99.68%,99.58%;SEN分別為98.24%,99.27%;SPE分別為99.83%,99.73%。同時,算法時延可以保持在2.2 ms以內(nèi)(分別為1.221 ms,2.164 ms)。CNN網(wǎng)絡(luò)和CNN-LSTM網(wǎng)絡(luò)同樣可以在數(shù)據(jù)集上達(dá)到較高的精確度,但它們的時延要大于LSTM。尤其是CNN-LSTM網(wǎng)絡(luò),雖然其精確度與LSTM網(wǎng)絡(luò)相近,但時延遠(yuǎn)遠(yuǎn)大于后者(16 ms以上),這在采樣頻率較高的情況下會影響系統(tǒng)的實時運行。RNN網(wǎng)絡(luò)的時延要小于LSTM網(wǎng)絡(luò),這是因為RNN的結(jié)構(gòu)比LSTM簡單,網(wǎng)絡(luò)內(nèi)部的參數(shù)更少,計算更加快速。但它的精確度相比于其他網(wǎng)絡(luò)下降了許多,ACC僅為96%左右,SEN甚至降到了91%左右。這說明普通的RNN網(wǎng)絡(luò)不適合處理較長的時間序列數(shù)據(jù)。綜上所述,本文提出的跌倒檢測網(wǎng)絡(luò)可以更好的平衡精確度和時延兩方面的性能。
SEN反映了算法識別跌倒數(shù)據(jù)的能力。在實際使用中,我們不希望漏報任何一次跌倒,因此算法的SEN顯得尤為重要。在表2中,MobiAct數(shù)據(jù)集上的SEN均低于SisFall數(shù)據(jù)集,這主要是MobiAct數(shù)據(jù)集中跌倒與非跌倒樣本比例不均衡導(dǎo)致的。這也提醒我們在實際應(yīng)用中,應(yīng)盡量保證訓(xùn)練數(shù)據(jù)集正負(fù)樣本比例的均衡。
本文提出了一種基于可穿戴傳感器的LSTM跌倒檢測神經(jīng)網(wǎng)絡(luò)模型。通過滑動時間窗截取時間序列傳感器信息(包括加速度、角速度等信息),原始數(shù)據(jù)只需進(jìn)行歸一化等預(yù)處理便可作為模型的輸入。神經(jīng)網(wǎng)絡(luò)通過訓(xùn)練自動學(xué)習(xí)并提取數(shù)據(jù)內(nèi)部的特征,再利用分類器判斷是否為跌倒數(shù)據(jù)。該方法省去了人工的特征提取,實現(xiàn)了從原始數(shù)據(jù)到判斷結(jié)果的端到端處理。我們使用MobiAct和SisFall兩個跌倒檢測數(shù)據(jù)集測試模型的性能。實驗結(jié)果顯示,本文提出的跌倒檢測模型可以達(dá)到較高的精確度(99.58%~99.68%)和較低的時延(2.2 ms以內(nèi))。與其他類似模型相比,LSTM跌倒檢測模型能夠在兩方面性能實現(xiàn)較好的平衡。
實驗主要使用中青年跌倒數(shù)據(jù)來近似模擬老年人跌倒數(shù)據(jù),實驗結(jié)果驗證了所提算法的可行性。但要得到一個真正適用于老年人跌倒檢測的模型,還需要采集足夠多的老年人的跌倒數(shù)據(jù)來進(jìn)一步訓(xùn)練優(yōu)化模型,使得模型能夠提取出更適應(yīng)老年人的數(shù)據(jù)特征。
本文的測試工作主要為離線測試。目前深度學(xué)習(xí)在基于可穿戴傳感器的跌倒檢測問題的應(yīng)用尚未得到廣泛的研究。這主要是受限于可穿戴設(shè)備的計算能力和能耗問題。但是嵌入式神經(jīng)網(wǎng)絡(luò)處理單元(NPU)和針對嵌入式設(shè)備的輕量級深度學(xué)習(xí)框架(如TensorFlow Lite)的發(fā)展使得在可穿戴設(shè)備或智能手機上運行神經(jīng)網(wǎng)絡(luò)成為可能。在未來的工作中,我們需要測試模型的在線使用性能,如在智能手機上的運行效果。算法的能耗也是一個應(yīng)當(dāng)考慮的因素,我們需要制定一個低功耗的實時運行框架,以保證系統(tǒng)的正常使用。