李 慧,謝 靜
(1.安徽糧食工程職業(yè)學(xué)院 信息技術(shù)系,安徽 合肥 230001; 2.合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息學(xué)院,安徽 合肥 230001;3.蚌埠醫(yī)學(xué)院 公共基礎(chǔ)學(xué)院,安徽 蚌埠 233030)
據(jù)統(tǒng)計(jì),65周歲以上的人群中,有近40%的老人每年至少跌倒一次[1]。對(duì)于老年人而言,跌倒可造成肌肉損傷、骨折、關(guān)節(jié)扭傷等一系列損傷[2-3],給社會(huì)和家庭都帶來了嚴(yán)重的負(fù)擔(dān)。若老人跌倒后長(zhǎng)時(shí)間躺在地上不能得到有效的醫(yī)療幫助,則可能導(dǎo)致更加嚴(yán)重的后果。有數(shù)據(jù)顯示,跌倒后能否在短時(shí)間內(nèi)獲得有效的醫(yī)療救助直接影響到跌倒老人的健康及康復(fù)[4]。因此,老人跌倒后能及時(shí)被檢測(cè)到并給監(jiān)護(hù)人或醫(yī)療機(jī)構(gòu)發(fā)出求救信號(hào),能有效減輕跌倒給老人帶來的傷害及社會(huì)和家庭的負(fù)擔(dān)。
跌倒檢測(cè)的本質(zhì)就是對(duì)人體行為進(jìn)行分類,目的就是將人體行為分為正常行為和跌倒行為。目前,跌倒檢測(cè)研究主要基于3個(gè)方面:聲音、視覺和可穿戴設(shè)備。文獻(xiàn)[5]使用聲音傳感器來檢測(cè)跌倒,獲得了100%的靈敏性和97%的特異性,然而當(dāng)?shù)惯^程較緩慢時(shí),傳感器則不能檢測(cè)到有效的跌倒聲音。基于視覺的跌倒檢測(cè)通常利用RGB圖像,但RGB圖像受光線的影響較大。文獻(xiàn)[6]利用深度感知圖像來檢測(cè)跌倒,有效克服了光線的影響,但這種檢測(cè)方式易受遮擋的影響且可能對(duì)應(yīng)用對(duì)象的個(gè)人隱私造成侵犯[7],并受采集設(shè)備的限制而不易推廣到日常生活場(chǎng)景中。目前,基于可穿戴設(shè)備的跌倒檢測(cè)因具有使用方便、保護(hù)個(gè)人隱私的優(yōu)勢(shì),被認(rèn)為是最有效的跌倒檢測(cè)方法,其實(shí)時(shí)性和精確度都是最高的[8]。文獻(xiàn)[9]利用加速度傳感器在時(shí)域上的特征來檢測(cè)跌倒,文獻(xiàn)[10-11]提出利用腕部設(shè)備來檢測(cè)跌倒。在跌倒檢測(cè)算法方面,常用的有隱馬爾可夫鏈[12-13]、動(dòng)態(tài)樸素貝葉斯網(wǎng)絡(luò)[14]、支持向量機(jī)[15]、隨機(jī)森林[16]和K 最近鄰[17]等方法。這些檢測(cè)方法多利用傳統(tǒng)的手工提取特征值來進(jìn)行跌倒分類,其分類的科學(xué)性和準(zhǔn)確性受人工影響較大。
本研究將機(jī)器學(xué)習(xí)應(yīng)用到跌倒檢測(cè)中:首先給出了遞歸神經(jīng)網(wǎng)絡(luò)的訓(xùn)練算法;然后對(duì)可穿戴設(shè)備采集的數(shù)據(jù)進(jìn)行序列化處理,并在序列化的基礎(chǔ)上對(duì)數(shù)據(jù)進(jìn)行分類標(biāo)記,以方便輸入神經(jīng)網(wǎng)絡(luò);接著,用已標(biāo)記的序列化數(shù)據(jù)對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練并不斷調(diào)整網(wǎng)絡(luò)參數(shù);最后用訓(xùn)練好的遞歸神經(jīng)網(wǎng)絡(luò)對(duì)跌倒數(shù)據(jù)進(jìn)行分類。仿真實(shí)驗(yàn)結(jié)果表明,該方法的準(zhǔn)確率、靈敏度及評(píng)測(cè)值都較以前的方法有較大提升。
深度學(xué)習(xí)(deep learning,DL)可通過多重非線性變換,如旋轉(zhuǎn)、扭曲、翻轉(zhuǎn)等,實(shí)現(xiàn)對(duì)原始數(shù)據(jù)的多層變換,將原始數(shù)據(jù)轉(zhuǎn)變成更加抽象、更高層次的表現(xiàn)形式,是一種自動(dòng)的特征學(xué)習(xí)方法。遞歸神經(jīng)網(wǎng)絡(luò)(recursive neural network, RNN)是深度學(xué)習(xí)的一種。
RNN的結(jié)構(gòu)如圖1所示,其每個(gè)時(shí)刻的預(yù)測(cè)結(jié)果都會(huì)被放到下一時(shí)刻的輸入里進(jìn)行運(yùn)算,與下一時(shí)刻的輸入一起生成下一時(shí)刻的結(jié)果。RNN信息正向傳播結(jié)構(gòu)如圖2所示,A代表網(wǎng)絡(luò),Xt代表t時(shí)刻輸入的X,ht代表網(wǎng)絡(luò)生成的結(jié)果,網(wǎng)絡(luò)A上一條指向自己的線表明上一時(shí)刻的輸出接著輸入了A里面。一系列的X輸入圖2等號(hào)左側(cè)結(jié)構(gòu)中后,展開就變成了右側(cè)的樣子,即含有隱藏層的網(wǎng)絡(luò),只不過隱藏層的輸出變成了兩份,一份傳到下一個(gè)節(jié)點(diǎn),另一份傳給本身節(jié)點(diǎn)。
圖1 RNN的結(jié)構(gòu)Fig.1 The structure of RNN
圖2 RNN正向傳播結(jié)構(gòu)Fig.2 The structure of RNN forward
從RNN的傳播結(jié)構(gòu)可知,RNN具有時(shí)間自反饋性,可利用輸入序列中的時(shí)間信息來解決時(shí)間序列的分類和預(yù)測(cè)問題。RNN每一時(shí)刻的預(yù)測(cè)輸出由兩部分組成,一部分來自當(dāng)前時(shí)刻的輸入,還有一部分來自上一時(shí)刻的隱藏狀態(tài)。目前,RNN在語(yǔ)音識(shí)別、機(jī)器翻譯、文本語(yǔ)言處理等領(lǐng)域表現(xiàn)出了巨大的優(yōu)勢(shì)[18-19]。
RNN模型的運(yùn)行流程如圖3所示。因序列本身的先后順序隱藏了一部分潛在規(guī)律,RNN將這些潛在規(guī)律保存在隱藏層中,不斷向下傳遞,通過隱藏層的輸入不斷影響每一個(gè)新數(shù)據(jù)的處理。隱藏層的狀態(tài)由式(1)計(jì)算得出:
圖3 RNN模型運(yùn)行流程Fig.3 The flow chart of RNN model
(1)
式中:f是輸入層到隱藏層的激活函數(shù)。這里選用Sigmoid函數(shù),公式如下:
(2)
輸出層的輸出與隱藏層的關(guān)系如下:
yt=g(ht),
(3)
式中:g是隱藏層到輸出層的激活函數(shù)。
因本研究的目的是實(shí)現(xiàn)二分類,故這里選用Softmax函數(shù),計(jì)算方式如下:
(4)
訓(xùn)練時(shí),假設(shè)輸出值為y-而實(shí)際值為y,y和y-存在一定的誤差,用Ek表示輸出值與實(shí)際值間的均方差:
(5)
因隱藏層到輸出層的連接權(quán)為U,沿反傳播方向?qū)?shù)進(jìn)行調(diào)整,設(shè)給定學(xué)習(xí)率為η,有
(6)
(7)
輸出層的輸入為β,β的定義見式(8):
β=∑Uh,
(8)
式中:h是隱藏層的輸出。由此可得
(9)
由式(2)和式(5)可得輸出層的梯度
(10)
將式(10)和式(9)代入(6),可得隱藏層到輸出層的權(quán)重
ΔU=-ηDh。
(11)
類似地,輸入層到隱藏層的權(quán)重
ΔV=-ηEx,
(12)
式中:E表示隱藏層的梯度,其計(jì)算公式為
(13)
式中:b表示隱藏層的輸出;a表示隱藏層的輸入。
對(duì)模型進(jìn)行訓(xùn)練時(shí),先將數(shù)據(jù)序列提供給輸入層,逐層往前傳遞直到輸出,然后計(jì)算輸出層的誤差,再將誤差逆向傳播至隱藏層,最后根據(jù)隱藏層的誤差來對(duì)連接矩陣和閾值等參數(shù)進(jìn)行調(diào)整。這個(gè)過程循環(huán)進(jìn)行,反復(fù)調(diào)整參數(shù),直到模型預(yù)測(cè)結(jié)果和誤差滿足要求。
本研究采用智能手機(jī)的內(nèi)置加速度傳感器采集日常行為與跌倒數(shù)據(jù),由測(cè)試者將手機(jī)佩戴在腰部位置進(jìn)行采集。將采集的數(shù)據(jù)用數(shù)據(jù)序列的形式表示和處理。數(shù)據(jù)序列S={[xs0,ys0,zs0],[xs1,ys1,zs1],[xs2,ys2,zs2],…,[xst,yst,zst],[xst+1,yst+1,zst+1],…,[xsn,ysn,zsn]},xst表示t時(shí)刻在x軸的加速度,yst表示t時(shí)刻在y軸的加速度,zst表示t時(shí)刻在z軸的加速度,Sn=[xsn,ysn,zsn],故S又可以表示為S=[S0,S1,S2…St,St+1,…Sn],采集頻率為25 Hz,采樣周期為5 s。對(duì)序列化后的數(shù)據(jù)進(jìn)行分類,分為訓(xùn)練數(shù)據(jù)集、測(cè)試數(shù)據(jù)集和驗(yàn)證數(shù)據(jù)集。先對(duì)訓(xùn)練數(shù)據(jù)集進(jìn)行標(biāo)記,將數(shù)據(jù)序列表示為S={[xs0,ys0,zs0],[xs1,ys1,zs1],…,[xsn,ysn,zsn],action},其中action表示當(dāng)前行為的類型,0表示正常行為,1表示跌倒。
表1 實(shí)驗(yàn)環(huán)境Tab.1 The experimental environment
訓(xùn)練集和驗(yàn)證集數(shù)據(jù)用于模型優(yōu)化和參數(shù)調(diào)整,測(cè)試集數(shù)據(jù)用于模型性能檢驗(yàn)。利用基于Python的深度學(xué)習(xí)庫(kù)Keras進(jìn)行實(shí)驗(yàn)。具體實(shí)驗(yàn)環(huán)境見表1。
訓(xùn)練集中的數(shù)據(jù)訓(xùn)練完成后,用驗(yàn)證集的數(shù)據(jù)對(duì)模型進(jìn)行檢驗(yàn),若模型不能達(dá)到要求則繼續(xù)訓(xùn)練,直到模型達(dá)到要求,再用測(cè)試集進(jìn)行測(cè)試。具體訓(xùn)練和測(cè)試流程見圖4。
圖4 RNN的訓(xùn)練和測(cè)試流程Fig.4 The flow chart of RNN training and testing
本研究采用Python的Keras框架實(shí)現(xiàn)RNN模型,CPU為Intel core i7,GPU采用NVIDIA geforce,輸入x分為5個(gè)時(shí)間段,每段內(nèi)容為25個(gè)值。神經(jīng)元的數(shù)量設(shè)置為25,激活函數(shù)設(shè)置為relu,solver設(shè)置為sgd,正則化參數(shù)alpha設(shè)置為1×10-4,學(xué)習(xí)率learning_rate_init初始值設(shè)置為0.1,設(shè)置50個(gè)隱藏層。先對(duì)采集的傳感器數(shù)據(jù)進(jìn)行序列化處理,然后進(jìn)行訓(xùn)練。取5 000個(gè)樣本進(jìn)行模型訓(xùn)練,其中跌倒行為序列有2 874個(gè),訓(xùn)練完訓(xùn)練組的序列后,用驗(yàn)證組的713個(gè)行為序列進(jìn)行測(cè)試。
將需要檢測(cè)的數(shù)據(jù)輸入訓(xùn)練后的跌倒檢測(cè)模型,計(jì)算其準(zhǔn)確率Ar、靈敏度Sn及評(píng)測(cè)值F1,計(jì)算方法見式(14)至式(16):
(14)
(15)
(16)
式中:TP表示將跌倒檢測(cè)為跌倒的次數(shù);FP表示誤將正?;顒?dòng)檢測(cè)為跌倒的次數(shù);FN表示跌倒發(fā)生了但未被檢測(cè)出的次數(shù);TN表示沒有發(fā)生跌倒但檢測(cè)出跌倒的次數(shù)。
將3位測(cè)試者的數(shù)據(jù)輸入RNN模型進(jìn)行測(cè)試,結(jié)果如表2所示。
表2 測(cè)試結(jié)果Tab.2 The results of test
從表2可以看出,訓(xùn)練后的RNN準(zhǔn)確率在93%以上,評(píng)測(cè)值在93%以上,這表明RNN模型可有效檢測(cè)出跌倒事件。同時(shí),還可以通過擴(kuò)大訓(xùn)練樣本、反復(fù)訓(xùn)練和增加隱藏層的方法來提高檢測(cè)準(zhǔn)確率。
為驗(yàn)證RNN模型的有效性,本研究使用相同的數(shù)據(jù)集與數(shù)據(jù)量在相同的實(shí)驗(yàn)環(huán)境下,分別對(duì)RNN模型、支持向量機(jī)(SVM)模型[20]、決策樹(DT)模型[21]的檢測(cè)算法進(jìn)行對(duì)比實(shí)驗(yàn),結(jié)果如表3所示。
表3 模型對(duì)比結(jié)果Tab.3 The comparison results of the models %
從表3可以看出,針對(duì)同一數(shù)據(jù)集,SVM方法的靈敏度和評(píng)測(cè)值均高于DT算法,而RNN模型又在各指標(biāo)上優(yōu)于SVM方法。本研究的模型訓(xùn)練樣本較少,若采用大樣本訓(xùn)練,準(zhǔn)確率和靈敏度還將進(jìn)一步提升。由此可見,RNN模型在跌倒和非跌倒的區(qū)分上具有較好的性能。
為了準(zhǔn)確檢測(cè)跌倒的發(fā)生,本研究利用加速度傳感器采集正?;顒?dòng)和跌倒數(shù)據(jù),引入RNN構(gòu)建跌倒檢測(cè)模型,對(duì)采集的數(shù)據(jù)進(jìn)行序列化預(yù)處理,并將數(shù)據(jù)序列分為訓(xùn)練集、驗(yàn)證集和測(cè)試集,用訓(xùn)練集和驗(yàn)證集對(duì)RNN模型進(jìn)行訓(xùn)練,達(dá)到檢測(cè)要求后用測(cè)試集的數(shù)據(jù)進(jìn)行跌倒檢測(cè)測(cè)試。實(shí)驗(yàn)結(jié)果表明,本研究設(shè)計(jì)的跌倒檢測(cè)模型的準(zhǔn)確率、靈敏度和評(píng)測(cè)值較其他模型都有較大幅度提升,并且表現(xiàn)出了較好的穩(wěn)定性。