周 云,陳淑榮
(上海海事大學信息工程學院,上海201306)
行為識別是對視頻圖像中的人體行為動作進行特征提取、分析,并自動識別出其類別,在日常生活中有著廣泛應用。如智能監(jiān)控中行人的異常行為檢測、人機交互、運動分析等。
傳統(tǒng)的行為識別方法通常由人工提取特征,再進行特征編碼和分類器訓練,最后完成行為識別,耗時長且泛化性差。隨著深度學習的發(fā)展,卷積神經(jīng)網(wǎng)絡(Convolutional Neural Nets,CNN)針對人體運動行為提取的特征更加多樣,魯棒性更好,在行為識別中得到了廣泛應用。Ji等[2]通過引入時間信息結合空間維度構成三維CNN,從空間和時間維度提取特征,進行3D 卷積,以捕捉多個連續(xù)幀中的運動信息,最后通過支持向量機(Support Vector Machine,SVM)進行行為分類得到最終識別結果;該方法速度較快,但精度低。Simonyan 等[3]提出了雙流卷積神經(jīng)網(wǎng)絡(Two-Stream Convolutional neural Network,Two-Stream ConvNet),利用視頻的RGB(Red-Green-Blue)圖像和密集光流圖像分別訓練CNN模型,并將兩個分支網(wǎng)絡的Softmax 輸出進行融合,得到的最終行為識別精度有所提高。Wang 等[4]提出了更深的 Two-Stream ConvNet 結構,解決了較小數(shù)據(jù)集過度訓練的問題,改善了識別精度。
為進一步提高人體行為識別的準確率,增強網(wǎng)絡的特征表達能力,本文結合殘差網(wǎng)絡和非局部神經(jīng)網(wǎng)絡的思想,提出了一種基于雙流非局部殘差網(wǎng)絡(Non-local Residual Network,NL-ResNet)的行為識別模型。首先對視頻數(shù)據(jù)集進行預處理,利用角落裁剪和多尺度裁剪方法進行數(shù)據(jù)增強和歸一化,避免模型訓練中出現(xiàn)過擬合現(xiàn)象;然后通過兩組NL-ResNet分別提取視頻的空間和時間特征,該網(wǎng)絡能充分利用所有殘差塊的局部特征,并傳遞到非局部特征提取模塊(Non-Local block,NL block)[6]中獲取局部特征的全局信息,以增強整張?zhí)卣鲌D的語義信息,彌補特征圖逐層傳遞時的信息丟失;同時網(wǎng)絡中采用A-softmax 損失函數(shù)[7]以角度約束類別分類,提高行為動作的分類精度;最后將兩路輸出加權融合得到最終的識別結果。

圖1 雙流NL-ResNet模型結構Fig. 1 Structure of the two-stream NL-ResNet model
傳統(tǒng)雙流CNN 包含卷積、池化、全連接層,利用卷積核僅能提取樣本的局部特征,易導致人體行為的部分信息丟失而影響最終的識別效果。本文以殘差網(wǎng)絡為基礎網(wǎng)絡,通過引入NL block,更好地融合局部特征全局信息,模型結構如圖1所示,主要包括數(shù)據(jù)預處理、NL-ResNet 特征提取、A-softmax loss 三部分。首先對待輸入視頻進行預處理,提取RGB 幀和密集光流圖進行數(shù)據(jù)增強及歸一化,分別輸入到NL-ResNet中進行級聯(lián)的卷積、池化、非局部計算以提取視頻的表觀信息和運動信息;同時,在兩路分類層采用A-softmax 損失函數(shù),使相似動作類間距離更大、類內距離更小,提升模型分類效果;最后將兩路的A-softmax 分類結果加權融合,得出行為識別的最終結果。
為避免深度雙流卷積網(wǎng)絡模型訓練出現(xiàn)過度擬合,實驗中采用了角落裁剪和多尺度裁剪的預處理方法,對RGB 圖像和光流圖像進行數(shù)據(jù)集擴充和增強處理。首先將輸入圖像大小固定為256 × 340,從{256,224,192,168}中隨機選取裁剪寬度和高度,裁剪圖像的4個角和1個中心如圖2所示的a、b、c、d 和e,實現(xiàn)對數(shù)據(jù)集的擴充,以及對輸入圖像的多尺度和差異性增強,并將裁剪后的圖像歸一化為224 × 224,作為雙路網(wǎng)絡的輸入,從而解決了因隨機裁剪導致的裁剪區(qū)域中間化而使訓練損失下降很快,進而產(chǎn)生過度擬合的問題。

圖2 裁剪效果示意圖Fig. 2 Schematic diagram of cropping effect
傳統(tǒng)的雙流卷積神經(jīng)網(wǎng)絡常采用CNN 分別提取時間域運動信息和空間域表觀信息,網(wǎng)絡越深提取的特征越抽象,語義信息越豐富,但網(wǎng)絡深度達到一定程度時會導致梯度爆炸或梯度消失。此外,傳統(tǒng)CNN 網(wǎng)絡主要是靠級聯(lián)卷積層提取局部特征,在全連接層整合得到全局信息,因此,一些局部重要信息會在逐層提取中損失,且給全連接層帶來大量參數(shù)。本文采用圖1中的NL-ResNet對行為特征進行提取,通過引入批量歸一化(Batch Normalization,BN)和NL block 解決了梯度爆炸問題,彌補了特征信息的丟失,能夠較好地提取視頻的表觀信息和運動信息,提升識別效果。具體原理如圖3 所示,對一組RGB 和光流輸入圖像,首先分別用卷積核為7× 7、步長為2的Conv1卷積層進行淺層特征提取,為防止深度網(wǎng)絡梯度爆炸,在每一個卷積層后都加入BN 層進行批量歸一化,使網(wǎng)絡優(yōu)化不受初始化、學習率的影響,加快網(wǎng)絡訓練的收斂。之后經(jīng)最大池化處理后,特征圖大小減半,并產(chǎn)生64 維特征圖,接著采用兩組并聯(lián)的NL-Res2、NL-Res3、NL-Res4 和NL-Res5進行非局部運算、卷積操作和BN 處理,提取圖像的全局信息和局部特征,經(jīng)平均池化在全連接層將行為特征整合為具有高層語義的特征向量。

圖3 NL-ResNet結構Fig. 3 Structure of NL-ResNet
BN 層的本質是對網(wǎng)絡的每一層輸出作歸一化處理(歸一化至:均值為0,方差為1),然后再進入網(wǎng)絡的下一層。歸一化公式如式(1)、(2)所示。
假設一層有d維輸入:

每一維的歸一化為:

其中E[x(k)]和Var[x(k)]分別指各神經(jīng)元輸入值的平均值和方差。
若僅僅使用上面的歸一化公式,對網(wǎng)絡某一層A 的輸出數(shù)據(jù)作歸一化,然后送入網(wǎng)絡下一層B,這樣會影響本層網(wǎng)絡A 所學習到的特征。比如網(wǎng)絡中間某一層學習到的特征數(shù)據(jù)本身就分布在S 型激活函數(shù)的兩側,若強制將它作歸一化處理,把數(shù)據(jù)變換成分布于S 函數(shù)的中間部分,如此就相當于這一層網(wǎng)絡所學習到的特征分布被破壞了。為了恢復出原始的某一層所學到的特征,對x^(k)進行變換重構,引入可學習重構參數(shù)γ和β,如式(3)所示:

網(wǎng)絡訓練時每一個神經(jīng)元x(k)都會產(chǎn)生一對參數(shù)γ 和β,通過反向傳播不斷更新,當網(wǎng)絡便可以學習恢復出原始網(wǎng)絡所要學習的特征分布。BN層的最終輸出為y(k)。
為了更好地融合局部特征的全局信息,NL block 通過對經(jīng)過卷積、BN 處理、最大池化后得到的特征圖進行非局部計算,獲得特征圖全部像素點之間的相關性信息,進而提取行為特征的全局信息,之后再輸入到下一級殘差塊中繼續(xù)提取局部特征。NL block對特征點的信息補償,使得NL-ResNet提取的行為特征更豐富。以圖3的NL-Res2中的NL block為例,處理過程如圖4所示。

圖4 NL-Res2中的NL block處理過程Fig. 4 NL block processing in NL-Res2
最大池化后產(chǎn)生112×112 大小的特征圖X,通道數(shù)為64,經(jīng)過 θ、φ、g 三個 1*1 卷積通道得到 Wθxi、Wφxj、Wgxj,其中 Wθ、Wφ、Wg均為 1*1 卷積的待學習權值參數(shù),i 和 j 為像素坐標,xi和xj表示位置i 和j 的特征圖像。通過f(xi,xj)函數(shù)計算特征圖位置i 與其他所有位置j 之間的相關性權重,一元函數(shù)g(xj)計算輸入信號在位置j 的表征,具體計算公式如式(4)、(5)所示:

將f(xi,xj)與g(xj)作矩陣乘法運算,即計算所有的xj加權后的結果,并將結果通過響應因子C(x)進行標準化得到最終的響應值yi,此時,yi便包含了xi與周圍所有像素點之間相關性的信息。這就是非局部計算,公式如式(6)所示:

NL block 是一個殘差結構,非局部計算結果yi經(jīng)過一個1*1 卷積通道得到Wzyi,將Wzyi與原輸入xi相加得出最終的輸出信號zi,如式(7)所示:

此時zi包含特征圖xi中所有像素點的相關性信息,將帶有全局信息的新特征圖Z輸入到NL-Res2的Conv2_1中,如圖3 所示,經(jīng)過兩組并聯(lián)的卷積、BN 和ReLU 激活處理得到的特征圖與特征圖Z 相加,依次輸入到級聯(lián)的NL-Res3、NL-Res4、NL-Res5 中繼續(xù)進行特征提取,得到包含較豐富的全局信息和局部信息的特征圖。
通常,CNN 多采用softmax 損失函數(shù)進行多分類任務,原始的softmax損失是一個交叉熵損失,如式(8)所示:

式中:xi表示第 i 個特征向量;yi表示類別標簽;W 表示權重;b為 偏 置 項 ;θyi,i表 示 行 為 特 征 xi與 權 重 Wyi之 間 的 夾 角 ;j ∈ [1,K],K為類別總數(shù)。
由于原始softmax 損失函數(shù)在進行分類時,類間距小且對類內距離的控制不夠易導致分類準確率低,因此本文在歸一化權值和角度間距上對傳統(tǒng)softmax 損失函數(shù)進行了改進,利用分類角度進行更精細的學習和分類誤差抑制,使類內距離更小,類間距離更大,從而實現(xiàn)最大類內距離小于最小類間距離的識別標準,完成本文行為動作的分類任務,提升行為分類的準確率。改進后的損失函數(shù)為A-softmax 損失函數(shù)[7],如式(9)所示:

A-softmax 損失函數(shù)將式(8)中全連接層的權值W 和偏置b 設置為,使分類決策邊界僅取決于W 和x之間的角度,若θyi,i比其他所有類的角度都小,則輸入特征xi屬于 yi類。另外,在 ψ(θyi,i)中對分類角度 θyi,i添加了 m 倍數(shù)限制,從而產(chǎn)生一個決策余量,使分類決策函數(shù)更加精細。m取值越大,學習到的特征區(qū)分性越強,但學習難度也更大,本文選取m = 4,經(jīng)多次實驗驗證能取得較好的分類識別效果。
本文實驗在Windows 10 系統(tǒng)下進行,計算機顯卡為NVIDIA GeForce GTX 1050Ti,采用PyTorch深度學習框架。
實驗選用UCF101 視頻數(shù)據(jù)集,共13 320 段視頻樣本,包含101個視頻類別,其中每類動作由25個人分別完成,每人做4~7 組,視頻分辨率為320 × 240。實驗中將數(shù)據(jù)集劃分成訓練集和測試集兩部分,其中9 537 個視頻作為訓練集,3 783 個視頻作為測試集。為滿足雙流卷積神經(jīng)網(wǎng)絡的訓練需求,分別提取視頻集的RGB 圖像和光流圖像,對光流圖的提取采用OpenCV 視覺庫中稠密光流幀提取方法中的TVL1(Total Variation-L1)光流算法[10],分別提取水平方向和垂直方向的光流序列。
用ImageNet 預訓練好的ResNet18 卷積神經(jīng)網(wǎng)絡初始化特征并提取網(wǎng)絡卷積層權重,采用隨機梯度下降算法優(yōu)化整個網(wǎng)絡模型。將數(shù)據(jù)預處理后的RGB 圖和光流圖歸一化為224 × 224,空間流輸入單個 RGB 幀,而時間流輸入L個連續(xù)的光流圖,將光流圖在時間域上的長度設置為L= 10[3]。網(wǎng)絡訓練的初始學習率設為0.001,空間流網(wǎng)絡每經(jīng)過150 個epoch 學習率降為原來的10%,共訓練250 個epoch;時間流網(wǎng)絡每經(jīng)過200 個epoch 學習率降為原來的10%,共訓練350 個epoch,動量為0.9,批次大小為4。根據(jù)UCF101 數(shù)據(jù)庫的行為類別數(shù),將雙流NL-ResNet 網(wǎng)絡模型的全連接層的參數(shù)設置為101。
空間流和時間流網(wǎng)絡融合采用加權線性組合各自預測分數(shù)的方法,經(jīng)多次實驗驗證,將時間網(wǎng)絡的權重設置為2,空間網(wǎng)絡的權重設置為1,得到的最終分類結果效果最好。
實驗中采用訓練損失loss 和準確率acc(accuracy)曲線判斷模型訓練是否過擬合,以驗證本文角落裁剪和多尺度裁剪相結合的數(shù)據(jù)預處理方法的有效性。利用傳統(tǒng)雙流卷積神經(jīng)網(wǎng)絡,在原始和增強后的UCF101 數(shù)據(jù)集上分別實驗,圖5 給出了原始和增強后的UCF101數(shù)據(jù)集loss和acc曲線比較:圖5(a)原始數(shù)據(jù)集訓練損失值小、準確率高,測試損失值大、準確率低,出現(xiàn)了過度擬合;而圖5(b)增強后的數(shù)據(jù)集訓練損失值小、準確率高,測試損失值小、準確率高,有效解決了模型過度擬合的問題,表明了本文數(shù)據(jù)預處理方法的有效性。

圖5 原始和增強后的數(shù)據(jù)集loss和acc曲線比較Fig.5 Comparison of loss and acc curves of original and enhanced datasets
接下來,為驗證本文方法提出的引入NL block 對網(wǎng)絡模型的作用,在UCF101 數(shù)據(jù)集上對比了雙流網(wǎng)絡以ResNet18為基礎,加入不同數(shù)量NL block 的設計方案對網(wǎng)絡性能的影響,結果如表1 所示。實驗表明更多的NL block 通常有更好的結果,能夠捕獲更多的依賴信息。

表1 加入不同數(shù)量NL block對網(wǎng)絡的影響Tab. 1 Impact of adding different numbers of NL blocks on the network
最后,為驗證本文A-softmax 損失函數(shù)的有效性以及模型的總體性能,首先選擇VGG16的雙流CNN結構模型和softmax損失函數(shù),輸入大小為224 × 224 的單幀RGB 和10 對堆疊光流圖,本文將其稱之為模型1;其次,以相同輸入,選擇以ResNet18 為基礎網(wǎng)絡的雙流CNN 模型進行實驗,稱之為模型2;在模型2 的基礎上損失層采用A-softmax 損失函數(shù)進行實驗,稱之為模型3;之后,以模型3 為基礎,在網(wǎng)絡的每個卷積層后添加一個BN 層進行實驗,稱之為模型4;而本文模型在模型4 的基礎上在ResNet18 中加入8 個NL block 進行實驗。五種模型設置如表2所示。

表2 五種不同模型的設置Tab. 2 Settings of five different models
實驗結果對比如圖6 所示,在輸入相同的情況下,模型3相較于模型2 在數(shù)據(jù)集UCF101 上的測試準確率提升了0.9個百分點,表明模型分類層采用A-softmax 損失函數(shù)能夠使不同類別之間的距離更大,相同類別之間的距離更小,得到更精細的分類結果,進而有效提高行為識別的準確率。而本文模型相較于模型2的測試準確率又提升了1.3個百分點,表明在ResNet 每一個殘差塊之前加入Non-local 特征提取模塊能更好地融合特征圖的全局信息,提高模型識別的準確率。
將本文模型與傳統(tǒng)雙流卷積神經(jīng)網(wǎng)絡(Two-Stream ConvNet)[3]模 型 、3D 卷 積 神 經(jīng) 網(wǎng) 絡( Convolutional neural network based on 3D-gradients,C3D)[2]模型、非常深的雙流卷積神經(jīng)網(wǎng)絡(Very Deep Two-Stream ConvNets)[4]模型和隱藏式雙流卷積神經(jīng)網(wǎng)絡(Hidden Two-Stream ConvNets)[9]模型等現(xiàn)有方法在相同的實驗環(huán)境和數(shù)據(jù)集上進行實驗對比,結果如表3 所示,可以看出,本文方法比其他方法在行為識別的識別準確率上有所提高。

圖6 不同模型的準確率曲線Fig. 6 Accuracy curves of different models

表3 本文方法與現(xiàn)有方法的行為識別準確率比較Tab. 3 Comparison of behavior recognition accuracy between the proposed method and existing methods
本文建立了一種基于非局部殘差雙流卷積神經(jīng)網(wǎng)絡的人體行為識別方法:首先利用空間流和時間流網(wǎng)絡分別提取視頻的空間表觀信息和運動信息,再采用角落裁剪策略和多尺度裁剪方法對輸入數(shù)據(jù)作增強處理;然后通過NL block 和殘差塊卷積分別提取圖像的非局部信息和局部信息;最后用A-softmax 通過角度學習對各行為樣本進行更精細化分類,得出相應的概率矢量,將空間流網(wǎng)絡和時間流網(wǎng)絡的A-softmax輸出進行加權融合,在UCF101 數(shù)據(jù)集上得到最終行為識別準確率為93.5%,驗證了本文方法的有效性。