祝 偉 吳 陳
(江蘇科技大學計算機學院 鎮江 212003)
視頻行為檢測在視頻監控,醫療領域,智能人機交互、視頻檢索中有著廣泛的應用,具有重要的研究價值[21]。視頻是由連續的圖片形式的幀組成的,相較于圖片多了時間上的維度,即幀之間的運動信息。從語義上理解視頻需要結合單個視頻幀包含的場景信息即空間特征和幀之間變化上的時間特征[17]。在過去的數十年間,傳統基于RGB 幀序列人體行為識別研究取得了很大進展[10]。人工特征提取常用的方法有時空興趣點(Space Time Interest Point,STIP),視覺詞袋(Bag of Visual Words,BOVW),尺度不變特征轉換(Scale-Invariant Feature Transform,SIFT),方向梯度直方圖(Histograms of Oriented Gradient,HOG)和運動歷史圖像(Motion History Image,MHI)等,通過聚類等方法將上述初步提取的人工特征構造出更易區分的子特征,然后使用如支持向量機等分類器對子特征進行分類。傳統方法一般通過特征提取與表征、識別分類等步驟。由于視頻數是通過普通相機獲取的,本質上就是一系列RGB 圖片組成的序列。RGB 圖片對各種環境變化比較敏感,如不同的運動場景、相機拍攝的角度、背景運動或相機運動、人為習慣造成運動上的差異等。因此,準確把運動前景與背景完全分割,從圖像中提取運動的有效信息很困難。傳統方法從表示方式上可以分為整體表示法和局部表示法。整體表示法把一個行為的所有運動特征表示為一個整體,從整體分析行為。Blank 等提出了MEI 模板的體積擴展,主要思想是提取人體幀上的剪影按時間序列拼接成三維形狀用來表示運動[4]。Weinland D 等提出通過運動歷史體(MHV)表示不同人在不同角度執行不同動作,并表明使用繞垂直軸的圓柱坐標中的傅立葉變換,可以高效地執行對齊和比較[5]。由于整體法不夠靈活,對運動細節不敏感,不能有效處理遮擋等問題。對于通過提取疊加運動主體輪廓獲取運動特征的方式無法處理輪廓內部的細節特征。
在深度學習被廣泛使用之前,主流的方法是IDT,之后發展出來的算法很多都是在IDT 方法上進行改進。IDT 的思路是利用光流場來獲得視頻序列中的一些軌跡,再沿著軌跡提取HOF、HOG、MBH 等特征[11]。最后利用FV(Fisher Vector)方法對特征進行編碼,再基于編碼訓練結果訓練SVM分類器。視頻比靜態圖像多了時間域,包含的特征更多,語義信息更復雜。為了提取時間域特征,視頻行為識別需要處理大量視頻幀并得到其中隱含的聯系[6]。深度學習出來后,陸續出來多種方式來嘗試解決這個問題。由于深度學習是學習樣本數據的內在規律和特征表示,不用人工干預的特征提取可以保留更多也許在人類看來無意義但有價值的信息[22]。早期的深度學習方法是直接將視頻截幀,然后基于單幀進行卷積提取特征。由于單幀圖片相對于整個視頻只是很少的一部分,對視頻的表述不夠充分。之后出現的雙流網絡分別以靜態圖像和光流圖作為輸入,使用兩個并行卷積網絡分別處理這兩種不同的輸入,最后兩個網絡的輸出取均值,得到最終的輸出結果[16]。由于視頻拍攝的環境是在時刻變化的,前后幀的差異不僅僅在運動主體的運動上,還有鏡頭晃動、視角變化和環境光線突變等,甚至不同的攝像頭模組,不同的視頻編碼方式也會帶來噪聲[18]。
由于自然行為運動是連續的過程[19],不同的行為可能包含很多相似的運動細節,因此理解辨別一個行為需要綜合前后的運動特征從整體上判斷[20]。結合以上因素,為了在視頻行為分析中提取有效的運動特征,減小環境變化帶來的無關信息,并對空間特征在時間軸上進行融合編碼提取語義信息,本文提出了一種基于空間注意力機制以靜態圖像幀及其相鄰幀的灰度圖的視頻幀塊分別作為網絡輸入,分別用于計算空間特征與微運動特征,時間注意力機制將視頻的各個微運動特征融合提取運動的更高層語義特征的方法。在UCF101與HMDB51數據集上實現了94.78%和71.47%的準確率。
運動是連續的過程。視頻中的運動信息是表現在時間維度上的,也就是相鄰兩幀之間的像素變化,是離散的。鄰幀的像素變化組成運動的最小單元,可以稱為微動作。這些微動作前后關聯,構成一個具體的行為。
在靜態圖片的分類、目標檢測、分割的任務中卷積神經網絡已經取得很大的成功。但對于靜態圖片很有效的二維卷積網絡架構很難提取視頻中的運動特征。一種常用的方法是人工提取運動特征,其中典型的方法是Simonyan等提出的雙流卷積神經網絡[2],但這種方法需要預先耗費大量時間計算光流圖,并且光流圖中會包含很多無效的運動特征。對于深度學習所期望的是能實現端到端的學習,所以使用三維卷積網絡的架構把對運動特征的提取也包含網絡的學習任務中是一個很好的選擇[23]。其中典型的是Tran 等提出的C3D(Convolutional 3D)網絡[15],對于視頻數據增加了時間維度上的卷積,可同時提取空間特征與運動特征。但C3D 采用的是11層VGG Network的架構,網絡層數雖然不深,但模型參數量十分龐大,需要大量的計算資源。
本文基于三維卷積網絡,對輸入的視頻數據在時間維度上進行分塊,一個視頻抽取固定數量的塊,每一塊包含固定數量的幀。對抽取的每一塊進行預處理,包括從每一塊內隨機抽取一幀原始RGB圖,獲取塊內每一幀的原始灰度圖。將RGB 圖與灰度圖分別作為模型的兩個輸入。為了有效提取塊內的微動作特征,將用于二維卷積的空間注意力機制拓展到三維。為了抽象出微動作前后的語義特征,使用時間注意力機制對塊間的微動作特征進行融合編碼。
模型的整體結構如圖1 所示。模型有兩個輸入端,Gray Block 的維度(N×M)×112×112×1,是由N 個視頻塊幀的灰度圖(112×112×1)堆疊而成的,112分別為幀寬與幀高,RGB Block大小為(N×112×112×3)是與之對應的,從每個視頻塊中隨機抽取的一個RGB 幀(112×112×3)堆疊而成。其中M 為N個視頻塊中每個視頻塊的幀數。輸入灰度幀的分支主要用于提取運動特征,視頻數據在淺層的運動特征主要表現在相鄰兩幀像素點的偏移,抽象的語義較少。模型淺層網絡主要目的是通過壓縮空間與鄰幀提取像素的偏移特征,其運算如式(1)所示。

圖1 深層網絡模型整體結構
其中m 為batch size,x 為網絡中某一層的特征塊,y為批歸一化層的輸出,γ,β分別為縮放、平移系數,是歸一化層需要學習的參數。計算方法如式(3)所示。
式中ε為非零常數,E(xi),Var(xi)分別為一個batch中特征塊對應channel 的均值于方差,如式(4)和式(5)所示。
在網絡模型整體結構示意圖中,灰度視頻塊先經過兩層標準三維卷積,再與Self-attention 機制殘差連接,連接方式如式(6)所示。

式中x 表示自注意力機制上層的網絡輸出,y 表示自注意力機制與前層網絡殘差連接后的輸出,其輸出結果輸入Temporal 3D ResNeXt Block。同樣,對于RGB 視頻塊先經過兩層三維卷積,由于RGB 分支的主要目的是提取場景特征,需要綜合考慮整個圖像的信息,結構中沒有加入注意力機制,經過三維卷積后的特征圖直接輸入3D ResNeXt Block中。灰度與RGB分支的特征圖在channel的維度進行拼接,輸入Multihead Attention,最后經過三層一維卷積與softmax 層后得到類別標簽。模型的損失函數采用的是softmax 交叉熵損失函數,如式(7)所示。

其中p為實際的標簽,q為模型的預測,N為p與q的維度。
由于人或物體三維運動的靈活性,同個運動會因為視角或運動主體的差異,在時間軸上跨度有很大的差別。與靜態圖片中物體的外形特征相比,很難有效地在時間維度上的提取運動特征。通常的三維卷積在時間維度上采用相同單一的卷積核尺寸,很難有效融合不同時間軸跨度上的運動信息。針對這個問題,在ResNeXt Block 的基礎上進行改進,提出了Temporal 3D ResNeXt Block 結構如圖2(b)所示。圖2(a)為原始的ResNeXt Block 結構。Temporal 3D ResNeXt Block 的數學表達如式(8)所示。

式中C 表示block 內channel 的分組數,每一組的τi的結構相同。改進后的block結構在第一層上與原結構相同,通過1×1×1的三維卷積核拆分并壓縮特征塊的通道。第二層采用1×3×3 的核僅在空間維度上卷積。第三層僅對時間維度卷積,對第二層的輸出分別采用1×1×1,3×1×1,5×1×1 三種不同尺寸的卷積核,并分別對對應特征塊時間維度上進行0、1、2尺寸的padding,使三種卷積核的輸出特征塊在時間維度上尺寸相同,然后在channel 的維度上拼接,最后通過卷積核尺寸為1×1×1的卷積層將特征塊通道恢復到輸入大小并與輸入殘差連接。
由于存在相機位移、背景變化等與運動主體行為無關的運動,在提取特征時會包含無效的信息。采用self-attention 機制,網絡結構如圖3 所示。灰度視頻塊經過兩層三維卷積后得到的特征塊{C1,C2,…Ck},其中Ck為第k 個通道的特征塊,w,h,d 分別為視頻幀特征塊的寬,高和幀數。{C1,C2,…Ck}分別經過三個卷積分支,其中3D Conv1、3D Conv2 將通道壓縮至原來的1/a,將特征塊尺寸reshape 成(h×w,k/a,d)與(k/a,h×w,d)并在特征塊的寬和高的方向相乘得到尺寸為(h×w,h×w,d)的特征塊,再與經過3D Conv3 卷積并將尺寸reshape 成(k,h×w,d)的特征塊在寬和高的方向相乘,得到的特征塊尺寸為(k,h×w,d)。最后經過reshape 成與特征塊{C1,C2,…Ck}尺寸相同注意力矩陣。

圖3 Self-attention機制結構
為了獲取不同時間跨度的特征信息,我們在3D ResNeXt Block 中,將對視頻塊在時序通道上的卷積采用了三種尺度的卷積核,使提取到的特征中融合了更多不同時間跨度的運動特征。同時將空間通道的卷積與時間通道分離,減小了模型參數量。視頻的本質是序列,模型前半部分的三維卷積對視頻數據的空間通道及短距離相鄰的時間通道壓縮編碼。即對應的是相當于將一個完整行為分割成多個微運動,再對每個微動作編碼。模型后半部分采用的Multihead Attention 采用的是自然語言處理中Transformer的編碼器部分,將各個微動作的編碼綜合,進一步抽象融合成一個具體的行為特征。
本實驗數據采用的是UCF101 與HMDB51 公開數據集。其中UCF101 數據集中包含101 種行為類別,是在日常現實環境中拍攝的13320 個視頻片段。HMDB51 數據集中包含51 種行為類別,6849個視頻片段,主要來源于影視作品,小部分來自現實環境。
數據集中的視頻片段隨機抽取80%作為訓練集,20%測試集。每個視頻均勻分割成16 個部分,每個部分中隨機抽取連續的四幀,總幀數少于64的視頻,不足的幀用空白畫面補全。每一幀的大小按寬高比縮放并用零像素補全將尺寸調整至112×112。
深度網絡模型由pytorch 框架搭建。在UCF101 與HMDB51 數據集下,對單獨使用灰度幀的輸入分支、RGB幀輸入分支和融合兩種輸入的方式分別進行了測試,未經預訓練的結果如表1所示。

表1 改進的模型準確率
從表1 中可以看出,融合了灰度幀分支和RGB幀分支的模型在準確率上相對獨立分支有了很大提升。在加入Self-attention 機制后模型的準確率進一步增高,表明了Self-attention機制的有效性。
表2 展示了本文方法與已有算法模型經過預訓練后,在UCF101 與HMDB51 數據集上準確率的比較。其中的Pre-training 為模型預訓練使用的數據集。本文改進的模型經過kinetics數據集預訓練后,與原始的ResNeXt101 算法相比,在HMDB51 數據集上的提升更明顯。通過表1、表2,表明了本文在模型結構設計,ResNeXt Block 的改進上對視頻行為識別準確率的提升方面具有一定的作用。

表2 不同模型準確率比較
近些年來,深度學習方法已經在計算機視覺的圖像領域取得了巨大的成功。由于其端到端訓練的設計思想簡單,在海量數據的支持下,相較于人工設計的圖像分析算法可以應付更復雜的環境,識別效果好,因而得到了越來越多的研究者的關注。相對于圖像分類,視頻中行為特征更豐富,語義更抽象,還有其在時間上的連續性都給識別任務增加了難度。雖然自行為識別研究以來已經取得了不少成果,但是任然有很多困難需要面對。例如復雜的行為,多個運動主體的互動及場景的多變等;在視頻的時序關系上,同個行為持續的時間有長有短,開始與結束的分界很模糊,本文在ResNeXt Block 的改進中采用的多時間尺度卷積核、對視頻進行序列編碼后采用自然語言處理的方式針對這個問題雖然有所改善,但無法有效解決對需要長時序關系推理、時效性要求高的行為識別任務中,未來還有很多問題有待研究。