1. 程式人生 > >[行為識別] Two –Stream CNN for Action Recognition in Videos

[行為識別] Two –Stream CNN for Action Recognition in Videos

這篇文章發表於2014 NIPS。也是牛津大學產出的。在這篇文章出來之前其實也有人嘗試用深度學習來處理行為識別,例如李飛飛團隊【Large-scale video classification with】通過疊加視訊多幀輸入到網路中進行學習,但是不幸的是這種方法比手動提取特徵更加糟糕。當這篇文章出來以後才意味著深度學習在行為識別中邁出了重大的一步。

一、前言

這裡主要闡述了論文的三個主要貢獻點。

  • 首先,論文提出了two-stream結構的CNN,由空間和時間兩個維度的網路組成。
  • 其次,作者提出了利用網路訓練多幀密度光流,以此作為輸入,能在有限訓練資料的情況下取得不錯的結果。
  • 最後,採用多工訓練的方法將兩個行為分類的資料集聯合起來,增加訓練資料,最終在兩個資料集上都取得了更好的效果。(作者提到,聯合訓練也可以去除過擬合的可能)

二、網路結構

視訊天生的可以分為空間和時間兩個部分。空間部分,每一幀代表的是表面資訊,比如物體、場景等等。而時間部分資訊是指幀之間的運動,包括攝像機的運動或者目標物體的運動資訊。所以網路相應的由兩個深度網路組成,分別處理時間與空間的維度。

每個網路都是由CNN和最後softmax 打分組成。最後的softmax的fusion主要考慮了兩種方法:平均,在堆疊的softmax上訓練一個SVM。網路結構圖如下所示。

三、光流卷積網路

在網路中,時間部分,以連續多幀之間光流場作為輸入。因為這種輸入能有效的描述視訊幀之間的運動,所以會讓識別更加容易。

3.1 卷積網路輸入方式

作者在這裡討論了幾種輸入方式,雖然都是計算多幀之間光流場。

3.1.1 光流棧(Optical flow stacking

光流棧(Optical flow stacking),或者叫做光流的簡單疊加。簡單的來說就是計算每兩幀之間的光流,然後簡單的stacking。

我們假設考慮做動作的分類(行為識別主要包含兩個方向,一個是動作分類,給出一個視訊截斷,判斷視訊的動作類別,或者稱為offline。 另一個就是動作識別,給出一個自然視訊,沒有進行任何的裁剪,這個時候需要先知道動作的開始時間和結束時間,然後還要知道動作的類別)。 考慮對一小段視訊進行編碼,假設起始幀為T,連續L幀(不包含T幀)。計算兩幀之間的光流,最終可以得到L張光流場,每張光流場是2通道的(因為每個畫素點有x和y方向的移動)。

最後,我們將這些光流場輸入,得到相應的特徵圖。

3.1.2 軌跡疊加(Trajectory stacking)

顧名思義,軌跡疊加就是假設第一幀的某個畫素點,我們可以通過光流來追蹤它在視訊中的軌跡。而簡單的光流場疊加並沒有追蹤,每個都是計算的某幀T+1中某個畫素點P相對於T幀中對應畫素點q的位移,如下圖所示,光流場疊加最終得到的是每個畫素點的兩幀之間的光流圖。如下圖所示。

3.1.3 雙向光流

上述兩個方法其實考慮的都是前饋光流,我們都是依靠後一幀計算相對於前一幀的光流。當我們考慮T幀時,我們不再一直往後堆L幀,而是計算T幀之前L/2和T幀之後的L/2幀。

3.1.4 減去平均光流

攝像機的運動將導致負面影響。

第4章 多工學習

對於空間卷積網路來說,我們可以用大型的資料集(比如ImageNet來預訓練)。但是時間卷積網路需要輸入視訊資料,目前的視訊資料量還非常小。所以作者提出能不能把多個數據集(這裡就是,UCF101和HMDB-51)聯合起來,這樣還能避免過擬合的現象。由此作者提出了兩種方法。

  • 第一種就是簡單的將兩個資料集融合,提取出兩個資料集不同的視訊組成一個新的資料集,然後在這上面進行訓練。但是這樣會有一個問題就是需要大量的人工去判斷。

  • 第二種方法就是多工學習,最終作者採取了這種方法。這種方法改變了之前的網路結構,在最後全連線層之後,作者增加了一個softmax層輸出,這兩就有兩個softmax層輸出,可以給兩個資料集打分。每個softmax有自己獨立的loss,最終的loss就是兩個Loss的疊加。然後回傳更新引數。所以這裡的重點就是:網路全卷積層是不變的,或者說對於兩個資料集是共享引數的。只是改變了最終的loss。

第6章 實驗結果

6.1 資料集和評價標準

作者實驗的資料集主要是UCF-101和HMDB-51。

6.2 空間卷積

作者在這裡考慮了三種方法。

  • 從零開始在UCF101上訓練
  • 在ILSVRC-2012預訓練然後在UCF101上finetuning
  • 保持pre-trained模型,然後只訓練最後一層(classification)

由上圖可以看出,Pre-trained + fine-tuning 和 Pre-trained + last layer效果差不多。都遠遠的比From Scratch好。

6.3 時間卷積

由上圖可以看出,直接採用Optical Flow stacking效果更佳好。配合Mean subtraction效果更佳。

6.4 多工學習

作者試驗了以下幾個,考慮HMDB資料集。

  • 直接在HMDB上訓練
  • Pre-trained On UCF-101,然後fine-tuning在HMDB
  • 在HMDB-51上增加78個類別(來自於UCF-101)
  • 多工學習

6.5 Two-Stream ConvNet

6.6 對比演算法

參考文獻