董安,左劼,孫頻捷
(1.四川大學計算機學院,成都610065;2.上海政法學院,上海200000)
隨著視頻大規模增長,視頻人體行為分析成一個研究的熱點。通常,人體行為可以通過外觀特征、深度信息、光流、骨架序列來進行識別。骨架序列特征可以作為其他模態數據的重要補充。骨架模態的信息,對于不依賴場景和物體信息的類別,只包含行為動作本身的類別具有較好的區分度。人體的骨架關節點的坐標隨著動作的變化而變化,例如起身和摔倒兩個動作涉及到的骨架關節點坐標變化是完全不同的。
如圖1 所示人體骨架關節點序列,節點與節點通過邊相連接,可以構成一個圖的表示。本文研究了基于圖卷積神經網絡的骨架序列行為方法,并在自采集的室內監護視頻數據集上進行了實驗及分析。
動作行為識別具有廣泛的應用場景,包括安防場景的異常行為識別,自動駕駛場景下行人的行為識別等。識別視頻中人的行為類別是動作行為識別的主要任務。傳統方法通過使用全局和局部特征識別任務行為已經取得了顯著的進展,但是這些手工特征需要大量的人力和專業知識來開發有效的特征提取方法,無法在大型的數據集上很好的概括。

圖1 人體骨架關鍵點序列
iDT[1]算法是深度學習興起之前,在動作行為識別領域效果,穩定性最好,可靠性最高,最好的方法,不過算法速度很慢。近年來,使用深度學習技術進行特征學習,由于其強大的功能的能力而受到越來越多的關注。深度網絡在動作識別中的成功也可以歸因于將網絡擴展到數以千萬計的參數和大量標記的數據集。最近的深度網絡在各種動作數據集上均取得了令人驚訝的高識別性能。
通過深度學習技術學習到的動作特征已得到廣泛研究,近年來,開發用于動作識別的深度網絡的兩個主要變量是卷積運算和針對時序的建模,這產生了幾種網絡。
基于Two-Stream 的方法,從時間維度上,是對對視頻序列中每兩幀計算密集光流,得到密集光流的時序序列。從空間維度上,是利用RGB 視頻關鍵幀的信息。使用兩路CNN 分別對RGB 和光流進行訓練,兩路網絡分別對動作類別進行識別,最后對兩路網絡的分類分數進行融合(直接平均或者使用SVM),得到最終的分類結果。
C3D 是由Facebook 提出的基于三維卷積的工作,使用三維卷積和三維池化構建網絡。通過三維卷積,C3D 可以同時學習視頻的時空特征,對運動信息和外觀信息進行建模。由于省去了耗時的光流計算,C3D的速度也有效提升。
而基于骨架特征的行為識別因為其對光照和場景變換具有很好的魯棒性,得到了越來越多的關注。通過姿態估計算法或高精度的深度攝像頭也可以較為容易得獲取到骨架特征。基于此,本文從骨架特征的角度來研究行為識別。
OpenPose[2]是一個可以從視頻中實時提取人體關鍵點的算法框架,本文只關注OpenPose 的輸出,在一個視頻中,可以有很多幀,每幀可以有多個人,每個人有多個關節點,每一個關節點有不同的特征(位置信息和置信度)。通過OpenPose 處理一個Batch 視頻,可以得到一個5 維矩陣的特征表示(N,C,T,V,M),其中N表示視頻的數量,C 表示關節點的特征(關節的坐標以及置信度),T 表示視頻關鍵幀的數量,V 表示一個人的關節點的數量,M 表示一幀中人的數量。
現實世界中,許多數據都是以圖或者網絡的方式存在的,例如社交網絡、知識圖譜、世界貿易網絡、圖卷積神經網絡的提出,使得對這些非規則數據進行表示學習成為可能。本文采取了類似Kipf 等人[3]和Sijie Yan 等人[4]提出的圖卷積方法,設計了如圖2 所示的圖卷積神經網絡。模型主要分為三部分,輸入模塊、圖卷積模塊和輸出模塊。其中,輸入模塊是對2.1 小節中OpenPose 提取的骨架序列進行歸一化,也就是將關節在不同幀下的位置特征進行歸一化,做歸一化的原因在于關節在不同幀下位置變化很大,如果不進行歸一化不利于算法的收斂。第二個模塊是交替使用GCN和TCN,對時間和空間維度進行變換。第三個模塊是使用平均池化和全連接層對特征進行分類。其中GCN部分使用的公式是(1),D 表示關節點的度矩陣,A 表示關節點的鄰接矩陣,X 是輸入的骨架序列。公式的實際含義是以邊為權值對節點的特征進行求加權平均。GCN 可以學習到空間中相鄰關節的局部特征,而TCN 幫助學習到時間維度上關節變化的局部特征。


圖2 圖卷積神經網絡
遷移學習是通過利用已經訓練好的模型,使用其參數去初始化一個新的模型,從而提升新模型的性能。現實場景中,許多數據或任務是存在相關性的,通過遷移學習,可以將已經學到的模型通過初始化新模型的方式來分享給新模型,從而優化并加快模型的學習效率,不需要讓新網絡從頭開始學習。DeepMind 在2018 年發布了大規模的視頻動作數據集Kinetics[5],由于本文自采集的數據集較小,從零開始訓練,數據量不夠,所以本文先用Kinetics 訓練好圖卷積模型,將模型參數初始化新的圖卷積模型(由于分類的類別不同,全連接層的參數不復用),在此基礎上,再用自采集的數據集來訓練新的圖卷積模型。
本次實驗采用的數據集是模擬監護場景中,老人的起身、摔倒以及正常行走的視頻,根據標注動作的起始和結束時間,利用FFmpeg 進行視頻分割,得到的數據集總共包含1549 個5s 左右的視頻,其中訓練集1037 個,驗證集512 個,訓練集和驗證集中三個類別各占1/3。然后利用OpenPose[2]提取視頻中每一幀的骨架信息。
實驗中采用圖卷積神經網絡輸出維度的細節如表1 所示。空間維度是關節的特征,開始是3,時間的維度是關鍵幀數,開始是150,在經過所有時空卷積之后,關節的特征維度增加到256 維,關鍵幀的維度降低到38,最后使用平均池化和全連接層對特征進行分類,FC層神經元的個數取決于要分類的類別數。
在全連接層使用了dropout 技術避免過擬合,以0.5 的概率隨機失活神經元。優化算法采用了隨機梯度下降,學習率是0.01,每10 個epoch 衰減0.1。

表1 實驗使用的圖卷積神經網絡架構
本文進行了三組實驗,第一個實驗室是利用大規模的視頻動作行為識別數據集Kinetics 提取到的骨架信息進行訓練圖卷積神經網絡,第二個實驗是利用自采集的室內監護視頻提取到的骨架特征對圖卷積神經網絡進行訓練,第三個實驗是在第一個實驗得到的模型的基礎上,進行遷移學習。識別的準確率定義如下:

實驗一的結果如表2 所示,我們使用了Kinetics 數據集中的訓練集提供的240000 個短視頻,然后利用OpenPose 提取到骨架序列,進行訓練圖卷積神經網絡,然后在20000 個驗證集的骨架序列上進行了評估。觀察實驗結果,發現準確度并不高,遠遠低于常見的基于RGB 或者光流模態的方法,例如i3D[5]。分析原因,本文認為這是由于Kinetics 包含大量的類別都需要去識別與人體交互的物體和場景,例如打籃球這個動作,需要有籃球這個物體,例如踢足球,需要有足球場這個場景。而基于骨架的行為識別,能夠對場景和物體本身不敏感,對動作本身有較好的區分度。

表2 Kinetics 視頻數據集從頭訓練
實驗二的結果如表3 所示,我們使用了自采集的室內監護視頻數據集中的訓練集提供的1037 個短視頻,同樣利用OpenPose 提取骨架序列,從頭開始訓練圖卷積神經網絡,然后在512 個驗證集進行評估,得到0.78 的準確率。這符合實驗一的分析,基于骨架的行為識別,對于不依賴場景和物體本身的動作類別具有較好的區分度。但這個精度還有提升的空間,分析其原因是數據量不夠,基于此,我們進行了實驗三。

表3 室內監護視頻數據集從頭訓練
實驗三的結果如表4 所示,我們利用實驗一訓練好的模型的參數初始化一個新的圖卷積神經網絡,然后再用訓練集中1037 個短視頻提取的骨架,訓練新的圖卷積神經網絡,得到了0.9 的準確率。由于實驗一的模型是基于大規模的數據集進行訓練得到的,有更加豐富的知識,通過遷移學習,可以讓基于小數據的任務性能提升。

表4 室內監護視頻數據集遷移學習
本文使用骨架模態的數據,基于圖卷神經網絡,進行人體動作行為識別。通過實驗證明了基于骨架模態的動作識別,對于不依賴場景和物體的類別具有較好的區分度。使用大規模動作視頻數據集提取得到的骨架信息來訓練圖卷積神經網絡,再通過遷移學習的方式,對于小數據的任務性能提升具有很大的幫助。但是由于基于視頻RGB 數據來提取骨架特征的這個過程,比較耗時,還不能做到實時,在未來的工作中,可以考慮把姿態估計網絡和行為識別網絡進行有效融合,減少整個過程的耗時。