王新文,謝林柏,彭 力
物聯網技術應用教育部工程研究中心(江南大學物聯網工程學院),江蘇無錫 214122
異常行為識別是視頻行為識別領域中的重要研究方向,對社會安全和發展具有重要意義。跌倒識別作為異常行為識別任務之一,尤其老人跌倒識別,是關愛弱勢群體的重要研究課題。根據聯合國2015年世界人口老齡化報告,在2015年至2030年間,年齡在60歲及以上的人數預計將增長55%[1]。每年全球估計有64.6萬人死于跌倒,有3 730萬人跌倒嚴重到需要醫療照顧[2]。隨著計算機視覺技術和傳感器技術的發展,國內外對老人跌倒檢測進行了研究,并取得了一定的進展[3-8]。根據跌倒檢測的方式,跌倒檢測主要分為兩類,基于可穿戴設備[4,7]和視覺圖像[5-6,8]的跌倒檢測方法。基于視覺圖像技術是對攝像設備采集的視頻或圖像數據進行跌倒識別處理。Mirmahboub等人[8]使用背景建模的方法提取運動目標輪廓,然后根據運動目標輪廓的特征進行行為分類。Kong等人[5]通過深度相機和Canny濾波器得到二值圖像的輪廓,然后根據輪廓圖像中的每個白色像素的切線向量角度判斷動作行為是否為跌倒。Min等人[6]使用快速區域卷積網絡[9]檢測人體形狀的縱橫比、質心和運動速度,通過這些特征隨時間的變化關系來判斷動作行為是否為跌倒。
隨著深度學習的快速發展,卷積神經網絡在圖像處理[10-11]和視頻分析[12-16]領域取得了很大的突破。與傳統方法相比,深度學習有較強的特征學習能力。在視頻行為識別領域中,行為特征提取主要采用兩種思路。第一種是采用二維卷積分別提取RGB和光流圖像的空間特征和時間特征[12]。第二種是直接使用三維卷積神經網絡提取圖像序列的時空特征,如三維卷積網絡(3-dimensional convolutional networks,C3D)[13]、三維殘差網絡(3D residual networks,3DResnet)[15]、偽三維殘差(pseudo-3D residual networks,P3D)[14]等。Tran等人[13]把二維卷積拓展到三維提取時空特征,該方法將時間和空間信息在一個卷積網絡結構內完成,速度較快。為改善深層結構帶來的梯度消失問題,He等人[11]提出二維殘差網絡(residual network,Resnet)結構,Hara等人[15]把二維Resnet擴展到三維得到3D-Resnet,提高了行為識別效果。Qiu等人[14]在殘差結構基礎上提出一種偽3D的P3D模型,用1×3×3的空間卷積和3×1×1的時間卷積代替3×3×3的時空卷積,降低了模型計算量。Tran等人[16]也提出了一種用空間卷積和時間卷積代替3×3×3時空卷積的2+1維殘差網絡((2+1)D residual network,R(2+1)D)。不同于P3D包含三種殘差模塊,R(2+1)D僅包含一種殘差模塊,并進行了超參數設計。
當監控視角、動作姿態和場景等復雜時,為了使深度學習方法提取更有效的視覺特征,需要通過增加卷積網絡的層數來增強模型表征能力。以上3D卷積網絡方法中,C3D網絡的參數較多,不適合進行深層的拓展;3D-Resnet是一種殘差結構,更適用于模型的深層拓展,但是模型訓練時仍然存在梯度消失問題,導致訓練損失下降慢、模型過擬合和測試識別率低。
針對以上問題,本文提出了一種雙重殘差網絡模型(double 3D residual network,D3D)用于跌倒識別。雙重殘差網絡模型是通過在殘差網絡中嵌套殘差網絡,使得卷積網絡層數加深時,誤差反向傳播的梯度能夠傳入淺層卷積,緩解訓練時梯度消失問題,并充分融合了淺層和深層視覺特征。本文將雙重殘差網絡在UCF101行為識別數據集和多相機跌倒數據集(multiple cameras fall dataset,MCFD)上進行了測試,驗證了提出的雙重殘差網絡對削弱梯度消失影響的有效性。最后,在MCFD和熱舒夫大學跌倒數據集(UR fall dataset,URFD)上進行了跌倒識別實驗,分別達到了較好的效果,有效地解決了在監控視角、人體姿態和場景等復雜的情況下跌倒識別率較低的問題。
卷積神經網絡是一種通過卷積和池化等操作從圖片中提取更為高級和抽象特征的深度學習模型。二維卷積只能夠有效地提取二維圖像的空間特征,而三維卷積可以提取到視頻圖像序列的時間和空間特征。是第i層的第j特征圖上(x,y,z)位置處的特征值,如式(1)所示:

其中,F為非線性函數,如Relu、Softmax。P、Q、R分別是3D卷積核的高、寬和時間維度大小,是卷積核點(p,q,r)與上一層第m個特征圖相連接的權重,b為卷積核的偏置。
跌倒和蹲下以及坐下等其他日常行為復雜多樣,并且在不同的攝像角度下呈現不同的姿態,如圖1[17]。傳統跌倒識別算法[5-6,8]需要對視頻進行大量的預處理,如背景減除和提取輪廓等,而基于3D卷積網絡的方法可以通過訓練學習模型來自動提取視頻中動作的時空特征,從而對跌倒、行走和蹲下等其他日常行為以及背景(沒有動作發生)進行分類識別。基于3D卷積網絡的行為識別框架如圖2所示。

Fig.1 Types of fall and daily action圖1 跌倒及日常動作類型

Fig.2 Fall recognition method based on 3D convolution neural network圖2 基于3D卷積神經網絡的跌倒識別方法
將幀長為L的視頻序列V輸入到3D卷積模型進行動作識別。由于3D卷積模型輸入維度固定,因此將視頻序列V劃分為幀長為l的視頻單元,步長為δ,則,T為視頻單元總數。把視頻單元ut輸入到3D卷積網絡模型輸出yt,經Softmax層得出n類行為的概率值

取所有測試單元的Softmax層輸出的均值作為最終的結果p。

則p中最大的概率值pmax所對應的類別標簽i即為最終的識別結果。
當人體行為姿態和場景復雜時,為了提取更深層次和更抽象的時空特征,需要增加卷積網絡的深度,但是三維卷積網絡深度過大時,會產生梯度消失的問題。梯度消失是在誤差反向傳播訓練模型時,越靠前的卷積層權重參數的梯度值越小,使得淺層卷積的權重參數無法進行調整,這會導致模型訓練收斂速度緩慢和模型表征能力變差。為了解決梯度消失問題,He等人[11]提出了二維殘差卷積網絡,有效地提高了圖片分類的精度。由于人體行為不僅包含圖像空間信息還包含時間信息,因此把二維殘差網絡擴展到三維殘差網絡得到3D-Resnet[15]。本文在進行行為識別實驗時發現,3D-Resnet網絡模型仍出現梯度消失、損失收斂速度緩慢和測試精度差的問題。因此為了進一步削弱網絡加深帶來的梯度消失影響,提高模型質量和跌倒識別精度,本文對3D-Resnet改進如下:
定義一個3D-Resnet單元為:

其中,x、y為殘差單元的輸入與輸出,F(x,W)是x經過兩個三維卷積輸出的特征圖。W1、W2為殘差單元卷積核的權重,σ為Relu激活函數。為了方便顯示,把卷積中的偏置舍棄。
圖3給出了兩個相連接的3D-Resnet單元結構,輸出為:

其中,F1(x,W)、F2(x,W)是分別經過卷積輸出的特征圖。W1、W2、W3、W4為殘差單元中卷積核的參數矩陣。3D-Resnet單元內部卷積層通道梯度為卷積層輸出對輸入的導數:


Fig.3 3D-Resnet unit and D3D unit圖3 3D-Resnet和D3D單元
把圖3中兩個3D-Resnet作為一個整體模塊。假設一個殘差網絡中共有M殘差模塊相連接,則訓練誤差反向傳播時,殘差網絡的第m(0 ≤m≤M)模塊層的梯度為:

其中,J為誤差函數,Y(m) 為第m模塊層的輸出和m+1層的輸入為第i模塊內部卷積層通道梯度。根據式(8)可知,3D-Resnet第m模塊層的梯度為其后面所有內部卷積層通道梯度之積。隨著網絡的加深會導致第m層的梯度較小或接近于0,造成梯度消失情形。
為了進一步削弱梯度消失的影響,令第m模塊層的梯度為:

式(9)中加入“1”的目的是為了在進行誤差反向傳播時,使得模型淺層卷積的梯度不接近于0,從而避免梯度消失,使得淺層卷積參數得到充分訓練。因此對于每一個殘差模塊,內部卷積層通道梯度為:

則y的網絡結構形式是在殘差結構中再嵌套兩個殘差模塊。同時針對跌倒視頻數據集小的特點并為了防止模型出現過擬合情形,本文通過減少殘差模塊內部的非線性函數數量,提高模型線性表征能力,形成了一種雙重殘差網絡(D3D)[15],如圖3所示。
對比反向傳播梯度公式(8)和(9),改進的殘差單元D3D內嵌套兩個3D-Resnet殘差單元可以削弱梯度消失影響,從而保證模型參數充分得到學習和訓練。同理為了拓展模型的深度,在D3D單元內嵌套多個3D-Resnet殘差單元,如圖4所示。

Fig.4 Improved structure of D3D unit圖4 改進結構的D3D單元模塊
考慮到跌倒數據集視頻數量較小,為了便于和3D-Resnet[15]對比,以3D-Resnet為基準模型,分別構建網絡層數為18層和34層的D3D模型。D3D的網絡層數、卷積核數量和大小與文獻[15]里的3D-Resnet相同,但兩者的內部結構連接方式不同。
構建的D3D網絡模型結構如下:
(1)輸入層(Input)第一個卷積層(conv1)和第一個下采樣層(Max Pool)與3D-Resnet相同。
(2)4個D3D殘差模塊,每個D3D殘差模塊包含不同數量的3D-Resnet單元模塊(Block)。其中每個3D-Resnet單元包含2個卷積層,大小為3×3×3,并去除了內部的非線性函數提高線性表征能力。每個3D卷積核的數量在4個模塊中分別為64、128、256、512,與3D-Resnet相同。D3D殘差模塊在模型中用于解決梯度消失問題。
(3)第二個下采樣層(Average Pool)采用3×3×3的均值池化操作進行特征融合。
(4)全連接層(FC)和Softmax,其輸出維度大小為動作種類的數量。Softmax分類器接在全連接層后面,輸出每個視頻所屬行為類別的概率。
圖5給出了D3D網絡模型結構,而對于18層的D3D網絡結構,每個D3D模塊包含2個3D-Resnet單元,即圖5中n1~n4都為2。同時對模型進行深層拓展,構建34層的D3D模型,網絡層數與3D-Resnet相同。對于34層的D3D模型結構,同樣包含1個卷積層、4個D3D模塊和1個全連接層,4個D3D模塊內部分別含有3、4、6、3個3D-Resnet單元。表1給出了18層和34層D3D模型的具體參數以及輸入輸出大小。為了充分地提取時序特征,所有的卷積采用的時間步長為1。為了降低維度并充分提取空間特征,conv1、conv5_1、conv5_3采用降采樣方法,空間步長為2,其余卷積的空間步長為1。由于網絡模型各層卷積核的數量和步長參數設置不同,導致基于跨連接方式的殘差結構輸入與輸出特征圖的維度不一致而不能直接相加,采用1×1×1卷積來調整維度。


Fig.5 Double residual network structure圖5 雙重殘差網絡結構

Table 1 Parameters of D3D structure表1 D3D結構參數
MCFD[17]是由在同一房間位于不同位置和角度的8個攝像頭拍攝而成,包含24個場景視頻,幀率120 frame/s。每個場景包含不同的動作,如跌倒、行走、做家務和下蹲等。根據實驗需求,將數據集中每個視頻剪切成單一動作的視頻片段,時間長度為1~3 s,其中跌倒視頻持續時間為1 s左右。表2給出了剪切好的視頻數量,包含8個類別,分別是背景、行走、跌倒、躺下、坐下或坐起來、下蹲或匍匐、做家務、假摔。實驗時將數據集隨機分成5個子集,進行5折交叉驗證。

Table 2 MCFD quantity distribution表2 MCFD數量分布
URFD[18]包含70個活動(30個跌倒和40個日常動作),視頻總數量為100個,幀率30 frame/s,其中跌倒視頻是由兩個位于不同位置和角度的攝像頭拍攝得來。將視頻剪切成單一行為的視頻片段,持續時間1~4 s。URFD數據集的行為分為4個類別,分別是跌倒、走、坐下或躺下以及其他日常活動(彎腰、下蹲和趴著等),對應的視頻數量如表3所示。

Table 3 URFD quantity distribution表3 URFD數量分布
UCF101[19]是從YouTube收集的具有101個類別的動作視頻數據集,一共包含13 320個視頻,每個時長2~15 s,幀率25 frame/s。該數據集大致可以分為5種動作:人與物互動、人與人的互動、肢體動作、演奏樂曲和體育運動。把UCF101數據集劃分為兩部分,訓練集和測試集,劃分比例為4∶1。此數據集在本文僅用于評估D3D模型緩解梯度消失問題的泛化能力。
為了便于模型訓練測試,并減少連續圖片幀之間的冗余信息,首先以一定的采樣頻率將每個視頻轉為圖片序列。根據經驗,UCF101視頻每秒間隔采樣5張圖片,URFD視頻每秒間隔采樣6張圖片。由于MCFD數據集的原始視頻幀率為120 frame/s,因此每個視頻轉為圖片序列時,每秒間隔采樣25張圖片。訓練測試時,采用數據增強技術[20],把視頻采樣的圖片按照中心剪切,將其裁剪成112×112作為網絡模型的輸入。模型訓練時,從訓練集的每個圖片序列中隨機選取連續的16幀圖片序列作為網絡模型的輸入,則卷積網絡模型的輸入大小是16×112×112。
采用隨機梯度下降算法對模型進行優化,動量參數為0.9。為了防止模型過擬合,全連接層在訓練時加入dropout,并設置dropout為0.5。學習速率設為0.000 1,批量大小為8,迭代次數(epoch)為50。采用呈正態分布的隨機數作為參數初始化,標準差為0.01。本文實驗的軟件和硬件環境為Tensorflow1.8、Ubuntu16.04和GeForce GPU1070Ti。
測試階段如圖2所示,從每個測試視頻中的圖片序列中重疊采樣連續16幀的圖片作為一個測試單元,以14幀為步長(即相鄰采樣重疊幀數為2,經驗值)。將每個視頻的所有測試單元輸入到網絡模型中,計算所有Softmax輸出的平均值作為該視頻最終的測試結果。每個視頻對應一個動作類別標簽,如果測試得到的視頻分類結果和標簽相同,則該視頻被判斷為正確識別。
通常跌倒識別算法使用以下指標來進行評估:
(1)準確率(accuracy,Ac):跌倒與其他日常行為被正確分類的比例。

(2)靈敏度(sensitivity,Se):跌倒被正確識別出的比例。

(3)特異性(specificity,Sp):日常行為沒有被識別為跌倒的比例。

其中,TP(true positive)代表被正確識別為跌倒的數量;FP(false positive)代表其他日常行為被錯誤地識別為跌倒的數量;TN(true negative)代表其他日常行為沒有被識別為跌倒的數量;FN(false negative)代表跌倒被錯誤地識別為其他行為的數量。
為了驗證本文提出的D3D殘差模型對緩解梯度消失問題的效果,本文采用D3D和3D-Resnet的18層和34層網絡在數據集UCF101和MCFD進行訓練。不同節點梯度值變化和模型損失函數值變化,如圖6、圖7所示。
由于篇幅原因,僅給出了D3D和3D-Resnet模型在卷積淺層conv2_1和深層conv5_1的梯度均值,如圖6所示。從圖6中可以發現,3D-Resnet的conv2_1處的梯度較小接近于0,而D3D模型增加了conv2_1的梯度,并且conv2_1和conv5_1的梯度值差距相比3D-Resnet較小,驗證了公式(8)和(9)的理論分析,表明D3D緩解了梯度消失問題。從圖7中可以看出,與相同層數的3D-Resnet相比,D3D結構模型的損失函數收斂速度較快,表明D3D網絡模型削弱了誤差反向傳播時梯度消失問題,使得模型參數得到充分訓練而且加快了模型損失收斂速度。
3.5.1 跌倒識別實驗結果及分析
將MCFD數據集隨機分成5個子集,視頻數量分別是169、169、169、169、168。把其中4個子集用于訓練,剩余1個作為測試集,進行5折交叉驗證(Fold1、Fold2、Fold3、Fold4、Fold5)。

Fig.6 Node gradient value curve圖6 節點梯度值變化曲線

Fig.7 Iterative training curve of loss function圖7 損失函數迭代訓練曲線
為了充分顯示D3D和3D-Resnet網絡模型對跌倒識別的效果,表4、表5列出了18層的D3D和3DResnet進行5折交叉驗證的結果。從表4、表5特異性、靈敏度和準確率的平均數據可以看出,D3D模型對跌倒識別的效果均超過了3D-Resnet,分別提升了0.101、0.167、0.117。說明改進后的殘差網絡增強了模型質量,降低了跌倒的誤檢率和漏檢率,提高了跌倒的識別率。MCFD數據集的動作種類較多且較為復雜,本文改進的殘差網絡方法在MCFD數據集上得到了較大的提升,說明D3D模型解決了由于監控視角、人體姿態和場景等復雜情況下導致模型識別性能較低的問題。

Table 4 Cross-validation results of D3D-18 on MCFD dataset表4 D3D-18在MCFD數據集上的交叉驗證結果

Table 5 Cross-validation results of 3D-Resnet-18 on MCFD dataset表5 3D-Resnet-18在MCFD數據集上的交叉驗證結果
為了驗證D3D模型對跌倒識別的泛化能力,本文在URFD跌倒數據集上進行5折交叉驗證。將數據集隨機分成5個子集,視頻數量分別是30、30、32、29、32。把其中4個子集用于訓練,剩余1個作為測試集。
從表6和表7的數據對比分析看出,相對于3DResnet模型,D3D模型在跌倒數據集上的特異性、靈敏度和準確率的均值都有較大的提升,由此說明本文提出的D3D模型在跌倒識別中具有良好的泛化性能。
3.5.2 與其他3D卷積算法對比
為了更為客觀地顯示本文改進的3D殘差卷積網絡模型的性能和在跌倒識別上的有效性,表8列出了幾種3D卷積網絡算法在數據集MCFD和URFD上的測試結果以及Tensorflow模型存儲大小。

Table 6 Cross-validation results of D3D-18 on URFD dataset表6 D3D-18在URFD數據集上的交叉驗證結果

Table 7 Cross-validation results of 3D-Resnet-18 on URFD dataset表7 3D-Resnet-18在URFD數據集上的交叉驗證結果
對比兩個數據集的識別結果發現,18層和34層D3D模型的評估指標特異性、靈敏度和準確率結果均比3D-Resnet優越,說明改進的殘差網絡的性能得到了提升。同時發現如下問題:D3D和3D-Resnet的18層與34層在兩個數據集上的識別效果不一致,34層結構在數據集MCFD上的指標Se、Ac效果較18層網絡結構差。這是因為數據集MCFD的行為種類較多且復雜,而且模型卷積層數較深,導致深層模型的卷積參數不能較好地學習,造成過擬合,但是從3DResnet和D3D的34層相對于18層跌倒評估指標Se、Ac的增量(分別為-0.168、-0.014和-0.065、-0.007)可以看出,D3D-34的增量較大。由此可以說明D3D相對于3D-Resnet性能得到了提升,進一步降低了模型過擬合的影響,提高了跌倒識別效果。
與其他3D卷積算法C3D、P3D和R(2+1)D進行對比,本文提出的D3D網絡模型在兩個數據集上的識別效果較好。P3D和R(2+1)D是簡化后的63和35層殘差結構模型,兩者都采用1×3×3的空間卷積和3×1×1的時間卷積代替3×3×3卷積,其優點是模型參數少和存儲較小。與同是殘差結構的P3D和R(2+1)D相比,改進后的雙重殘差模型D3D在兩個跌倒數據集上的識別效果較好。這是因為本文在殘差網絡中嵌套殘差網絡,一方面緩解了梯度消失問題,另一方面進一步融合了淺層和深層的特征。C3D模型和本文提出的D3D模型跌倒識別效果接近,這是因為C3D卷積網絡由8個卷積層和2個全連接層以及池化層構成,網絡層數較低,因此受梯度消失的影響較小,使得模型參數得到較好訓練。與殘差網絡模型相比,C3D模型參數較多,模型存儲量較大。

Table 8 Performance comparison of several convolution models on MCFD and URFD表8 幾種卷積模型在MCFD、URFD上的性能比較
綜合以上分析,本文提出的雙重殘差網絡D3D改善了相同層數的3D-Resnet模型出現的過擬合導致跌倒識別率低的問題,同時在監控視角、人體姿態和場景等復雜的情況下D3D殘差網絡取得了較好的識別效果,提高了3D卷積網絡在跌倒識別中的精度。
針對直接通過增加卷積網絡層數來提取有效的視覺特征容易出現梯度消失和過擬合,從而導致行為識別率較低的問題,本文提出了一種基于雙重殘差網絡的跌倒異常行為識別方法。通過在殘差網絡中嵌套殘差網絡,充分融合了淺層和深層視覺特征,從而能夠進一步降低卷積模型訓練時梯度消失和模型過擬合的影響。在UCF101和MCFD行為數據集上進行了驗證,D3D模型有效地緩解了相同卷積層數的殘差卷積網絡模型的梯度消失問題。最后,將D3D網絡模型在MCFD和URFD兩個跌倒數據集上進行驗證,性能優于3D-Resnet、C3D、P3D和R(2+1)D卷積算法,表明了D3D算法對跌倒識別的有效性和可行性。
本文通過分析和改進跨連接方式的殘差網絡來緩解模型梯度消失問題,從而提高了異常行為識別的準確率,但是仍然存在不足。因此下一步研究方向,將結合殘差網絡并通過加寬卷積網絡融合不同多尺度的視頻特征進行行為識別分析。