3D卷積入門 | 多論文筆記 | R2D C3D P3D MCx R(2+1)D

文章轉自微信公衆號:【機器學習煉丹術】。有問題或者需要加入粉絲交流羣可以私信作者~
參考目錄:


【前前沿】:某一次和粉絲交流的時候,收穫一句話:

人點亮技能書,不是一次性電量的。是反覆折騰,反覆批判,反覆否定與肯定,加深了記憶軸。 ---某位粉絲

0 前言

看到這篇論文是因爲之前看到一篇Nature上的某一篇醫療影像的論文中用到了這幾個算法,R3D,MC3和R2+1D的3D卷積的算法。因爲對3D卷積的算法瞭解比較侷限,所以開始補一補這方面的算法。

1 R2D

這個就完全是把一個視頻當成一個圖片來處理,一個視頻假設有10幀,那麼就把這個視頻當成一個10通道的圖片進行處理,如果是10幀的彩色圖片,那麼這個就是30通道的圖片。

正常情況下,一個視頻是有四個維度的:
\(channel \times time \times h \times w\)

假設有一個10幀的1080x960的彩色視頻,那麼是個視頻轉換成張量應該是:

\(3\times 10 \times 960\times 1080\)

但是對於R2D算法來說,這個視頻的張量爲:

\(30 \times 960 \times 1080\)

這樣的話,就完全的放棄了時間的信息。當然,與這個R2D類似的算法,還有一個叫做f-R2D的算法,這個f-R2D是對每一幀進行2D的操作,然後在最後全局池化層去融合全部的信息,某種角度上也是犧牲了時間連續的信息。

  • f-R2D是frame-based R2D的縮寫。

2 C3D

這個就是使用了3D卷積的方法,對於3D卷積構建的網絡,需要注意的就是池化層的時候需要注意stride的參數是3個,不僅有w和h的步長,還要考慮時間維度上的步長。

在C3D的論文中給出了這樣的一個網絡結構:

8個卷積層和2個全連接層,其中包含5個池化層(filter:2×2×2,stride: 2×2×2,除了第一個池化層的filter:1×2×2,stride: 1×2×2)

2.1 R3D

R2D和C3D我們都有所瞭解,那麼什麼是R3D呢?這個其實就是使用了Resnet網絡的C3D罷了,由此可見,這個R3D的R的含義是Resnet網絡的意思。

3 P3D

這個類似2D網絡中的googleNet提出的inception中的概念,將7x7的卷積核拆分成1x7和7x1的兩個。

P3D是Pseudo-3D僞3D卷積的含義,把3x3x3的卷積核拆分成1x3x3的空間卷積和3x1x1的時間卷積。這樣做的好處有:

  • 減少計算量,這個是肯定的
  • 可以使用2D圖像經典的卷積模型的訓練參數作爲3D模型的空間卷積層參數的初始化

P3D網絡提出了3個不用的block,講道理我覺得這三個差別不大:

再多說兩句好了,P3D卷積把3D卷積解耦成2D的空間卷積和1D的時間卷積,這樣可以防止在resnet的殘差模塊中,實現遷移學習:

關於這P3D的ABC三個樣式的效果論文中也給出了結果:

效果最好的是P3D Resnet,這個是對三個模塊的混合,混合順序是:

P3D-A->P3D-B->P3D-C

但是我還是覺得這個有些冗餘,沒有什麼道理。

4 MCx

這個方法是結合了R2D和R3D(C3D)兩種方法,MC是Mixed Convolution混合卷積的含義。我們先看一下網絡結構對比圖:

  • 這個的MCx的結構是前面3層是2D卷積,之後跟上兩個3D卷積,因爲是有3層的2D卷積,之後才換成3D卷積的,所以這個叫做MC3;
  • 後面的rMCx是和MCx相反的,是先3D卷積,然後再2D卷積,這裏是rMC3;
    先2D還是3D取決於:你認識時間的信息處理是依賴於淺層網絡還是深層的網絡。論文中給出的實驗結果表明,時間信息應該更加依賴於深層的網絡,MCx的效果更好一些。

5 R(2+1)D

這個和MCx同屬於混合卷積,用2D卷積和1D卷積來逼近3D卷積。

其實從圖中來看,這個和P3D-A沒什麼區別,其實我也覺得沒什麼區別。硬要說的話:

  • 就是P3D的第一層是2D卷積,之後纔是P3D模塊,而R(2+1)D的網絡是從一開始都是這種模塊的;
  • R(2+1)D模塊計算了超參數,通過增加通道數,來讓分解之後的R(2+1)D模型和之前的3D模型的參數量相同。這裏是控制哪裏的通道數呢?是2D卷積之後,要輸入到1D時間卷積的那個特徵圖的通道數,從上圖中可以看到\(M_i\)這個參數。這個參數可以通過這樣計算:
    \(M_i=floor(\frac{td^2N_{i-1}N_i}{d^2N_{i-1}+tN_i})\)

總之這個的好處,在論文中是跟C3D進行比較的(並沒有和P3D進行比較):

  1. 第一就是兩個子卷積之間多出來一個非線性操作,和原來同樣參數量的3維卷積相比double了非線性操作,增強了網絡的表達能力。
  2. 第二個好處就是時空分解讓優化的過程也分解開來,事實上之前發現,3維時空卷積把空間信息和動態信息擰巴在一起,不容易優化。2+1維卷積更容易優化,loss更低。

上個圖:


總結:總體來說3D卷積的論文是以實驗爲主,用實驗結果來數結論。儘可能的利用2D預訓練模型的參數。

參考論文:

  1. C3D:Learning Spatiotemporal Features with 3D Convolutional Networks
  2. P3D:Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks
  3. R(2+1)D:A Closer Look at Spatiotemporal Convolutions for Action Recognition
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章