魏嘉雪,高冠東,滕桂法,3+
(1.河北農業大學 信息科學與技術學院,河北 保定 071000;2.中央司法警官學院 信息管理系,河北 保定 071000;3.河北農業大學 河北省農業大數據重點實驗室,河北 保定 071000)
為進一步提高跌倒檢測識別準確率、減少誤報率[1,2],解決RNN訓練耗時長的問題,本文提出一種基于改進時間卷積網絡(temporal convolutional network,TCN)的跌倒檢測算法,為避免修正線性單元(rectified linear unit,ReLU)函數引起神經元“壞死”的情況,將ReLU改進為Leaky ReLU函數;在保證參數量更少的情況下使用全局平均池化層代替全卷積層;為了更好擬合模型,在殘差結構中添加一層卷積操作。為了驗證算法魯棒性,本文利用智能手機中內嵌的加速度傳感器和陀螺儀傳感器獲取數據集,與公用數據集MobiAct2.0進行融合作為實驗的訓練數據。實驗數據共2359例樣本,包括5類日常行為和4類跌倒行為。
目前,根據使用的跌倒檢測設備的不同,相關研究基本分為3大類:基于場景傳感器[2]的跌倒檢測研究、基于機器視覺[3-5]的跌倒檢測研究和基于可穿戴設備[6,7]的跌倒檢測研究,以減輕老年人因跌倒沒有得到及時救治帶來的傷害。
基于場景傳感器的跌倒檢測將傳感器放置在室內固定位置以發現區域內跌倒情況。如,Diego等[8]提出基于支持向量機(support vector machine,SVM)與模板匹配結合的跌倒檢測算法。該方法通過地板的聲傳感器捕獲信號,不會侵犯用戶隱私,但易受環境嘈雜的影響引起錯誤報警,檢測范圍有限,不適用于對老年人活動范圍的全面檢測;基于機器視覺的跌倒檢測通過視頻或圖像形式獲取數據進行行為判斷,金彥亮等[9]融合多幀運動歷史圖,使用雙流卷積網絡進行識別,該算法可達到較高準確率,其檢測范圍具有一定的局限性,同時存在視頻圖像易受遮擋、侵犯受試者隱私的問題。
基于可穿戴設備的跌倒檢測是將傳感器佩戴在人體某個部位,通過獲取當前位置的傳感器數值變化判斷人體是否發生跌倒行為。任磊等[10]提出一種移動設備佩戴位置自適應的方法,通過對旋轉模式分量和姿態角融合提取特征,建立了基于時序分析的跌倒檢測的方法,其實驗準確率達到92%以上。任曉奎等[11]通過將支持向量機與粒子群算法相融合以解決可穿戴跌倒檢測問題,其準確率達到89%。劉曉光等[12]提出閾值和極端隨機樹結合的算法,融合姿態角傳感器和壓力傳感器數據,設計了實時跌倒檢測算法。以上研究者利用機器學習算法進行跌倒檢測分析,通過分析人工提取的特征值判斷行為類別,為了減少因提取特征不當造成的檢測誤差,研究者需要花費一定的時間學習先驗知識。隨著深度學習的發展,遞歸神經網絡(recurrent neural network,RNN)在處理時間序列領域捕獲時間特征的方面表現出天然優勢,一些研究者使用卷積神經網絡和RNN對原始數據進行分析,王晶晶等[13]針對基于提取特征的跌倒檢測算法誤報率較高的問題提出了獨立循環神經網絡(RNN)結構,可以有效提高準確率。L.Y. Liu等[14]通過設計卷積神經網絡(convolutional neural networks,CNN)與長短期記憶網絡(long short-term memory,LSTM)結合的網絡結構對數據進行分析,利用全連接層對輸入數據進行分類。由于RNN在處理長時序列數據時,一次輸入只能輸入單個信號的問題,導致訓練時間過長,且易出現梯度消失的情況,遞歸神經網絡在跌倒檢測中表現效果不盡人意。
建立跌倒檢測模型的關鍵點在于特征提取是否恰當、構建的網絡模型是否合適。傳統的卷積網絡模型在處理圖像問題上得到廣泛認可,但由于其卷積核大小的限制,在處理長時序列數據上通常需要更深層次的網絡才能表現出差強人意的效果。本文采用智能手機內置三軸角速度傳感器和三軸加速度傳感器作為數據源,融合公用測試數據集MobiAct2.0,通過數據格式變換輸入TCN網絡模型中,利用模型的空洞卷積操作,通過設置不同空洞率來增大卷積核的感受野,使其可以“看到”更遠的歷史數據;通過殘差結構構建深層次的網絡,同時利用特征復用這一特點,對跌倒檢測做出更準確的判斷,改進的TCN跌倒檢測算法總體流程如圖1所示。

圖1 改進的TCN跌倒檢測算法總體流程
將跌倒問題簡化為二分類問題,從日常活動中識別出跌倒和非跌倒行為。在每個樣本中包含x軸加速度Ax、y軸加速度Ay、z軸加速度Az、x軸角速度Gx、y軸角速度Gy和z軸角速度Gz,那么假設長度為t的樣本輸入數據格式如式(1)所示
(1)
式中:Ax、Ay、Az、Gx、Gy、Gz為含有時間特性的時間序列向量。模擬實驗結果表明,跌倒的發生由失衡到碰撞時間不超過3 s,因此將截取3 s內傳感器獲取的數據長度作為實驗數據長度t。
在跌倒檢測問題中,獲取到3 s內傳感器的值形成一段時間的連續信號,具有較長的時間性,傳統CNN為了處理這種長時序列只能不斷加深網絡層數,以增加感受野,盡可能比較全面的提取特征,但極易出現梯度爆炸和梯度彌散的問題,針對這種情況,B.S等[15]提出的TCN是一種在卷積神經網絡的基礎上通過改進卷積操作和卷積核大小可以處理長時序列數據的網絡結構。該網絡利用一維全卷積結構和padding操作實現了網絡輸入長度與輸出長度相同的特點;采用因果卷積操作,實現了序列當前輸出只與過去有關而與未來無關的目的,使卷積網絡也具有“記憶”的特性。
模型結構主要由3部分組成:
輸入層:在跌倒問題中,截取t長度的時間數據作為輸入序列,假設輸入形式為X=(x1,x2,…,xt), 其中在某一時刻輸入數據的為矩陣X中的每一行,即Xt=(AxtAytAztGxtGytGzt)。 由于數據集采樣頻率使用SENSOR_DELAY_FASTEST參數以500 HZ的頻率采集數據,為了保證獲取完整行為數據并盡可能減少數據量,實驗選取傳感器3 s內的數據進行了降采樣操作,選取長度為200的樣本作為網絡輸入數據。
隱含層:為了不通過堆疊網絡層數來擴大感受野,TCN網絡引入了為含有擴張因子的擴張卷積,允許卷積操作存在間隔采樣,采樣率取決于擴張因子d。采用大小為m的卷積核F=(f0,f1,…fm-1), 對于序列元素x在t時刻的操作如式(2)所示
(2)
式中:t-d·i表示過去的方向。隨著網絡層數的加深,擴張因子呈指數倍增加,因此TCN可以通過較少層的卷積獲得較大感受野,計算感受野大小F如式(3)所示
F=(m-1)*d+1
(3)
其次在隱含層建立了殘差連接結構,將淺層特征與深層特征結合實現特征復用的效果,將跌倒數據在經過網絡變換前的數據和網絡變換后的數據進行結合,以降低模型退化情況出現的可能。模型以兩層擴張卷積、ReLU函數、權重歸一化操作和dropout層組成殘差結構,殘差結構如圖2所示。數學表示如式(4)所示

圖2 殘差結構
oi=f(h(xi)+F(xi))
(4)
式中:xi和oi分別是第i個單位的輸入和輸出,h(xi) 是xi的恒等映射,屬于淺層特征,F(xi) 是經過網絡變換的深層特征,f是激活函數。
輸出層:經過網絡變換提取到跌倒檢測數據的隱藏特征后,通過將特征輸入分類器進行分類。在跌倒檢測問題中,將非跌倒行為和跌倒行為分別以0、1標簽標注,通過全連接層輸出網絡判別結果。
經過實驗發現經典TCN應用在跌倒問題中時,存在以下3個問題:①異常值使網絡神經元“壞死”,導致網絡參數不正常更新。(“壞死”是指ReLU在負數區域被kill);②全連接層高度提純特征的操作并沒有提高模型性能,并且給網絡增加了大量參數;③特征提取不當導致模型處于欠擬合與過擬合之間。
針對老人的跌倒檢測問題,有以下兩個側重點:準確率和誤報率。提高準確率,當老人跌倒后可以及時報警,提醒醫護人員和家人及時救助,增加老人及其家人對跌倒設備的信任,而誤報率偏高會存在老人反應過慢,未來得及將報警信息取消,導致家人和醫護人員的過度緊張的不良體驗,從而減少對跌倒設備的信任,因此擬合出成熟的跌倒檢測模型,提高準確率,降低誤報率是模型訓練的重點。
時間卷積網絡與其它卷積神經網絡一樣,有很強建模能力,但也存在擬合程度不當、參數量大的問題。本文從模型訓練階段對網絡結構進行優化。首先針對跌倒檢測并非稀疏矩陣的特點,使用強制稀疏的激活函數會造成損失,對比了非飽和激活函數的優缺點,選擇收斂快,損失低的函數作為殘差結構內部的非線性變換,其次跌倒數據在前期網絡提取特征時,已獲取到足夠特征,全連接層大量的參數會造成模型“臃腫”,且易產生過擬合情況,因此將全局平均池化層代替全連接層做分類,減少了大量參數,降低了模型復雜度,降低了過擬合現象出現的概率。最后為了在不增加網絡參數的情況下更好擬合網絡模型,調整殘差結構內部卷積層和激活函數的順序,并且適當增加卷積層數以更好擬合模型。
2.2.1 基于激活函數的改進
經典TCN模型中使用ReLU激活函數作為數據變換的依據,數據不免存在某些異常值,可使網絡神經元“壞死”,導致網絡參數不正常更新,同時使跌倒數據中大量負數被強制為0,極大影響了有效跌倒特征的提取。ReLU函數圖像如圖3(a)所示,數學表達式如式(5)

圖3 激活函數
(5)
為此,本文提出了使用參數化修正線性單元PReLU(parametric rectified linear unit)和Leaky ReLU函數代替ReLU函數。PReLU函數和Leaky ReLU函數都是在負數區域帶有參數的激活函數,不會將所有負數強制為0,可以有效避免神經元“壞死”現象。PReLU和Leaky ReLU的函數圖像如圖3(b)和圖3(c)所示,表達式如式(6)、式(7)所示
(6)
(7)
二者的區別在于所帶參數是否可學習。其中λ是可學習的參數,a是固定值。雖然每個PReLU只需要學習少量參數,但是改進后的每個殘差結構中包含3個激活函數,若將激活函數改進為PReLU,經過多層的網絡變換,則需要學習大量參數。因此本文選擇Leaky ReLU作為殘差結構中激活函數。
2.2.2 基于全連接層的改進
經典TCN模型中使用全連接層進行高度提純特征,傳入softmax分類器進行分類。然而取消全連接層后并沒有影響模型性能,甚至在加上該層后導致模型參數量大大增加,產生模型過擬合現象,在測試集效果不佳。為此,本文使用全局平均池化層獲取全局信息并進行壓縮,同時減少了全連接層的參數,大大降低過擬合現象的可能。全局平均池化層(global average pooling,GAP)在2013年被提出和應用。GAP根據分類任務的類別數量控制輸出多少特征圖,通過對每個特征圖的數值求平均作為某個類別的置信度,再使用softmax回歸分類。
本文將在卷積層中進行改進以獲取足夠信息,結合GAP,對數據信息進行提取、轉化和壓縮,通過調整數據格式達到期望輸出的維度,通過全局平均池化層完成對跌倒行為的分類。改進后TCN整體網絡框架如圖4所示。

圖4 網絡整體框架
2.2.3 基于殘差結構的改進
針對模型處于欠擬合和過擬合之間搖擺不定的狀況,本文提出對殘差結構的改進,其中考慮到測試設備為可穿戴式智能手機,因此應適當減少模型規模。具體改進為:①在不增加參數的前提下,在殘差塊中設計兩次“第二”卷積層。②將殘差塊中“后激活”狀態改為“預激活”狀態。
一般地,TCN網絡有結構簡單的特點,需要深層網絡才能更好擬合模型。TCN使用殘差結構將淺層特征和深層特征結合使用,在解決網絡退化問題的同時更好的擬合模型。由于獲取跌倒檢測數據時具有一定的傷害性,作為模型訓練的數據量有一定的局限性,使用復雜的網絡模型和層數過深的網絡結構極易產生過擬合情況,即模型泛化能力弱的現象。
TCN網絡以兩層卷積作為殘差塊,那么每增加一層殘差結構至少需要增加兩層網絡變換。當需要使用奇數層卷積可以獲得更好模型效果時,選擇使用兩層殘差結構的網絡只有欠擬合和過擬合兩種情況。因此,本文經過實驗分析,三層卷積在跌倒檢測模型中有更好的效果。
此外,本文在殘差結構中采用“預激活”代替“后激活”。2016年提出了將“后激活”(先經過卷積層提取特征,再經過激活函數的操作被稱為“后激活”)優化為“預激活”(先設計激活函數,再經過卷積層被稱為“預激活”),使用卷積層提取非線性變換后的行為數據,再通過恒等映射將淺層特征貫穿網絡,提高了網絡的泛化能力。
殘差網絡改進結構如圖5所示。其中數據經過兩條分支同時進行,一條經過①操作實現恒等映射,另一條經過兩層卷積操作(操作②)后,重復進行“第二卷積層”(操作③),將兩條輸出(操作①與操作④的結果)激活作為殘差結構的輸出。使用同樣的參數量,增加了一層網絡變換,提高了網絡擬合能力。

圖5 殘差結構改進
為了驗證算法有效性,實驗將從3個方面進行論證。首先將改進后的算法與已有算法進行對比,驗證改進后算法在跌倒領域中識別的有效性,其次通過對比不同激活函數的效果,驗證選擇Leaky ReLU函數的正確性,最后通過對比改進前模型與改進后模型的效果驗證算法改進的有效性,通過對比融合數據集與公開數據集的效果驗證數據的科學性。
本文的數據集采用公共數據集MobiAct2.0和自制數據集結合使用。MobiAct2.0由66名志愿者佩戴智能手機采集了基于三軸加速度傳感器和陀螺儀的4種跌倒行為和11種日常行為數據,共包含3200條事件,本文選擇4種跌倒事件(向后跌倒BSC、向前跌倒膝蓋著地FKL、向前跌倒手扶地FOL、站立跌倒SDL)和5種日常事件(行走WAL、慢跑JOG、坐下SIT、上樓梯STU、下樓梯STN),以4種跌倒行為為例,從平衡狀態到跌倒碰撞再到平躺狀態的信號波形圖如圖6所示。

圖6 4種跌倒行為波形圖
自制數據集由智能手機采集加速度傳感器和陀螺儀數據組成,為了與公共數據集相匹配,自制數據集的采樣頻率與公共數據一致。由于跌倒行為存在一定程度的傷害性,本文選擇5名年輕志愿者代替老人參與數據采集,在采集過程中智能手機放置于志愿者褲子口袋。為驗證跌倒檢測算法的有效性,數據來源包含6部分,分別為行走、慢跑、坐下、上樓梯、下樓梯和跌倒。實驗共采集600個樣本。融合數據集具體信息見表1。

表1 融合數據集信息
實驗中首先對單個樣本中大量采樣點進行降采樣,得到200個采樣點,其次進行標準化、歸一化操作。隨即輸入TCN網絡端,即一維數據的輸入格式為1×200×6。通過實驗結果得出,當卷積核大小為6,4層殘差時實驗效果最好。
在網絡訓練過程中,使用Adam優化器進行優化,使用交叉熵損失函數進行評估。網絡設置了樣本批量大小設置為128,以學習率為0.005進行訓練。
目前在深度學習領域中解決時序問題的模型基本以LSTM模型為基線模型,因此為了驗證本文算法在跌倒檢測領域的有效性,本實驗使用改進的殘差結構、Leaky ReLU激活函數和全局平均池化的優化操作,在相同數據集的基礎上對比了其它使用LSTM基線模型的文獻的算法。模型對比實驗數據見表2。其中LSTM算法以MobiAct數據作為訓練數據,以自制數據集作為測試數據,選取腰部和腕部融合的組合時達到最高準確率95.8%。CNN-LSTM算法以MobiAct數據作為訓練數據和測試數據,最終達到96.75%準確率。本文算法通過融合數據集可達99.43%精度。

表2 模型對比
為了驗證不同激活函數對TCN模型的影響,實驗使用最原始的模型參數,控制只有一個激活函數一個變量進行實驗。為了選擇合適的激活函數在網絡中做線性變換,本文選擇非飽和函數ReLU、PReLU和Leaky ReLU進行對比。使用不同激活函數對損失的影響如圖7所示。

圖7 不同激活函數對損失的影響
由圖7可知,ReLU收斂最慢,Leaky ReLU其次,PReLU效果最好,收斂最快,但三者都相差不多。經過實驗證明,使用ReLU和Leaky ReLU函數時,網絡可學習參數為1296個,但使用PReLU,可學習參數高達15 696個。因此,本文選擇使用Leaky ReLU激活函數改進網絡。
為了驗證改進后算法的有效性,本文以TCN網絡模型為基礎,以改進殘差結構、激活函數和全局平均池化操作為優化操作,以此組合做算法性能比較。以準確率Acc、精準率Pre、召回率Recall、F1值和ROC圖像作為算法好壞的評估標準。方案如下:
(1)原始TCN算法;
(2)改進殘差結構的TCN算法;
(3)改進殘差結構和激活函數的TCN算法;
(4)改進殘差結構、激活函數和全局平均池化的TCN算法。
經過實驗,4種方案對比數據見表3。通過對比表中數據可以得出結論:方案1直接使用TCN算法性能最低;方案2和方案3在TCN基礎上加入殘差結構和激活函數的優化,算法準確率分別提高了9.65%和8.8%;方案4在此基礎上又加入了全局平均池化層,準確率達到了99.43%,與方案1對比提升了10.51%。通過數據對比發現,精準率和F1指標也有所提升。通過改進前模型與改進后模型性能對比,可以發現經過改進,模型ROC下面積AUC提高了0.0962,ROC對比如圖8所示,改進后模型損失遠小于改進前模型訓練損失,損失對比如圖9所示。

表3 4種方案對比

圖8 改進前后模型ROC對比

圖9 改進前后損失對比
為了驗證融合數據集的正確性,將公開數據集和融合數據集分別在改進后模型上訓練,實驗結果見表4。由表4數據可知,公開數據集和融合數據集在改進模型上的效果相似,可以驗證融合后數據集的正確性。訓練損失圖像如圖10所示。

表4 數據集對比

圖10 不同數據集對損失函數的影響
為準確檢測老人跌倒狀況,本文提出了基于改進TCN網絡的跌倒檢測算法。本研究對該網絡進行了3處改進:基于激活函數的改進、基于全連接層的改進和基于殘差結構的改進。該算法通過將淺層特征與深層特征融合,達到特征復用的效果。為了驗證模型的泛化效果,本文將自制數據集與公開數據集融合作為模型訓練的數據。對比了改進前后的模型效果,實驗結果分析可知所提算法可以將人體日常行為中行走、慢跑、坐下、上下樓梯與跌倒行為準確區分,基于改進TCN模型檢測的準確率可達99.43%,檢測精確率和召回率均達到0.99。