行為識別筆記:C3D network-用於視訊特徵提取的3維卷積網路
注:本文首發在微信公眾號-極市平臺。如需轉載,請聯絡微信Extreme-Vision
卷積神經網路(CNN)近年被廣泛應用於計算機視覺中,包括分類、檢測、分割等任務。這些任務一般都是針對影象進行的,使用的是二維卷積(即卷積核的維度為二維)。而對於基於視訊分析的問題,2D convolution不能很好得捕獲時序上的資訊。因此3D convolution就被提出來了。3D convolution 最早應該是在[1]中被提出並用於行為識別的,本篇文章則主要介紹下面這篇文章 C3D[2],C3D network是作為一個通用的網路提出的,文章中將其用於行為識別,場景識別,視訊相似度分析等領域。
可以訪問C3D network的
2D 與 3D 卷積操作
首先簡要介紹一下2D與3D卷積之間的區別。a)和b)分別為2D卷積用於單通道影象和多通道影象的情況(此處多通道影象可以指同一張圖片的3個顏色通道,也指多張堆疊在一起的圖片,即一小段視訊),對於一個濾波器,輸出為一張二維的特徵圖,多通道的資訊被完全壓縮了。而c)中的3D卷積的輸出仍然為3D的特徵圖。
現在考慮一個視訊段輸入,其大小為
3D 卷積核引數的選擇
作者還對卷積核的尺寸進行了實驗研究,結果表面
C3D network 結構
基於3D卷積操作,作者設計瞭如上圖所示的C3D network結構。共有8次卷積操作,4次池化操作。其中卷積核的大小均為
實驗結果
接下來介紹一下C3D的實驗結果,作者將C3D在行為識別、動作相似度標註、場景與物體識別這三個方向的資料庫上進行了測試,均取得了不錯的效果。注意以下結果均為當時情況下的比較(2015年),從那時候到現在這些資料庫不知道又被刷了多少遍了。。
行為識別-Action Recognition
行為識別用的資料庫是UCF101,C3D+SVM的結果達到了85.2%。UCF101這個資料庫目前為止(2017年3月)看到最高的結果已經達到了96%左右。
動作相似度標註-Action Similarity Labeling
動作相似度標註問題的任務是判斷給出的兩段視訊是否屬於相同的動作。文章中使用的資料庫為ASLAN。C3D的效果超過了當時的state of the art 不少。
場景識別-Scene Recognition
場景識別問題主要使用了Maryland和YUPENN,也都達到了不錯的效果。
執行時間分析
下表中是C3D與其他一些演算法的速度比較。其中iDT是行為識別領域的非深度學習方法中效果最好的方法,可以見我之前的博文iDT演算法介紹。Brox指Brox提出的光流計算方法[3].
這幾部分我都跑過相關的實驗,其中光流計算(GPU版本)現在的速度可以達到20-25fps,我使用的光流計算程式碼的github地址為gpu_flow。表中C3D的速度應該是在視訊幀無重疊的情況下獲得的。將一段16幀的視訊作為一個輸入,則C3D一秒可以處理約42個輸入(顯示卡為1080, batch size選為50),換算成無重疊情況下的fps為672。可見C3D的速度還是非常快的。
總結
C3D使用3D CNN構造了一個效果不錯的網路結構,對於基於視訊的問題均可以用來提取特徵。可以將其全連線層去掉,將前面的卷積層放入自己的模型中,就像使用預訓練好的VGG模型一樣。
參考文獻
[1] Ji S, Xu W, Yang M, et al. 3D convolutional neural networks for human action recognition[J]. IEEE transactions on pattern analysis and machine intelligence, 2013, 35(1): 221-231.
[2] Tran D, Bourdev L, Fergus R, et al. Learning spatiotemporal features with 3d convolutional networks[C]//Proceedings of the IEEE International Conference on Computer Vision. 2015: 4489-4497.
[3] Brox T, Malik J. Large displacement optical flow: descriptor matching in variational motion estimation[J]. IEEE transactions on pattern analysis and machine intelligence, 2011, 33(3): 500-513.