Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks論文學習

Abstract

CNN 在圖像識別領域是非常有效。但是用一個CNN學習時空視頻特徵就沒那麼簡單了。有一些研究指出了,3D卷積在獲取視頻時空維度信息上是有幫助的。但是,3D CNN 要是非常深的話,就會非常消耗算力和內存。那麼爲什麼不在3D CNN中使用現成的2D卷積呢?這篇論文針對殘差網絡設計了 bottleneck 構建模塊的多個變體,在空間域用1×3×31\times 3\times 3卷積濾波器(與2D CNN等價)加上3×1×13\times 1\times 1卷積來模擬3×3×33\times 3\times 3卷積,在時域相鄰的特徵圖上構建時間連接關係。此外,作者提出了一個新的網絡結構,叫做 Pseudo-3D 殘差網絡(P3D ResNet),在ResNet的不同位置使用了不同的殘差模塊變體,這是因爲網絡結構越深、越多樣,網絡的性能就越好。相較於3D CNN和基於幀的2D CNN,P3D ResNet 在 Sports-1M 視頻分類數據集上取得了明顯的提升,分別是5.3%5.3\%1.8%1.8\%。作者進一步在5個不同的基準和3個不同的任務上驗證了P3D ResNet預訓練模型的泛化能力,證明了它的性能非常優秀。

在這裏插入圖片描述

1. Introduction

今天的數字內容是多媒體的:文本、語音、圖像、視頻等。因着移動設備的興起,圖像和視頻在互聯網用戶之間成爲一個新的交流方式。這就促進了多媒體信息理解的技術的發展。這些技術發展的基礎就是特徵學習。最近CNN的崛起展現了其在圖像領域非常強的視覺特徵學習的能力。例如,在ImageNet測試集上,殘差網絡的集成方法取得了3.57%3.57\%的top-5錯誤率,甚至要比人的5.1%5.1\%還低。但是,視頻是一個時間幀序列,變化和複雜度都比較高,造成時空特徵學習比較困難。

對視頻中的時空信息進行編碼,一個自然的方法就是將2D卷積核擴展至3D卷積,訓練一個新的3D CNN。這樣,網絡就不僅可以接觸到每幀畫面裏的視覺樣貌,也可以接觸到連續幀中的時間變化。但是3D CNN 的訓練非常消耗算力,與2D CNN相比模型大小也呈指數增長。以11層的C3D CNN爲例,模型大小是321 MB,這甚至比152層的2D殘差網絡(235 MB)還要大,使得它的訓練極其困難。更重要的是,在Sports-1M數據集上對ResNet-152直接進行微調,效果要比在視頻上訓練的C3D還要好,如圖1所示。另一個產生時空視頻特徵的方法就是在RNN上對多幀特徵使用池化策略,這些特徵通常是2D CNN中最後一個池化層或全連接層的激活。但是,這類方法只在高層級特徵之間構建了時間聯繫,而沒有充分利用低層級之間的聯繫,如角點和邊緣信息。

本文證明,通過設計bottleneck構建模塊,使用時間和空間卷積濾波器,上述問題就可以得到緩解。每個模塊的核心組建是一個1×3×31\times 3\times 3卷積層和一個3×1×13\times 1\times 1卷積層的組合,它們可以是平行結構,也可以是級聯結構,用它來代替標準的3×3×33\times 3\times 3卷積層。這樣模型大小就大幅度縮減了,而2D CNN在圖像領域的優勢也可以得到充分發揮,用2D CNN中的3×33\times 3卷積來初始化1×3×31\times 3\times 3卷積核。作者提出了一個新的 Pseudo-3D 殘差網絡(P3D ResNet),在網絡的不同位置上擺放不同的殘差模塊,增強網絡的結構多樣性。這樣在 P3D ResNet 層與層之間就構建了時間聯繫,學到的視頻特徵包含了與目標物體、場景和動作相關的信息,使之對不同的視頻分析任務更加通用。

本文主要貢獻是,提出使用bottleneck構建模塊來模擬3D卷積,節省算力和資源,也可以看到作者是如何放置不同的殘差模塊來學習更深的網絡。此外作者也提出了P3D殘差網絡來學習視頻特徵。

2. Related Work

視頻特徵學習方法主要可以分爲兩類:人工方法和基於深度學習的方法。

人工特徵學習方法通常一開始就檢測時空興趣點,然後通過局部特徵來描述這些興趣點。在這個體系中,人們先後提出了 Space-Time Interest Points, Histogram of Gradient and Histogram of Optical Flow, 3D HOG和SIFT-3D,延伸圖像領域的特徵表示,表示三維中的時間維度。最近Wang等人提出了密集軌跡特徵,在不同的尺度上對每一幀的局部區塊進行密集採樣,然後在密集的光流場上追蹤它們。

深度學習模型是視頻特徵學習中最新的方法。Karparthy等人將基於CNN的幀特徵表示堆疊起來,然後利用時空卷及來學習視頻特徵。在[25]中,提出了 two-stream 結構,在畫面幀和光流上分別使用CNN結構。這個結構後來又被進一步拓展,人們使用了 multi-granular 結構、卷積融合、key-volume mining和時間分割網絡等來學習視頻特徵。Wang等人[35] 提出的方法,在時空tube上對local ConvNet responses進行池化,作爲視頻描述器,responses的中心爲目標的軌跡。然後使用 Fisher vector 將這些視頻描述器編碼爲全局視頻特徵。最近 LSTM-RNN網絡也有用於對視頻時間的動態進行建模。在[9,37]中,使用了時間池化和stacked LSTM網絡將幀級的特徵(光流圖像)組合起來,發現其中的長期時間關係,學習更加魯棒的視頻特徵。Srivastava等人[28]進一步將視頻特徵學習任務表示爲一個 autoencoder 模型,基於LSTM的 encoder和decoder。

可以發現,上述基於深度學習的方法將視頻作爲一個幀/光流圖像序列來學習視頻特徵,而連續幀之間的時域變化並沒有得到完全利用。爲了解決這個問題,Ji等人提出了3D CNN,直接學習短視頻的時空特徵。Tran 等人設計了一個11 層 3D CNN(C3D),利用大規模監督視頻數據集,在16幀的視頻片段上學習視頻特徵。但是,3D CNN 結構的算力消耗和內存使用過高,很難去有效訓練一個3D CNN。本文方法與之不同,提出用2D空間卷積加上1D時域聯繫來模擬3D卷積,更加節約算力和內存,以此來學習視頻特徵。

3. P3D Blocks and P3D ResNet

這部分,作者首先介紹了用於視頻特徵學習的3D卷積,它可以自然地解耦爲2D空間卷積來編碼空間信息,和1D時域卷積濾波器。然後在殘差網絡中設計了bottleneck構建模塊,叫做Pseudo-3D(P3D),它使用了空間和時間卷積濾波器。最後,作者提出了一個新穎的Pseudo-3D 殘差網絡(P3D ResNet),在不同位置有不同的P3D模塊,結構類似ResNet,並通過大量實驗,將其與多個變體進行了性能和時間效率在這裏插入圖片描述的比較。

3.1 3D卷積

給定一個大小是c×l×h×wc\times l\times h\times w的視頻片段,c,l,h,wc,l,h,w分別是通道數、片段長度、每幀的高度和寬度。對時空信息進行編碼的最自然的方式就是使用3D卷積。3D卷積同時對空間信息進行建模,和2D濾波器一樣,然後在幀之間構建時間聯繫。爲了簡潔,作者將3D卷積濾波器大小表示爲d×k×kd\times k\times kdd是卷積核時域的深度,kk是卷積核空間大小。因此,假設我們的3D卷積核大小是3×3×33\times 3\times 3,它可以自然地解耦成1×3×31\times 3\times 3卷積核和3×1×13\times 1\times 1卷積核,前者等價於空間域上的2D CNN,後者類似時域上的1D CNN。這樣一個解耦的 3D 卷積可以看作爲Pseudo 3D CNN,它不僅大幅度降低了模型大小,而且可以在圖像數據上預訓練2D CNN,使得Pseudo 3D CNN能夠更充分地使用圖像中的環境和目標信息。

3.2 Pseudo-3D Blocks

受殘差網絡的啓發,作者設計了多個新的構建模塊,叫做Pseudo-3D(P3D)模塊,代替2D殘差單元,對視頻進行時空編碼。然後,作者回顧了殘差單元的基本設計。最後介紹了每個P3D模塊的bottleneck構建結構。

殘差單元。殘差網絡由多個殘差單元構成,每個殘差單元可以由xt+1=h(xt)+F(xt)x_{t+1} = h(x_t) + F(x_t) 給定,其中xtx_txt+1x_{t+1}表示第tt個殘差單元的輸入和輸出,h(xt)=xth(x_t)=x_t是恆等映射,FF是非線性的殘差函數。因此上述等式可以重寫爲:

(I+F)xt=xt+Fxt:=xt+F(xt)=xt+1(I+F) \cdot x_t = x_t + F\cdot x_t := x_t + F(x_t) = x_{t+1}

其中,FxtF\cdot x_t 表示在xtx_t上進行殘差函數FF。殘差網絡的思想就是利用單元的輸入xtx_t作爲參照,學習殘差函數FF,它通過短路連接實現,而不是沒有參照地直接學習非線性函數。

P3D Blocks Design 爲了將ResNet的 2D 殘差單元改造爲編碼時空視頻信息的3D結構,作者遵循了3.1節中提到的Pseudo 3D的原則,對殘差網絡中的殘差單元進行修改,設計了多個Pseudo 3D模塊。但有兩個問題我們需要考慮。首先,空間維度上的2D濾波器和時間維度上的1D濾波器應該直接還是間接地發揮影響。兩類濾波器直接影響的意思就是,空間2D濾波器的輸出作爲時域1D濾波器的輸入(以級聯的方式)。間接影響就是每類濾波器都有一個單獨的path(即平行的結構)。第二個問題就是,這兩類濾波器是否應該直接影響最終的輸出。這樣,直接影響就是每類濾波器的輸出直接連接到最終的輸出。

基於這兩個設計問題,作者設計了3個不同的P3D模塊,如圖2所示從P3D-A到P3D-C。其結構的細節比較如下:

在這裏插入圖片描述

(1) P3D-A:將時域1D濾波器(T)放在空間2D濾波器(S)之後,以級聯的方式堆疊結構。因此,這兩類濾波器能夠直接影響到彼此,因爲它們在同一條path內,而只有時域1D濾波器是直接連接到最終輸出的,

(I+TS)xt:=xt+T(S(xt))=xt+1(I+T\cdot S)\cdot x_t := x_t + T(S(x_t)) = x_{t+1}

(2) P3D-B:第二個設計與第一個相似,只是在兩個濾波器之間採用了間接影響,它倆在不同的pathways上,以平行的方式。儘管SSTT之間沒有直接的影響,最終的輸出是將這兩個直接彙總得到,可以表示爲:

(I+S+T)xt:=xt+S(xt)+T(xt)=xt+1(I+S+T)\cdot x_t := x_t + S(x_t) + T(x_t) = x_{t+1}

(3) P3D-C:最後一個設計是上述兩個的折中,在S,TS, T和最終的輸出之間同時建立直接的影響。爲了讓SS和最終的輸出之間有直接聯繫,作者在SS和最終輸出之間建立了一個短路連接,這樣

(I+S+TS)xt:=xt+S(xt)+T(S(xt))=xt+1(I+S+T\cdot S)\cdot x_t := x_t + S(x_t) + T(S(x_t)) = x_{t+1}

Bottleneck 結構。在2D殘差單元裏面,我們用 bottleneck 設計來降低計算複雜度。如圖3(a)所示,它沒有用空間2D濾波器(3×33\times 3卷積),而是用了三層的殘差單元,包含1×1,3×3,1×11\times 1,3\times 3,1\times 1卷積,第一個和最後一個1×11\times 1卷積層分別用於降低和還原輸入樣本的維度。這樣的設計將中間的3×33\times 3卷積作爲bottleneck,輸入和輸出的通道都較小。因此,作者延續了這個簡潔的方法,在P3D 模塊中也借鑑了 bottleneck 設計。和它本質相似,對於每個只含有一個空間2D濾波器(1×3×31\times 3\times 3卷積)和一個時域1D濾波器(3×1×13\times 1\times 1卷積)的P3D模塊,作者在path的兩端各增加了一個1×1×11\times 1\times 1卷積,分別用於降低和還原維度。這樣我們就減少了空間2D和時域1D濾波器的輸入、輸出維度。P3D模塊的所有 Bottleneck 的細節結構如圖3所示。

3.3 Pseudo-3D ResNet

爲了驗證這三個P3D模塊的優勢,作者首先設計了三個P3D 殘差網絡的變體,即 P3D-A ResNet, P3D-B ResNet, P3D-C ResNet,將一個50層 ResNet 裏的殘差單元全部替換爲某一個 P3D 模塊。標準ResNet-50和三個變體之間的性能和速度比較後面會給出。然後作者提出了一個P3D ResNet 的完全版本,爲了增加結構多樣性,作者將三個P3D模塊混合使用,替換所有的殘差模塊。

在這裏插入圖片描述

P3D ResNet 變體之間的比較 該比較是在UCF101 視頻動作識別數據集上進行的。ResNet-50 在UCF101視頻數據上進行了微調。輸入大小是224×224224\times 224圖像,進行了隨機裁剪至240×320240\times 320視頻幀。而且,作者凍結了除第一層之外所有的 Batch Normalization 層的參數,增加了一個 dropout 層,dropout rate 爲0.9,降低過擬合。微調好 ResNet-50之後,網絡會對每一幀預測一個分數,然後將一個視頻裏的所有幀的分數加起來,求得的平均值就是該視頻的分數。3 個 P3D ResNet 變體都用 ResNet-50 初始化,除了時域卷積,它是在UCF101上做了進一步的微調。對於每個P3D ResNet 變體,輸入視頻片段的維度被設爲16×160×16016\times 160\times 160,它是從16×182×24216\times 182\times 242的不重疊的視頻片段上隨機裁剪得到的。每一幀/視頻片段都做了水平翻轉,進行數據增強。在訓練階段,每個mini-batch 是128幀/視頻片段,它是通過多GPU並行實現的。網絡的參數通過標準SGD優化的,初始學習率爲0.001,每3000個迭代就除以10,。訓練一共進行了7500個迭代。

表1列出了 ResNet-50和Pseudo-3D ResNet變體在UCF101上的性能和速度。與ResNet-50相比,三個P3D ResNet變體都展現了更優的性能,模型大小要稍微大一些。該結果基本顯示了利用時空信息的P3D模塊是有優勢的。而且,P3D ResNet變體在速度上要更快,可以達到每秒8.69.08.6\sim 9.0個視頻片段。

混合不同的P3D模塊。受結構多樣性的啓發,作者設計了一個P3D ResNet 的完全版本,在結構中混合使用不同的P3D模塊,增強結構多樣性,如圖4所示。作者將殘差單元替換爲一系列的P3D模塊,順序是P3DAP3DBP3DCP3D-A \rightarrow P3D-B\rightarrow P3D-C。表1詳細介紹了完全版本的性能和速度,它的準確率要比三種變體分別高0.5%,1.4%,1.2%0.5\%,1.4\%,1.2\%,表明增加結構多樣性可以有效提升網絡性能。

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章