CVPR2018 | R(2+1)D結構:視訊動作識別中的時空卷積深度探究
摘要
本文討論了針對視訊分析的不同形式的時空卷積,並研究了其在動作識別方面的效果。本文的靈感來源是,對單幀視訊進行2D 卷積仍然可以獲得接近3D 時空卷積方法中state-of-the-art的結果本文首先經驗性展示3D CNN 比2DCNN 在殘差學習框架中的精確度優勢,然後展示了將3維時空卷積分解成單獨的時間和空間卷積可以在精確度上漲點許多。並通過實驗和經驗,設計了一種新的時空卷積塊“R(2+1)D”。這種新卷積塊在資料集如Sports-1M,Kinetics,UCF101,HMDB51上可以取得甚至超過state-of-the-art。
引言
深度學習對靜態影象領域產生了深遠影響,但在視訊領域,深度學習方法並沒有吊打最好的傳統手提特徵工程(
但是話說回來,之前很多3D CNN模型實驗結果同樣表明其在相同網路深度下在大規模資料集下效果還是優於2D CNN模型的。
基於這些結果,本文打了個太極,安利了介於2D,3D之間的兩款時空卷積新品。
要安利的第一款是一種混合型卷積(MixedConvolution
第二款要安利的是2+1維卷積塊,思路很明確,就是把3維卷積操作分解成兩個接連進行的子卷積塊—2維空間卷積和1維時間卷積。
#相關工作
文章中提及許多視訊理解相關工作,並且向手提特徵工程IDT致敬,CVPR2017的
先是Du Tran 的C3D(Learning Spatiotemporal Features with 3D Convolutional Networks)
首先介紹一下3D convolution:
(a)是2維卷積,(b)是3維卷積。3維卷積是通過堆疊多個連續的幀組成一個立方體,然後在立方體中運用3D卷積核。在這個結構中,卷積層中每一個特徵map都會與上一層中多個鄰近的連續幀相連,因此捕捉運動資訊。一個卷積map的某一位置的值是通過卷積上一層的三個連續的幀的同一個位置的區域性感受野得到的。假設輸入的是RGB視訊片段,(b)中時間維度上卷積核大小為3,並且在同一個顏色通道上共享權值。以下是C3D模型的網路結構。
接著說一下和本文提出的R(2+1)D十分相似的網路P3D(Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks),這個網路安利了3種3維殘差卷積塊,如下圖,
分別是空間卷積串聯時間卷積,時間和空間卷積平行,已經空間卷積後接時間卷積同事和殘差塊輸出有skip connection。P3D網路隨網路加深交錯使用這三種塊。
與P3D相比,本文安利的R(2+1)D有以下不同:整個網路只使用一種殘差塊;並且沒有bottleneck;R(2+1)D進行了超引數設計,使得3維卷積分解前後引數量一致。
#視訊理解中的各種卷積殘差塊
本小節討論時空卷積殘差塊各變種。本文所用殘差塊均為vanilla型別(沒有bottleneck結構),每個殘差塊內有兩個卷積層。輸入視訊片段尺寸是3×L×H×W,L是輸入視訊幀數,H,W是各幀高和款,視訊片段是RGB,3指的是RGB3通道。第i個卷積塊輸出表示為
本文的網路結構是從淺層到深層殘差塊一把梭,然後接一個全域性池化層和全連線層來分類。
R2D:2維卷積在視訊中一把梭
2維卷積殘差塊處理視訊,就忽略了視訊的時間順序,把L當作通道處理。所以2維模型就是把輸入的4維張兩reshape為3維張量:3L×H×W.
f-R2D:基於幀的2維卷積
另一種2維卷積方法用一系列的2維卷積殘差塊來處理獨立的各幀,同一個卷積核作用到所有L個幀上。用時空GAP層融合來自各幀的資訊,我們稱這種2維卷積維framed-based R2D。
R3D:3維卷積
3維卷積保留了時間資訊,並可以在層與層之間傳播。3維卷積殘差塊的輸出則是4維張量,大小是N×L×H×W,每一個卷積核也是4維的,尺寸是N‘×t×d×d,t是時間維度上的跨度,幀數。N’是上一層輸出的3維卷積核個數。網路結構如下圖
MCx&rMCx:2維,3維混合卷積
先跑出一個猜想:動作建模在淺層是有用的,但在高階語義抽象層(深層),動作建模是不必要的。所以就有了混合型結構如下圖
當然作為對比,還是有一種可能的情況就是時間資訊在深層仍然很重要,所以就在淺層空間建模,深層時空建模加入時間資訊。這種結構稱為rMCx,結構如下圖
R(2+1)D
把3維時空卷積分解成2維空間卷積和1維時間卷積,那麼卷積核大小變成了N’×1×d×d+M×t×1*1。超引數M決定了訊號在時、空卷積之間投影的子空間個數。為了讓(2+1)維卷積塊引數和3維卷積塊引數量一致,
將3維時空卷積分解成(2+1)維卷積的圖示如下(這裡輸入為單通道)
這個分解的好處,第一就是兩個子卷積之間多出來一個非線性操作,和原來同樣引數量的3維卷積相比double了非線性操作,給網路擴容。第二個好處就是時空分解讓優化的過程也分解開來,事實上之前發現,3維時空卷積把空間資訊和動態資訊擰巴在一起,不容易優化。2+1維卷積更容易優化,loss更低。
結構如下圖
實驗
基準資料集是Kinetics和Sports-1M,它們足夠從頭訓練深度網路。當然一個好的視訊模型還要支援遷移學習,所以本文在一說兩個資料集上pretrain,在UCF01和HMDB51資料集上finetune.
####網路框架
我們實驗所用網路全部是殘差卷積塊。下表給出了3D ResNet網路明細
兩組網路是3D ResNet-18,3D ResNet-24.網路輸入統一為3×L×112×112。在conv1,stride=(1,2,2),在conv3_1,conv4_1,conv5_1,stride=(2, 2, 2).
我們以R3D模型維baseline,通過將3維卷積替換維2維卷積,先時空再空間和先空間再時空混合卷積,以及分解的(2+1)維卷積,獲得R2D,MCx,rMCx,和R(2+1)D網路結構。這裡有一個小問題,替換3維為2維過程中,時間維度上的跨步就無法實現,因為沒有了時間卷積。這種差別體現在最後一層卷積層的輸出Tensor和原3維卷積模型最後一層卷積層輸出的Tensor時間尺寸不一致。不過,我們的網路在卷積層之後接global spatiotemporal average pooling,然後傳入全連線層。卷積層輸出的時間、空間尺寸沒有影響。
訓練和測試
資料預處理
首先在資料集Kinetics上,劃分出訓練集和測試集,公平起見所有模型都統一成18層,在相同輸入上從頭開始訓練。視訊幀scale到128×171,然後每個視訊片段都是用一個112×112的視窗隨機crop產生。對視訊進行時間抖動(temporal jittering),然後隨機選取連續L幀。時間抖動的方法是把epoch size設為1M,而資料集只有0.24M個視訊,故沒一epoch就有了時長增廣。
訓練
初始學習率設為0.01,沒10epoch 除以10,前10 epoch 使用了warm-up方法,一種分散式同步 SGD ,分散式同步 SGD 通過將小批量 SGD(SGD minibatches)分發到一組平行工作站而提供了一種很具潛力的解決方案。然而要使這個解決方案變得高效,每一個工作站的工作負載必須足夠大,這意味著 SGD 批量大小會有很大的增長(nontrivial growth)。訓練了45epoch。每一卷積層都使用了BN。使用caffe2框架。
實驗對比
從這些結果中我們可以推斷出一下幾點:
- F-R2D,R2D 這些2維卷積和R3D或者MCx,rMCx之間是有顯著差距的(2維較差),這個差距會在輸入幀數為16時變大。說明動作建模對動作識別來說是十分重要的。(所以本文並沒有挑戰這一觀點)
- 分解的時空卷積效果要比3維卷積和混合卷積好,更比2維卷積模型效果好。
- 在較長輸入片段進行時間建模更加有效,但不能過長。
- 隨著網路深度正增加,R(2+1)D比R3D更容易訓練。
水平有限,歡迎大家斧正
HongYuSuiXinLang
Zhejiang University
Email: [email protected]