史佳成,陳 志,胡 宸,王仁杰,葉科淮
(1.南京郵電大學計算機學院,江蘇 南京 210023;2.南京郵電大學通信與信息工程學院,江蘇南京 210003)
視頻中的人物動作識別分為兩個部分:①對于類似背景之類的靜態信息處理;②對于動態對象的跟蹤和識別。如何使視頻中的靜態信息和動態信息在互不影響特征提取的同時又能保持兩者相互結合,需要確定結合過程中的動態特征向量和靜態特征向量貢獻率。
跟蹤方法主要有光流法,常用的神經網絡包括RNN神經網絡、LSTM 神經網絡等。光流法優點是在不知道任何場景信息情況下檢測出運動目標,但是計算復雜度高、實時性差,對硬件有較高要求,而訓練標準的RNN 需要解決長時間學習依賴問題。
在計算機視覺領域,研究重點是如何對一個圖片序列或由圖片幀組成的視頻進行識別。按照拓撲結構,CNN 分為多個學習階段,由卷積層、非線性處理單元和采樣層組合組成[1]。CNN 在圖像識別領域表現很好,廣泛運用于圖像識別領域中的特征提取、目標檢測、圖像分類等。文獻[2]提出Two_Stream 的動作識別方法,將視頻分為一連串的圖片幀作為CNN 輸入,將其分為時域光流和空間域的靜態視頻幀,其中空間流對各個視頻幀進行操作,對靜止圖像進行有效識別。而靜態外觀是一個有用線索,因為某些動作與特定對象密切相關;光流模型輸入通過在幾個連續幀之間堆疊光流位移場而形成,輸入明確描述視頻幀之間的運動,使識別更加容易。在經過大量圖像識別數據集[3]訓練之后,利用Softmax 函數對動作進行分類,提高模型精度,但訓練該模型需要經過預處理階段,空間池化層沒有考慮目標軌跡。
在目前人物動作識別算法中,文獻[4]提出的LRCN算法十分獨特且高效,受到廣泛認可。LRCN 神經網絡模型是一種結合CNN、RNN 各種優點于一身的數學模型,對視頻中的每一個圖片幀利用CNN 算法對人眼可見的特征進行提取,再結合RNN 中的分支LSTM 對圖像序列進行學習,可有效解決RNN 梯度下降問題,在時域和空間域都達到很深層次,并且不需要人的干預,幾乎不需要進行輸入預處理。
本文在LRCN 基礎上提出LRDCN 模型,利用雙流模型與CNN 結合提取視頻特征,利用GRU 對前后特征進行關聯,采用編碼—譯碼與極大似然估計法,從已知的動作序列推出新的人物動作,從而在有限的運算速度條件下更快地更新網絡參數,增加網絡深度。在不同訓練集上進行訓練,使模型精度更高、泛化能力更強。
為捕捉每一幀靜態特征與相鄰兩幀之間表現出的動作,構造一個層次更深的卷積神經網絡模塊,提升網絡模型精確度,達到手工提取特征的最高水平,對視頻動作特征提取算法描述如下:
(1)分別在時間和空間上建立TWO-STREAM 模型,在時間上從單獨的幀中提取出場景和目標信息,空間上提取人物和相機的運動信息。
(2)將時間流信息分為x方向與y方向對其進行光流堆疊,將不同幀對同一位置的位移信息進行采樣,軌跡堆疊沿著人物運動的軌跡對位移信息進行采樣。
一個密集的光流場可以由t與t+1 時刻的兩個連續幀之間的矢量場dt表示,在t時刻取一點pk,假設其位置為(u,v),而每個點經過矢量場作用后對應的時刻為t+1,對應的坐標為,如圖1 所示。

Fig.1 Optical flow field圖1 光流場
神經網絡輸入由w×h× 2L的三維矩陣構成,假設輸入視頻從第τ幀開始提取,則每一幀的光流可由式(1)、式(2)表示。

其中,Iτ(u,v,a),a∈[1,2L]可看作是對L 幀中一個點進行的編碼。
(3)第(2)步提取的是方向向前的單向光流,其中式(1)表示x軸方向的光流,式(2)表示y軸方向的光流,通過相反方向上的另一組位移場形成雙向光流。對模型進行擴展,將時間間隔τ從時刻T-τ/2 到T+τ/2 單向流分割為兩個時間間隔為方向相反的單向流,開始時間、結束時間分別從T-τ/2 時刻到T時刻和從T時刻到T+τ/2 時刻,最終得到雙向光流。
(4)正常情況下可采取零中心化使CNN 模型更好地利用整流非線性。文獻[5]描述由于攝像機移動,第(3)步得到的視頻輸入所有向量有可能都被加上一個特殊值,使整個視頻幀呈現運動趨勢。為防止這種情況發生,將輸入到卷積神經網絡中的每個向量減去它們的平均值。
(5)將每一幀的RGB 圖像組合成一個w×h× 3L的三維矩陣Iτ2(u,v,a),a∈[1,3L],其中3 個大小為w×h×L的子矩陣分別代表圖像的R,G,B值。
(6)將基于特征編碼的時間矩陣Iτ(u,v,a) 與RGB 圖像組成的三維矩陣Iτ2(u,v,a) 分別作為時空卷積神經網絡輸入,其中時間域上的神經網絡多次經過方向敏感的卷積神經網絡層、整流層和池化層迭代,其散度、卷曲和剪切力可通過光流梯度計算,而RGB 圖像組成的那部分三維矩陣只需通過正常CNN 的多次卷積池化濾波層迭代,最終得到在時間和空間上幀與幀之間的相互獨立的特征向量。
將時間和空間分量分開的卷積神經網絡結構有助于抑制過擬合現象,同時不會減少表達式所承載的信息量,因為僅僅通過減少參數的數量并不能優化卷積神經網絡模型性能[6]。
傳統的遞歸神經網絡(見圖2)將輸入序列<x1,x2,…,xT>映射到隱藏狀態<h1,h2,…,hT>,并通過式(3)、式(4)將隱藏狀態映射到輸出狀態。


Fig.2 Recursive neural network圖2 遞歸神經網絡
其中f為非線性激活函數,如Sigmoid函數,用于連接輸入層和輸出層。對于長度為T的輸入序列<x1,x2,…,xT>,先后依次計算更新h1,y1,h2,y2,…,hT,zT。
雖然純粹的RNN 在語音識別和文本生成方面性能極佳,但是RNN 很難用于學習一個長期動態變化的數據,在深層次的遞歸網絡中梯度反向傳播時,會引起梯度下降或梯度爆炸問題[7]。本文引入門循環神經網絡,其結構類似LSTM,如圖3 所示。

Fig.3 GRU helped internal structure圖3 GRU 內部結構
2014 年Cho 等[8]提出門循環神經網絡GRU 對RNN進行改進,解決梯度爆炸和梯度消失現象。GRU 內部由更新門與重置門組成,在第t時刻輸入xt,并且一組重置門rt用于控制ht-1,再與xt進行拼接,在雙取正切激活函數作用下,將結果h't縮放至-1~1 之間,如式(7)所示,其中?表示兩個矩陣對應元素的乘積,σ表示Sigmoid 函數,rt更新如公式(5)所示。最終利用一個更新門zt將遺忘和記憶兩步進行合并,其中(1-zt)ht-1表示對之前的狀態進行選擇性遺忘,zt h't表示對當前節點信息進行記憶,最終輸出ht,如公式(6)所示。


根據文獻[9],GRU 和LSTM 的主要區別在于LSTM中的記憶門。LSTM 由輸入門、遺忘門和輸出門3 個門控和一個記憶單元組成,其中記憶單元用于統計上一個隱藏層的信息與當前時刻的輸入信息,輸入門、遺忘門和輸出門的激活與當前輸入之前的記憶及上一層的輸入有關。但在GRU 中,門控數量比LSTM 少一個。GRU 中門控的更新只與當前層的輸入和之前的輸出有關。由于GRU 參數減少,所以GRU 更新速度更快、計算代價更小。
一般長效遞歸深度卷積神經網絡模型(RNN)將深度分層的視覺特征提取器(如CNN)與訓練好的模型進行結合,這些模型能綜合時間上的動態特征進行學習。RNN 主要用于序列數據<x1,x2,…xT>如文字、多個幀組成的視頻等。
LRDCN 中的CNN 將序列中的每個元素輸入到一個元素-特征轉換器φv(.) 中,得到一個定長的輸出特征序列φv(xt),然后再將其輸入到遞歸序列學習模塊。
通常情況下,遞歸神經網絡模型有一個參數W,用于將輸入xt和前一層的隱藏狀態ht-1映射為輸出ht。因此,序列的推理必須自上而下進行,先計算h1=fw(x1,h0),再依次計算h2=fw(x2,h1),h3=fw(x2,h1),以此類推。
對于輸入yt∈C,C是一個離散值的集合,RNN 計算出的概率P(yt)和序列模型每一層單獨的輸出yt有關,其預測值可用公式(8)表示:

式(8)中,Wtt與bt來自于模型通過學習最終得到的結果。利用Softmax 函數,輸出結果為x的概率如公式(9)所示。

須指出,GRU 某一時刻所預測到的動作為動作備選集合中最可能發生的那個動作,即。
文獻[10-12]指出,當層數增多時,使用非線性函數對于感知類問題有很大幫助。對于更大的時間跨度T,遞歸神經網絡能夠得到層次更深的非線性函數,并且其冪次與T成某種正相關聯系。而線性網絡經過多層更新迭代,序列模型的參數W得到復用,使最終的輸出永遠是輸入的線性組合,與輸入的時間跨度T無關。
Softmax 函數的優點在于得出的所有可能結果概率之和為1,符合概率特性,且Softmax 是非線性函數,能夠使得遞歸神經網絡訓練后的輸出隨著時間跨度T變化而變化。
本文結合GRU 模型實現實時人物動作識別,將基于GRU 的RNN 分為暫態RNN 與譯碼RNN。與GRU 模型不同的是,暫態RNN 組件輸入為經過CNN 處理后的特征序列,在得到每一時刻的暫態序列輸出<y'1,y'2,…,y'n>(如圖2 所示)后,根據文獻[8]提出的編碼—解碼方法,對暫態RNN 組件進行改進:編碼器將輸入的暫態序列<y'1,y'2,…,y'n>映射為一個單個的值y1,隨后通過梯度下降算法,在計算暫態序列與從y1到暫態序列<y'1,y'2,…,y'n>的映射匹配程度后,對暫態RNN 組件進行更新。其中每一階段的y't為之前所有輸入特征xt的一個總結,如公式(10)所示。

譯碼器將這個序列輸出為一個長度為T'的另一個序列。在前n個時間單位,編碼器處理輸入暫態序列<y'1,y'2,…,y'n>,隨后將其輸出y1放入譯碼器,在后m-1個時間單位中,譯碼器利用前面所有的輸入推出<y2,…,ym>,即推出人物每個時刻最有可能的動作yt。
在對yt進行極大似然估計過程中,算法更新譯碼RNN組件參數。基于輸入序列和之前得到的動作序列組合<x1,x2,…,xt,y1,y2,…,yt-1>得到yt的條件分布,如公式(11)所示。

若將序列<x1,x2,…,xt,y1,y2,…,yt-1>合并為矩陣xk,則LRDCN 中的編碼譯碼器組件的學習目標是最大化yt的條件概率,如公式(12)所示。

為提升系統端到端更新參數能力,更好地在特征序列與最終動作預測序列之間建立聯系,利用反向傳播法與隨機梯度下降法訓練LRDCN 參數?h,t g(ht-1,xt-1)。這種方法與單純的Softmax 函數模型相比,能將時刻t的動作與之前預測動作結合,增加動作識別的精度與泛化性能。
將測試集輸入TWO-STREAM 算法,時間流Iτ(u,v,a),a∈[1,2L]和Iτ2(u,v,a),a∈[1,3L]分別輸入到時間域CNN與空間域CNN,得到長度分別為L 和2L 的特征序列;通過極大似然估計法得出每一時刻對應的最有可能產生的動作;通過在UCF-101 與Weizman 測試集上訓練LRDCN,找到每個特征對于特定動作最精確的貢獻率。
為驗證LRDCN 識別算法的準確性及實時性,實驗過程分為兩步:①在UCF-101 數據集上進行測試,將實驗結果 與Resnet-18算法、Resnet-30算法、Resnet-50算法、Resnet-101算法、Densenet-152 算法以及Densenet-201 算法進行對比;②測試人物動作識別算法的實時性,將包含一系列人物動作序列的視頻(待定)作為輸入,經處理得到人物動作序列,再將每一類動作視頻放在對應文件夾中,將文件名用于標注每一動作類別,最終形成包含訓練數據和測試數據的Trainlist 文件與Testlist 文件。在動作識別實驗中LRDCN 使用CNN 參考文獻[13]提出的模型Caffenet(Alexnet[14]的變種),使用Imagenet數據集子集ILSVRC-2012 對模型進行訓練。
數據集包含101 類來自YouTube 的人物動作視頻,其中每個視頻包含的幀長度不等,每幀的像素為320 × 240。動作類別可分為人與物體互動、僅身體動作、人與人互動、演奏樂器以及體育運動等,其中動作包括眼部化妝、涂口紅、射箭、漂流、攀巖、室內攀繩、劃船、刮胡子、鉛球運動、滑板、滑雪、跳傘、足球、吊環、相撲、沖浪、秋千、乒乓球、太極拳、網球擺、擲鐵餅、跳蹦蹦床、打字、俯臥撐、板書等。所有實驗均采用TensorFlow 開發,運行于Windows 平臺。
實驗采用UCF-101 數據集,使用每一類視頻中的前2/3 進行訓練,后1/3 視頻進行測試。實驗將Batch_size 設為15,輸入長度為T,圖片按照R,G,B 分為3 個通道,將輸出動作序列的時間長度暫定為1(僅識別一個動作),最終將測試結果正確的視頻數量除以測試集總視頻數量乘以100,得到精確度的百分比數值;隨后在Weizmann 數據集通過LRDCN 進行數據集訓練,測試模型動作序列識別的精確程度,最終得到誤差矩陣(見表1)。Weizmann 由9個人分別執行10個不同的動作視頻(bend,jack,jump,pjump,run,side,skip,walk,wave1,wave2),視頻中的背景、視角都是靜止的。由于skip 動作會影響其它動作識別,因此在實驗過程中舍棄skip 這一動作識別。
如圖4 所示,LRDCN 算法在人物動作識別精確度上優于上述6 種算法。相對于其它算法,LRDCN 算法的個人動作語義準確率較高。當進一步獲得時間和空間上的人物運動軌跡后,依靠精準的人物追蹤,LRDCN 算法特征提取能力得到進一步增強。通過在RNN 中引入GRU,可提高長視頻序列動作識別精確度,避免梯度下降和梯度爆炸情況。在去除skip 動作之后,得到的動作序列識別平均正確率為93.8%,如表1 所示。由于跑步與走路的動作特征十分相似,加上之前動作序列干擾,算法容易將跑步動作誤認為走路。

Fig.4 Accuracy comparison among LRDCN algorithm and others on the data set UCF-01圖4 LRDCN 算法與各算法在數據集UCF-01 的準確性比較

Table 1 Action LRDCN algorithm error matrix(remove the skip action)表1 LRDCN 算法動作誤差矩陣(去除skip 動作)
LRDCN 通過在編碼—譯碼RNN 中增加GRU,避免了梯度下降和梯度爆炸等現象;將RGB 圖像與光流圖像結合作為網絡輸入得到光流圖,以更精確地反映時空動作特征;在UCF-101 和Weizman 數據集上訓練LRDCN,找到最佳的人物動作行為模式識別貢獻率;對單個物體進行跟蹤分析,采用極大似然估計法以及譯碼RNN 實現實時動作識別;不僅提高了LRDCN 模型精度,而且泛化能力也得到了提升。
但是,本算法步驟過于繁瑣,對計算機性能要求偏高,識別單個動作比普通算法更加耗時。在后續的研究中將減少算法步驟,如減少卷積池化步驟,犧牲一部分算法精確度以提升算法效率等,并對算法進行拓展,對視頻中多個個體進行群體動作語義分析。