天天看點

《Learning Spatiotemporal Features with 3D Convolutional Networks》概述《Learning Spatiotemporal Features with 3D Convolutional Networks》概述

《Learning Spatiotemporal Features with 3D Convolutional Networks》概述

寫在前面:

最近閱讀了本篇論文,這篇論文發表在ICCV’15上,提出了經典的C3D網絡結構,這是一種基于3D卷積的方式能夠同時提取時間以及空間上的特征,以下是對文章的整體概述,如有錯誤的地方,歡迎留言指正。

一、主要貢獻:

  1. 3D ConvNets 比起 2D ConvNets更容易學習時空特征;
  2. 在C3D模型結構中使用一個3x3x3的卷積核應用在所有的layers層中表現的最好;
  3. C3D模型的表現優異在實驗的任務中。

作者認為有效的視訊描述符應該具有四個屬性(C3D具有的)

  • 良好的泛化性(generic):可以很好的表示不同類型的視訊的同時具有區分性;
  • 很好的壓縮性(compact):結構精簡但功能健壯;
  • 高效性(efficient);
  • 結構簡單(simple);

二、網絡結構:

首先我們來看一下3D卷積和2D卷積的差別,下圖為論文中的原圖:

《Learning Spatiotemporal Features with 3D Convolutional Networks》概述《Learning Spatiotemporal Features with 3D Convolutional Networks》概述

論文中的圖檔似乎不是很清晰的明白3D卷積是如何工作的,下圖引用自知乎上的圖檔,左圖為2D卷積,右圖為3D卷積:

《Learning Spatiotemporal Features with 3D Convolutional Networks》概述《Learning Spatiotemporal Features with 3D Convolutional Networks》概述

       

《Learning Spatiotemporal Features with 3D Convolutional Networks》概述《Learning Spatiotemporal Features with 3D Convolutional Networks》概述

從圖中可以看出,3D卷積比2D卷積多一個時間深度,3D卷積的步驟是可以在時間次元上滑動而2D卷積則沒有時間次元。上面進行卷積操作的時間次元為3,即對連續的三幀圖像進行卷積操作,上面的 3D卷積是通過堆疊多個連續的幀組成一個立方體,然後在立方體中運用3D卷積核。在這個結構中,卷積層中每一個特征map都會與上一層中多個鄰近的連續幀相連,是以捕捉運動資訊,有一點要注意的是3D卷積在時間的次元上是共享權重的,而不要由于卷積核是3維的就類比多通道(RGB)的2D卷積,3D的卷積核是在時間次元上滑動的,是以共享權重。

至于為什麼3D卷積有效,作者指出2D ConvNets在每次卷積運算後都會丢失輸入信号的時間資訊,而3D卷積這保留了時間的資訊。

之後作者通過實驗分别對時間depth-1(相當于2D)depth-3、depth-5、depth-7做實驗對比探究何種時間深度以及epoch是最為高效的,随後發現depth-3是最為有效,由此确定卷積核的大小為3x3x3,下圖為實驗對比:

《Learning Spatiotemporal Features with 3D Convolutional Networks》概述《Learning Spatiotemporal Features with 3D Convolutional Networks》概述

C3D的網絡結構:

《Learning Spatiotemporal Features with 3D Convolutional Networks》概述《Learning Spatiotemporal Features with 3D Convolutional Networks》概述

網絡設定:

  1. 首先從每一個視訊中随機抽取5個2秒長的視訊段;
  2. 所有的視訊幀下采樣到128×171,大概是原始視訊分辨率的一半;
  3. 視訊分割為不重疊的16幀視訊片段,作為網絡的輸入;
  4. 輸入次元為3×16×128×171,訓練階段再對圖像進行随機裁剪,得到尺寸為 3×16×112×112的資料輸入;
  5. 網絡有5層卷積層,5層下采樣層(連接配接在5層卷層),2層全連接配接層,1層softmax層。卷積層的卷積核數量如上圖所示;
  6. 每一個卷積核 d ∗ k ∗ k d*k*k d∗k∗k , d d d 表示核的時域深度,卷積核的步長設定為1,所有的pooling層尺寸為2×2×2(第一層pooling除外,第一層為1×2×2);
  7. 所有的全連接配接層有2048個單元,mini-batch為30,初始化的學習率為0.003;每4個epoch過後,學習速率除以10,疊代16個epoch後結束。

之後的篇幅就是反卷積實作可視化以此來觀察3D卷積的描述符,以及在動作識别等任務上的實驗對比,如果感興趣的話可以閱讀原文,并且作者給出了代碼位址: http://vlg.cs.dartmouth.edu/c3d

繼續閱讀