王晶晶, 黃 勇, 陳寶欣, 趙運(yùn)勇
(1.煙臺(tái)黃金職業(yè)學(xué)院機(jī)電工程系,山東招遠(yuǎn)265401;2.海軍航空大學(xué),山東煙臺(tái)264001;3.重慶市軟匯科技有限公司,重慶400039)
隨著微型傳感器和數(shù)字技術(shù)的快速發(fā)展,尤其是近年來人工智能在各領(lǐng)域的不斷突破,各種智能的可穿戴設(shè)備不斷涌現(xiàn),廣泛應(yīng)用于跌倒檢測領(lǐng)域,基于可穿戴設(shè)備的跌倒檢測方法也獲得了眾多學(xué)者的關(guān)注。跌倒作為一種相對于正常姿態(tài)的異常行為,文獻(xiàn)[1-2]中將跌倒定義為“非本意地摔倒在地面或者更低的平面上”。可以看出,跌倒有其固有的特色,但又與躺下、彎腰等行為有相似的地方,都存在一個(gè)設(shè)備的空間位置由高到低的變化。因此,可穿戴設(shè)備的跌倒檢測面臨著一定的困難和挑戰(zhàn)。目前,常用的跌倒檢測算法有直接閾值法和機(jī)器學(xué)習(xí)法等。直接閾值法通過人工提取特征值,然后與設(shè)定的閾值進(jìn)行比較以確定是否屬于跌倒?fàn)顟B(tài)。常用的特征值有加速度或速度最大值、方向變化、信息熵等。文獻(xiàn)[3]中認(rèn)為跌倒撞擊的加速度大于2.5 g。文獻(xiàn)[4]中將跌倒判決設(shè)為加速度高于1.8 g和同時(shí)角速度>200°/s的行為。文獻(xiàn)[5]中認(rèn)為跌倒發(fā)生時(shí),加速度會(huì)先高于某個(gè)閾值,隨后又會(huì)低于某個(gè)較小的閾值,通過識(shí)別這一時(shí)間約束的狀態(tài)變化來檢測跌倒。通過上述研究結(jié)果可以發(fā)現(xiàn),直接閾值法基于人工提取的特征值進(jìn)行判斷,計(jì)算簡單,運(yùn)算速度快,非常適合在嵌入式可穿戴設(shè)備上維持較長時(shí)間的運(yùn)行。但是,直接閾值法的特征選取難以全面反映跌倒和非跌倒的數(shù)據(jù)特點(diǎn),且閾值的選擇沒有理論依據(jù),即閾值對誤報(bào)率和漏報(bào)率的關(guān)系沒有理論支持。機(jī)器學(xué)習(xí)的方法將跌倒檢測的過程看作是一個(gè)二分類問題,常用的算法如人工神經(jīng)網(wǎng)絡(luò)、決策樹、支持向量機(jī)和K近鄰等。按照對數(shù)據(jù)處理方式的不同,機(jī)器學(xué)習(xí)的方法又可分為基于特征的方法和基于時(shí)間序列的方法。基于特征的方法類似于直接閾值法,不同的是其提取人工特征后,直接采用SVM等典型的分類器進(jìn)行判決[5-7]。這種方法與直接閾值法都面臨著特征提取不充分的問題。基于時(shí)間序列的機(jī)器學(xué)習(xí)方法認(rèn)為傳感器各個(gè)狀態(tài)之間存在時(shí)間上的相關(guān)性,如跌倒過程會(huì)有一個(gè)失重、撞擊的過程[5]。常用的方法有條件隨機(jī)域、隱馬爾科夫模型、循環(huán)神經(jīng)網(wǎng)絡(luò)等。理論上講,這類方法由于采用端到端的黑盒訓(xùn)練法,不受人工特征提取不全面的影響。文獻(xiàn)[8]中比較了RNN與SVM和一類神經(jīng)網(wǎng)絡(luò)(1NN)等方法的性能,結(jié)果顯示1NN效果最好。實(shí)際的可能原因是原始的RNN訓(xùn)練存在梯度消失的問題,即如果輸入時(shí)間序列過長的話,RNN將很難訓(xùn)練。文獻(xiàn)[9]中將原始RNN引入跌倒檢測,取得了較好效果,但是文中并未描述采用的時(shí)間序列長度。為了克服RNN梯度消失的問題,長短期記憶網(wǎng)絡(luò)(Long Short Term Memory,LSTM)和門循環(huán)單元(Gated Recurrent Unit)被提出,但是由于“門”的引入,大大增加了計(jì)算量,因此文獻(xiàn)[10-11]中基于多層LSTM的方法對于基于嵌入式系統(tǒng)的可穿戴設(shè)備來說并不適用。
作者前期研究了基于離散特征的神經(jīng)網(wǎng)絡(luò)跌倒檢測算法[12-13],本文在此基礎(chǔ)上進(jìn)一步提出了基于獨(dú)立循環(huán)神經(jīng)網(wǎng)絡(luò)(Independently RNN,IndRNN)的跌倒檢測方法,構(gòu)建了雙向、多層和殘差結(jié)構(gòu)的跌倒檢測模型,并分析了不同網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)對訓(xùn)練的影響。實(shí)驗(yàn)結(jié)果顯示,本文所提基于IndRNN的跌倒檢測方法,相對于基于原始RNN的方法,性能上有較大提升,與LSTM網(wǎng)絡(luò)性能相當(dāng)。相比于前期工作,新方法降低了誤報(bào)率。
RNN廣泛應(yīng)用于序列學(xué)習(xí)問題,如行為識(shí)別、語音識(shí)別等,并且取得了很好的結(jié)果。相比于卷積神經(jīng)網(wǎng)絡(luò)等前向網(wǎng)絡(luò)來說,RNN可以將隱含的狀態(tài)通過前一時(shí)刻傳遞到下一時(shí)刻,該過程用公式表示如下,

式中:xt∈R;ht∈R為時(shí)刻t的輸入向量和狀態(tài)向量;W∈RN×M,U∈RN×N和b∈RN分別表示輸入權(quán)重、循環(huán)權(quán)重和偏執(zhí);σ(·)表示元素級(jí)激活函數(shù);M和N分別為輸入向量和狀態(tài)向量的維度。LSTM和GRU通過引入門單元可以部分緩解該問題。文獻(xiàn)[14]中提出了一種IndRNN結(jié)構(gòu),隱含層的每個(gè)神經(jīng)元之間互相獨(dú)立,可以實(shí)現(xiàn)非常深的時(shí)間步長。IndRNN的結(jié)構(gòu)可表示為

式中:u為循環(huán)權(quán)重向量;?為Hadamard積。對于第n個(gè)神經(jīng)元,隱含狀態(tài)hn,t可寫為

式中:wn和un分別為輸入權(quán)重和循環(huán)權(quán)重。可以看出,每一個(gè)神經(jīng)元只接收來自輸入的信息和其自身的前一時(shí)刻狀態(tài)。此外,為了獲得更深的時(shí)間步長和網(wǎng)絡(luò)層數(shù),IndRNN引入了線性整流函數(shù)(Rectified Linear Unit,ReLU)激活函數(shù),

為了實(shí)現(xiàn)從傳感器序列數(shù)據(jù)到檢測結(jié)果的端到端處理,本文設(shè)計(jì)了基于IndRNN的跌倒檢測模型,其結(jié)構(gòu)如圖1所示。

圖1 跌倒檢測模型結(jié)構(gòu)圖
模型結(jié)構(gòu)主要有以下3部分組成:
(1)輸入層。輸入層的數(shù)據(jù)為傳感器序列數(shù)據(jù)滑窗截取T個(gè)時(shí)間步長,即x1,x2,…,xT,其中每一時(shí)刻的數(shù)據(jù)為傳感器當(dāng)前狀態(tài)矢量,可以是三軸加速度信息或三軸角速度信息等。
(2)隱含層。隱含層的主要參數(shù)為維度N,其激活函數(shù)采用ReLU。IndRNN的隱含層通過Hadamard積實(shí)現(xiàn)狀態(tài)的轉(zhuǎn)移。對于跌倒檢測的時(shí)間序列而言,最終“跌倒”或“非跌倒”的狀態(tài)信息隱含于整個(gè)跌倒過程。通過循環(huán)神經(jīng)網(wǎng)絡(luò)的記憶功能,這一過程的特征可存儲(chǔ)于最終時(shí)刻T的狀態(tài)向量和輸出上。如果再將序列數(shù)據(jù)逆序輸入另一個(gè)IndRNN單元,則最終跌倒特征會(huì)保存在初始時(shí)刻的輸出。這前后兩個(gè)時(shí)刻的輸出是最為關(guān)心的。如果問題規(guī)模較復(fù)雜,單層的IndRNN網(wǎng)絡(luò)結(jié)構(gòu)可能不足以應(yīng)對,此時(shí)可采取堆疊多層的辦法增強(qiáng)網(wǎng)絡(luò)的性能。需要注意的是,網(wǎng)絡(luò)模型的復(fù)雜度與問題的復(fù)雜度是相關(guān)聯(lián)的,過于復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)反而容易造成過擬合。為此,本文將堆疊的每一層IndRNN的前后輸出連通至輸出層,這樣可以降低網(wǎng)絡(luò)帶來的過擬合副作用。這種結(jié)構(gòu)的基本原理是殘差網(wǎng)絡(luò),通過殘差跳躍式的結(jié)構(gòu)可以使網(wǎng)絡(luò)在縱向空間上達(dá)到很深的層次。當(dāng)然,本文方法主要面向的是嵌入式系統(tǒng)應(yīng)用,實(shí)際并不需要特別深的空間層次,2層的縱向深度已足夠。
(3)輸出層。經(jīng)過雙向IndRNN隱含層的處理后,關(guān)于跌倒或非跌倒的隱含特征得以提取,將兩個(gè)方向的特征輸入一個(gè)簡單的分類器即可實(shí)現(xiàn)跌倒檢測。本文采用0和1分別表示不跌倒和跌倒兩種狀態(tài),因此輸出層采用Sigmoid激活函數(shù),即

訓(xùn)練神經(jīng)網(wǎng)絡(luò)常用的損失函數(shù)有交叉熵、均方根誤差、SVM合頁損失、Smooth L1損失等。對于跌倒檢測這一問題,有兩個(gè)指標(biāo)需要重點(diǎn)關(guān)注:檢測率和誤報(bào)率。一般的跌倒檢測設(shè)備在檢測到老年人跌倒后會(huì)做出報(bào)警提示,如發(fā)出聲響或者語音和短信呼叫親屬等。如果設(shè)備頻繁發(fā)生誤報(bào),將嚴(yán)重影響用戶體驗(yàn),并且會(huì)造成對設(shè)備的信任危機(jī)。而如果檢測效果不好,老年人在跌倒后不能有效警示,又會(huì)造成嚴(yán)重后果,進(jìn)而也會(huì)降低對設(shè)備的信任。本文引入奈曼-皮爾遜準(zhǔn)則,即在給定的虛警概率約束條件下,使檢測概率達(dá)到最大。文獻(xiàn)[15]中證明了采用交叉熵、均方根誤差作為損失函數(shù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)或自適應(yīng)系統(tǒng)是奈曼皮爾遜最優(yōu)的,即在一定虛警條件下,相應(yīng)檢測概率是最大的(最終的近似效果受網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)和訓(xùn)練情況影響)。為此,采用交叉熵作為損失函數(shù),定義如下,

式中:L為總的樣本數(shù);Θ為網(wǎng)絡(luò)的全部權(quán)重向量;F(x,Θ)為神經(jīng)網(wǎng)絡(luò)的輸出。采用梯度下降算法作為網(wǎng)絡(luò)優(yōu)化算法,其基本原理如下:


式中:Λ為似然比。通過設(shè)定一個(gè)閾值τ∈[0,1]與網(wǎng)絡(luò)輸出進(jìn)行比較可控制跌倒檢測器的誤報(bào)率,并且可以保證當(dāng)前的檢測概率是最大的。這樣做的另一個(gè)好處是對于最終面向用戶的設(shè)備,可以設(shè)置一個(gè)設(shè)備靈敏度調(diào)節(jié)選項(xiàng),用于用戶自主控制設(shè)備的靈敏度。
利用前期研制的可穿戴式跌倒檢測設(shè)備采集各種跌倒與非跌倒的數(shù)據(jù),采樣頻率設(shè)為50 Hz。該型設(shè)備采用三軸加速度傳感器采集人體運(yùn)動(dòng)狀態(tài)數(shù)據(jù),并具有藍(lán)牙無線傳輸模塊、GPS定位、語音和短信通信能力[12-13]。通過將該設(shè)備佩戴于腰部位置,然后與上位機(jī)藍(lán)牙建立連接,通過自研的軟件系統(tǒng)可實(shí)時(shí)采集各種運(yùn)動(dòng)狀態(tài)數(shù)據(jù)。各種類型的數(shù)據(jù)采集自9名志愿者(6名男性,3名女性),包括5種跌倒類型(走動(dòng)跌倒、跑動(dòng)跌倒、左側(cè)跌倒、右側(cè)跌倒以及無意識(shí)狀態(tài)跌倒)數(shù)據(jù),共415條,和常見的生活狀態(tài)(走路、跑步、上下樓梯、躺下起立、坐下起立、彎腰、跳躍等)數(shù)據(jù),共256條。為提高檢測方法的計(jì)算效率和降低設(shè)備的計(jì)算負(fù)擔(dān),僅處理加速度值超過某一較小閾值的滑窗數(shù)據(jù),因?yàn)槿绻铀俣戎祪H超過9.8 m/s2很小時(shí),完全可以認(rèn)為當(dāng)前處于非跌倒?fàn)顟B(tài)。取滑動(dòng)窗口長度為3 s,對應(yīng)T=150個(gè)數(shù)據(jù)點(diǎn)。最終截取的跌倒數(shù)據(jù)樣本401個(gè),非跌倒數(shù)據(jù)樣本642個(gè)。典型的跌倒與非跌倒(猛然坐下)滑窗數(shù)據(jù)如圖2所示。由圖中可見,跌倒與非跌倒數(shù)據(jù)有相似之處,即某一軸的加速度都在短時(shí)間內(nèi)變化很大,因此,如果采用直接閾值法很可能造成誤報(bào)。
實(shí)驗(yàn)采用TensorFlow深度學(xué)習(xí)框架搭建跌倒檢測模型,采用第2節(jié)構(gòu)建的數(shù)據(jù)集用于模型的訓(xùn)練和測試,其中60%的數(shù)據(jù)用于模型訓(xùn)練,40%的數(shù)據(jù)用于模型測試。本節(jié)采用交叉驗(yàn)證的方法測試了不同網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)對模型訓(xùn)練的影響,包括不同類型的RNN、網(wǎng)絡(luò)堆疊層數(shù)和隱含層的維度,給出了所提方法與相關(guān)研究的性能對比。訓(xùn)練設(shè)備為一臺(tái)英偉達(dá)DGX Station,配備有4塊英偉達(dá)Telsa V100顯卡,因此可以很方便地并行訓(xùn)練各個(gè)模型,并驗(yàn)證訓(xùn)練效果。

圖2 典型的滑窗數(shù)據(jù)
首先比較原始RNN、GRU和IndRNN的效果,其中的GRU與LSTM類似,故僅以GRU為例。對于不同的網(wǎng)絡(luò)結(jié)構(gòu),堆疊不同層數(shù)的RNN單元效果也不同。為此,分別比較了堆疊1層和2層的效果差異。所有模型的其余超參數(shù)設(shè)置相同,序列長度T=150,輸入向量維度M=3,狀態(tài)向量維度N=8,學(xué)習(xí)率0.000 5,批大小406,迭代次數(shù)20 000,損失函數(shù)指標(biāo)10-6。實(shí)驗(yàn)結(jié)果如圖3所示,其中RNN/1/8表示1個(gè)RNN單元,狀態(tài)層維度N=8,其余類推。

圖3 不同網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練損失
從圖3可以看出,一方面,多層堆疊的方式可以提高模型的表示能力;另一方面,相較原始RNN,GRU結(jié)構(gòu)中門單元的引入改善了梯度消失的影響,使模型的收斂速度加快。損失收斂最快的是基于IndRNN的模型,由此可見IndRNN獨(dú)立狀態(tài)單元和ReLU激活函數(shù)的引入大大降低了梯度消失的影響,使模型更容易記憶較長時(shí)間的信息。從圖3還可以看出,RNN的訓(xùn)練過程存在損失波動(dòng),尤其是多層RNN堆疊時(shí),原因可能是隱含層單元之間的互相影響,而具有獨(dú)立隱含層結(jié)構(gòu)的GRU和IndRNN梯度下降方向更穩(wěn)定(GRU重置門和更新門功能類似于IndRNN中的狀態(tài)權(quán)重u)。
狀態(tài)向量的維度也直接影響模型的訓(xùn)練,不同維度的基于IndRNN的模型損失函數(shù)曲線如圖4所示。從圖中可以看出,IndRNN/2/8模型的收斂速度最快。

圖4 不同隱含層維度訓(xùn)練損失
最后,取閾值τ=0.997,測試本文方法與典型方法的檢測率和誤報(bào)率的性能,結(jié)果如表1所示。可以看出,本文基于IndRNN結(jié)構(gòu)的方法明顯優(yōu)于閾值法,與早期的工作相比也有一定的提升,主要是大幅降低了誤報(bào)率。與傳統(tǒng)RNN的相比,檢測率顯著增加。本文的IndRNN/2/8結(jié)構(gòu)與基于LSTM網(wǎng)絡(luò)的方法檢測率相當(dāng)。實(shí)際上,現(xiàn)階段各種方法的檢測率已經(jīng)相當(dāng)高,本文方法的主要優(yōu)勢在于容易訓(xùn)練,且計(jì)算量較小。

表1 不同方法檢測結(jié)果比較
本文提出了一種基于IndRNN的跌倒檢測算法,通過構(gòu)建雙向、多層和殘差結(jié)構(gòu)的跌倒檢測模型,實(shí)現(xiàn)了從原始數(shù)據(jù)到跌倒判決的端到端處理。相比于基于特征值的閾值法,本文方法省去了人工提取特征值的過程。同時(shí),采用交叉熵作為損失函數(shù),通過最終閾值的設(shè)定,在控制誤報(bào)率一定水平下,使得檢測率最大,可以認(rèn)為是一種基于奈曼-皮爾遜準(zhǔn)則的檢測器。實(shí)驗(yàn)測試了不同網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)對模型性能的影響,結(jié)果顯示基于IndRNN的跌倒檢測方法更容易訓(xùn)練,檢測率和誤報(bào)率顯著優(yōu)于基于原始RNN的方法,與基于LSTM網(wǎng)絡(luò)的方法性能相當(dāng)。相比于前期工作,新方法降低了誤報(bào)率。目前,本文工作主要是離線驗(yàn)證方法的有效性,后續(xù)工作將本文方法嵌入到實(shí)際系統(tǒng)中,以驗(yàn)證方法的實(shí)際性能。
·名人名言·
科學(xué)家不創(chuàng)造任何東西,而是揭示自然界中現(xiàn)成的隱藏著的真實(shí),藝術(shù)家創(chuàng)造真實(shí)的類似物。
——岡察洛夫