天天看點

Two-Stream Convolutional Networks for Action Recognition in Videos讀書筆記

        看完這篇文獻已經好多天了,重新梳理一下雙流Conv網絡的讀書筆記。僅個人見解,望大家指正交流。

        行為識别是計算機視覺中一個非常重要的方向,無論是科學研究領域還是工業控制領域,都有極高的實用價值,對交通服務以及社交領域都有着極大的推動作用,在學習行為識别的過程當中,遇到了一系列的問題,比如如何在靜态的圖像和動态的過程之間捕獲一種連接配接性的資訊,讓兩者可以很好地聯系起來。這篇文獻對這個問題提出了一個很好的見解,介紹了一種雙流卷積網絡,來實作視訊中的行為識别。

Characteristics:

  1. It creatively proposes a two-stream Convnet architecture which incorporates spatial and temporal networks.
  2. It also demonstrates that a Convnet trained on multiframe dense optical flow is able to achieve very good performance in spite of limited training data.
  3. It shows that multi-task learning,applied to two different action classification datasets (UCF-101 and HMDB-51),can be used to increase the amount of training data and improve the performance on both.

      過去通常處理行為識别時,把焦點放在空間資訊的處理上,所謂空間資訊,也就是獨立于幀的表面資訊,也就是視訊中物體和場景等資訊。而時間資訊,是幀間的光流,會攜帶幀幀之間的運動資訊。這篇文獻針對這個問題提出了一個空間網絡與時間網絡并存的雙流卷積網絡結構,利用空間網絡去處理靜态資訊,利用時間網絡去處理動态資訊,兩者相結合可以大大提升行為識别準确率。

       另外,這篇文獻提供了另外一個不錯的結論,在以多幀密集光流所訓練的卷積網絡之間,即使訓練資料有限,也能實作不錯的效果,多幀密集光流是時間網絡的載體,是表現時序資訊的。在時間網絡當中,是通過對光流的處理,來對動态的過程進行表達。

      接下來,還介紹了一個多任務學習的概念,多任務學習是将不同種類的分類資料集進行融合訓練,(采用UCF-101 和HMDB-51兩個資料集進行融合訓練),多任務學習一方面可以提高訓練資料量,另一方面,也能改善訓練效果降低過拟合。

Two-Stream Convolutional Networks for Action Recognition in Videos讀書筆記

雙流卷積結構

        首先對輸入的視訊進行分流,分為空間流卷積和時間流卷積,在空間流卷積中,輸入是單個幀,而在時間流卷積,輸入是多幀光流,這兩個網絡的結構具有極大的相似性,首先都是對各自的輸入進行卷積操作,因為卷積具有局部連接配接和全局共享的特點,是以能夠大大降低訓練的時間,能夠有效的提取圖像的資訊。經過卷積過後,後面連接配接一個歸一化層,歸一化就是将這些資料調整到同一個數量級,來加快梯度下降求最優解的速度。歸一化過後連接配接一個池化層,池化方法是最大池化法(可以便宜地代替卷積層,而且具有平移不變性),也就是對這個區域中最主要的資訊進行提取,既可以減少輸出的大小,也可以降低過拟合。在經曆5個卷積層過後,連接配接兩個全連接配接層。全連接配接層主要是對前面的輸出進行伸展、扁平化。第一個全連接配接層是将大小不同的資訊運算到更大的空間,來增加這個模型的泛化能力;第二個全連接配接層是為了更好地比對這個網絡的輸出尺度,為次元變換做準備,得到我們想要的輸出形式。在這兩個網絡的最後一層,都會連接配接一個softmax層,主要是對輸出進行分類,最終對他們分類的分數進行融合,來得到最終的結果。分數的融合有兩種方法:一種是平均法,也就是對這兩者的分數進行平均得到最後結果。另外一種是非常經典的分類方法,SVM(支援向量機)方法進行分數的融合。以上就是這個雙流卷積網絡的基本結構。

      接下來,對空間網絡的一些資訊進行介紹,因為空間網絡是對單個視訊幀進行操作,是從靜态的動作當中進行動作識别,靜态的外觀本身也是一種非常有用的線索,因為一些動作和一些特定的對象本身有一種很強的聯系,并且在空間卷積網絡當中,這個網絡本身就是一個圖像分類結構,是以可以利用大規模的圖像識别的方法,并且在大型的圖像資料分類集上對這個網絡進行預訓練來提高訓練效果。

Two-Stream Convolutional Networks for Action Recognition in Videos讀書筆記

       介紹時間網絡的相關資訊,光流是時間網絡的載體,圖(a)、圖(b)表示是一對連續的視訊幀,用矩形框割劃出了這個人準備拿東西這個動作,圖(c)是這個矩形框中的輪廓進行表征,可以看到許多矢量,這些矢量所組成的區域叫做密集光流,也可以叫做光流位移場,光流位移場分為水準分量和垂直分量,圖(d)表示這個光流位移場的水準分量,圖(e)表示這個光流位移場的垂直分量。我們所說的時間網絡實際上就是對多個連續視訊幀的光流位移場形成的。

光流估計

Two-Stream Convolutional Networks for Action Recognition in Videos讀書筆記

     下面介紹時間網絡輸入的配置,因為光流是這個時間網絡的載體,是以以下介紹四種光流估計的方法。

1.Optical flow stacking(光流堆疊)

        将多個視訊幀的光流通道堆疊在一起,在不同幀的相同位置有三個光流,表示多個幀的相同位置的光流穴流動,就表示光流堆疊。(圖上左)

2.Trajectory stacking(軌迹堆疊)

       表示光流的運動軌迹,沿着運動軌迹采樣的光流就是軌迹堆疊。(圖上右)

3.Bi-directional optical flow(雙向光流)

     在一個幀的前向區間和後向區間堆疊一定數量的光流,來達到雙向傳遞的效果(2L長度的輸入通道)。

4.Mean flow subtraction(平均流減法)

     對這個網絡的輸入進行0中心化,光的流動可以通過人為的操作進行調整,這篇文獻是通過對每一個位移場減去一個平均向量來實作的。目的是為了更好地糾正這個模型非線性的問題。

實作細節

  1. ConvNets configuration
  2. Training
  3. Testing
  4. Pre-training on ImageNet ILSVRC-2012
  5. Optical flow
  6. Multi-GPU training
  1. 卷積網絡配置。上面已經對這個網絡的基本架構進行梳理。還需要注意兩點。第一點就是這個網絡中隐藏的所有權重層都是采用RELU激活函數進行激活的(使用RELU原因:(1)不需要像sigmoid等使用指數計算,整個節省計算量;(2)RELU使一部分神經元輸出為0,造成網絡稀疏性,并減少參數的互相依存關系,緩解過拟合)。第二點是雖然我們可以觀察到這兩個網絡極其得相似,但是在時間網絡的第二個卷積層并沒有采用歸一化。目的主要是為了減少記憶體的消耗來達到節約記憶體的目的。
  2. 訓練過程。在訓練過程當中,對于時空網絡通常來講是相同的,都是采用使用帶有動量的小批量随機梯度下降來學習網絡的權重。在每一次的疊代當中,是通過對256個訓練視訊進行采樣,建構一個256個樣本的小批量,之後從每一個小批量當中随機選擇單個幀。在空間網絡訓練當中,是從所選的幀中随機采點出224*224的子圖像,然後再經曆随機的翻轉和RGB抖動;在時間網絡訓練當中,標明了訓練幀,計算光流體積。從這個體積中,去選擇固定大小的輸入,然後進行随機的裁剪和翻轉。對于學習率來講,最初設定為10-2.後續會根據固定的時間表進行降低,也就是說當我們從頭訓練這個卷積網絡時,速率在50k過後就會變成10-3,在70k過後就會變成10-4,在80k過後就會停止訓練。
  3. 測試過程。在測試過程當中,給定一個視訊,采樣固定數量的幀,在幀之間有相等的時間間隔。接着在每個幀之中,裁剪和翻轉幀的四個角和中心,來獲得10個卷積輸入。最後通過對這些采樣幀的分數進行平均,來獲得整個視訊的類别分數。
  4. 預訓練。在這篇文獻中,主要是在ImageNet ILSVRC-2012這個資料集上進行預訓練,如果不進行預訓練,很容易造成網絡的過拟合或者網絡的不收斂。
  5. 光流。光流主要是使用OpenCV這個工具箱裡現有的圖形處理器來實作的。
  6. 多GPU訓練。主要通過公開的Caffe的工具箱進行實作的。包括在單個系統上安裝的多個圖形處理器的并行訓練,用這個資料的并行性就可以将每個随機梯度下降批處理拆分到幾個圖形處理器當中,來提高訓練速度,進而減少訓練時長。

訓練結果

Two-Stream Convolutional Networks for Action Recognition in Videos讀書筆記

         時間網絡和空間網絡在UCF-101資料集上的一些準确率,(a)空間網絡:經過預訓練和微調的準确度最高,從第三行可以表明,要選擇合适的丢失率來讓網絡的準确度提高。(b)時間網絡:當選擇光流堆疊這個光流估計方法,準确度較高,達到了80%以上,是以一定要選擇合适的光流估計方法。

Two-Stream Convolutional Networks for Action Recognition in Videos讀書筆記

      在最後一行,多任務學習訓練準确度最高。表明要盡可能利用所有可用的資料進行訓練,一方面可以提高他的泛化能力,另一方面還能提高訓練準确度。

Two-Stream Convolutional Networks for Action Recognition in Videos讀書筆記

       相較于前兩副圖,發現這裡是時間網絡和空間網絡相融合,在訓練準确度上面大大提升。最後一行,當采用SVM融合方法進行訓練,訓練準确度達到87%,是最高的。是以基于SVM的softmax分數融合是優于用平均法進行融合的。在時間卷積網絡當中,第一行采用雙向光流估計方法,但并沒有得到很好的準确度,是以光流估計一定要選擇合适的方法。

Two-Stream Convolutional Networks for Action Recognition in Videos讀書筆記

       主要是将雙流卷積神經網絡與其他各類網絡進行對比分析,雙流卷積神經網絡在UCF-101和HMDB-51兩個資料集上所訓練的效果是最好的,再次印證了雙流卷積神經網絡的優越性。

結論和改進方向

        這篇文章提出了一個基于卷積網絡的時間網絡和空間網絡的雙流結構,并且發現在光流上訓練一個時間的網絡比在原始的堆疊幀訓練要好得多。因為光流是使用基于恒定性和平滑性的方法進行計算的,是以盡管使用光流的輸入,我們的時間模型并不需要大量的手工操作。但是與此同時,這個雙流卷積網絡具有一定的缺陷。比如在時間網絡當中,考慮了光流的軌迹問題,但是在空間網絡中并沒有考慮是否軌迹也會影響訓練的效果。除此之外,因為最終的融合隻是基于分類的分數,并沒有處理到時間特征和空間特征之間的像素對應關系。還有一點,這個雙流神經網絡時間尺度上是有限的。因為在空間網絡中所訓練的是單個幀,而在時間網絡中,訓練的是一段時間内的相鄰光流幀。

繼續閱讀