1. 程式人生 > >【論文閱讀】Learning Spatiotemporal Features with 3D Convolutional Networks

【論文閱讀】Learning Spatiotemporal Features with 3D Convolutional Networks

【論文閱讀】Learning Spatiotemporal Features with 3D Convolutional Networks

這是一篇15年ICCV的論文,本篇論文提出的C3D卷積網路是3D卷積網路的里程碑,以3D卷積核為基礎的3D卷積網路從此發展起來。
論文地址:下載地址
基於pytorch的c3d模型程式碼:下載地址

簡介

文章認為一個有效的視訊描述子應該具備以下特點:

  1. 良好的泛化性(generic)
  2. 壓縮性好(compact)
  3. 計算效率高(efficient)
  4. 計算方法簡單(simple)

本文首先通過實驗說明了3D卷積網路在視訊的時空特徵提取方面是有效的,然後探索了最優的3D卷積核結構為3x3x3,提出了C3D卷積網路結構,最後在標準資料集上與其他方法做了比較。

正文

3D卷積與2D卷積的區別:

首先論文介紹了3D卷積與2D卷積的區別,如圖所示:
圖1. 3D卷積與2D卷積的區別
從上圖中可以看到,圖中省略了特徵圖的channel,所以2D卷積的結果是一張特徵圖,只包含高和寬,而3D卷積的結果是一個立方體,除了高和寬之外,還包含有時間維度。但是上圖沒有反映兩種卷積核內部的區別,我自己畫了下圖來更清晰地表達這兩種卷積核的內部結構的區別。
圖2. 2D卷積核與3D卷積核的內部區別從上圖中可以看到,對於2D卷積核,其大小為: C × h

× w C\times h\times w ,其中 C C 表示卷積核的通道數, h
h
w w 表示卷積核的高和寬。而對於3D卷積核,其大小為: t × C × h × w t\times C\times h\times w ,其中 t t 為3D卷積核的時間長度。所以3D卷積核與2D卷積核相比,其多了時間維度的卷積。

最優的3D卷積核尺寸:

然後文章通過實驗探索了最優的3D卷積核的尺寸,因為在[1]中表明,當時 3 × 3 3\times 3 尺寸的2D卷積核取得了非常好的效果,所以文章就將3D卷積核的高和寬定位 3 × 3 3\times 3 ,通過實驗探索卷積核最優的時間深度。同時作者設計了另一個實驗:為了設計能更好地組合時間資訊的3D卷積網路,作者改變3D卷積網路中不同層的卷積核的時間深度,實驗結果如下:
圖3. 卷積核時間尺寸的實驗救國

上圖是在UCF101上的實驗結果,首先看左圖,為探索3D卷積核時間深度的實驗結果。可以看到作者設定了4種固定尺寸的3D卷積核,分別為 1 × 3 × 3 1\times 3\times 3 3 × 3 × 3 3\times 3\times 3 5 × 3 × 3 5\times 3\times 3 7 × 3 × 3 7\times 3\times 3 ,實驗表明 3 × 3 × 3 3\times 3\times 3 尺寸的卷積核取得了最優的結果。然後看右圖,作者設定3種對比的網路結構,不同層的3D卷積核的時間深度分別為時間深度不變: 3 3 3 3 3 3-3-3-3-3 ,時間深度遞增: 3 3 5 5 7 3-3-5-5-7 ,時間深度遞減: 7 5 5 3 3 7-5-5-3-3 。實驗結果表明當卷積網路中所有的3D卷積核的時間深度一致,尺寸都為 3 × 3 × 3 3\times 3\times 3 時,得到的效果最好。

C3D的網路結構

受到當時GPU視訊記憶體的限制,作者設計了C3D網路結構,如下圖所示:
C3D的網路結構
該網路包含8個卷積層,5個池化層,2個全連線層和1個softmax輸出層。所有層的3D卷積核的尺寸為 3 × 3 × 3 3\times 3\times 3 ,步長為 1 × 1 × 1 1\times 1\times 1 。第一層池化層的尺寸為 1 × 2 × 2 1\times 2\times 2 ,步長為 1 × 2 × 2 1\times 2\times 2 ,其餘池化層的尺寸為 2 × 2 × 2 2\times 2\times 2 ,步長為 2 × 2 × 2 2\times 2\times 2 。文章認為不那麼過早地池化時間資訊,可以在早期階段保留更多的時間資訊。網路的輸入的視訊長度為16幀,輸入的視訊幀尺寸為 112 × 112 112\times 112

訓練細節

在sports-1M資料集上訓練時,首先從每一個視訊中隨機抽取5個2秒長的視訊段,然後視訊段的每一幀的尺寸被歸一化為 128 × 171 128\times 171 ,然後該視訊段被隨機地裁剪為 16 × 112 × 112 16\times 112\times 112 作為網路的輸入。使用了0.5機率隨機水平翻轉的資料增強的方法,使用隨機梯度下降法來優化,batch size設定為30,初始學習率為0.003,每經過150K次迭代學習率除以2,在第1.9M次迭代(大約13個epoch)的時候停止。

探索性的實驗分析

3D卷積網路的反捲積視覺化

文章首先根據[2]中提出的反捲積方法,將C3D第5層卷積層得到的feature map 反捲積視覺化,如下圖所示。
C3D反捲積結果
從上圖可以看到,文章認為在視訊的前幾幀,C3D主要關注的是視訊幀中的顯著性區域,在之後的幾幀中會跟蹤這些顯著變化的區域。其實[3]中也對3D卷積網路的feature map進行了反捲積視覺化,可以兩個結果對比著看。
個人目前的觀點:目前我感覺3D卷積網路對視訊中的運動變化區域敏感,但是容易受到複雜影響的干擾,所以需要大量的訓練資料使其對object的變化響應。自己的理解也可能有誤,如果你有自己的想法和觀點,歡迎一起討論。

C3D描述子

所謂的C3D描述子,就是C3D網路第一個全連線層輸出的特徵經過L2歸一化後的結果,文章對該描述子的做了實驗,表明該描述子有良好的壓縮性和泛化性。

壓縮性

作者使用PCA降維的方法對C3D描述子進行了降維,並與Imagenet特徵[4]和iDT特徵[5]做了比較,實驗結果如下圖所示。
在這裡插入圖片描述
可以發現C3D描述子還是由很好的壓縮性的,這對大規模快速視訊檢索很有幫助。

泛化性

這裡沒完全看明白,我的理解是從UCF101資料集中隨機抽取100K個視訊段,然後提取這些視訊段的Imagenet特徵和C3D特徵,對這些特徵使用t-SNE降維視覺化的方法,如下圖所示。
在這裡插入圖片描述
從上圖可以看出,C3D特徵相同類的特徵更加聚集,更容易區分,所以其泛化性更好。

其他

作者技術水平有限,可能會出現一些疏漏,如果您有任何疑問,請聯絡我。

[1] Simonyan, Karen, and Andrew Zisserman. “Very deep convolutional networks for large-scale image recognition.” arXiv preprint arXiv:1409.1556 (2014).
[2] Zeiler, Matthew D., and Rob Fergus. “Visualizing and understanding convolutional networks.” In European conference on computer vision, pp. 818-833. Springer, Cham, 2014.
[3] Varol, Gül, Ivan Laptev, and Cordelia Schmid. “Long-term temporal convolutions for action recognition.” IEEE transactions on pattern analysis and machine intelligence 40, no. 6 (2018): 1510-1517.
[4]Donahue, Jeff, Y. Jia, O. Vinyals, J. Hoffman, N. Zhang, E. Tzeng, and T. Darrell. “A deep convolutional activation feature for generic visual recognition. arXiv preprint.” arXiv preprint arXiv:1310.1531 (2013).
[5]Wang, Heng, and Cordelia Schmid. “Action recognition with improved trajectories.” In Proceedings of the IEEE international conference on computer vision, pp. 3551-3558. 2013.