行爲檢測調研

背景

視頻理解是目前計算機視覺領域非常熱,也是極具挑戰力的一個方向。視頻理解方向包含衆多的子研究方向,以CVPR組織的ACTIVITYNET爲例,2017年總共有5個Task被提出。

  • Task1:未修剪視頻分類(Untrimmed Video Classification)。這個有點類似於圖像的分類,未修剪的視頻中通常含有多個動作,而且視頻很長。有許多動作或許都不是我們所關注的。所以這裏提出的Task就是希望通過對輸入的長視頻進行全局分析,然後軟分類到多個類別。

  • Task2:修剪視頻識別(Trimmed Action Recognition)。這個在計算機視覺領域已經研究多年,給出一段只包含一個動作的修剪視頻,要求給視頻分類。

  • Task3:時序行爲提名(Temporal Action Proposal)。這個同樣類似於圖像目標檢測任務中的候選框提取。在一段長視頻中通常含有很多動作,這個任務就是從視頻中找出可能含有動作的視頻段。

  • Task4:時序行爲定位(Temporal Action Localization)。相比於上面的時序行爲提名而言,時序行爲定位於我們常說的目標檢測一致。要求從視頻中找到可能存在行爲的視頻段,並且給視頻段分類。

  • Task5:密集行爲描述(Dense-Captioning Events)。之所以稱爲密集行爲描述,主要是因爲該任務要求在時序行爲定位(檢測)的基礎上進行視頻行爲描述。也就是說,該任務需要將一段未修剪的視頻進行時序行爲定位得到許多包含行爲的視頻段後,對該視頻段進行行爲描述。比如:man playing a piano

而該調研報告主要聚焦於行爲識別和行爲檢測。也就是上述任務描述中的Task2和Task4.

行爲分類

行爲分類(Trimmed Action Recognition)是視頻理解方向很重要的一個問題,至今爲止已經研究多年。深度學習出來後,該問題被逐步解決,現在在數據集上已經達到了比較滿意的效果。如第2章所述 。行爲分類問題簡單的來說就是:對於給定的分割好的視頻片段,按照其中的人類行爲進行分類。比如女孩化妝、男生打球、跑步等等。該任務不需要確定視頻中行爲的開始時間和結束時間。

在深度學習出現之前,表現最好的算法是iDT[1][2],之後的工作基本上都是在iDT方法上進行改進。IDT的思路是利用光流場來獲得視頻序列中的一些軌跡,再沿着軌跡提取HOF,HOG,MBH,trajectory4中特徵,其中HOF基於灰度圖計算,另外幾個均基於dense optical flow(密集光流計算)。最後利用FV(Fisher Vector)方法對特徵進行編碼,再基於編碼訓練結果訓練SVM分類器。深度學習出來後,陸續出來多種方式來嘗試解決這個問題,包含:Two-Stream[3][4]、C3D(Convolution 3 Dimension)[6],還有RNN[7]

 

傳統的行爲識別方法:

1、IDT(improved dense trajectories)特徵:“Action recognition with improved trajectories”

  • IDT方法(2013)是深度學習進入該領域錢效果最好,穩定性最好,可靠性最高的方法。這個方法是之前(Dense Trajectories and Motion Boundary Descriptors for Action Recognition)的改進。該方法解釋見:https://blog.csdn.net/wzmsltw/article/details/53023363  算法代碼解析見:https://blog.csdn.net/wzmsltw/article/details/53221179

  • 基本思路:DT算法的基本思路爲利用光流場來獲得視頻序列中的一些軌跡,再沿着軌跡提取HOF,HOG,MBH,trajectory 4種特徵,其中HOF基於灰度圖像計算,另外幾個均基於dense optical flow計算。最後利用FV(Fisher Vector)方法對特徵進行編碼,再基於編碼結果訓練SVM分類器,而IDT改進的地方在於利用前後兩幀視頻之間的光流以及SURF關鍵點進行匹配,從而消除/減弱相機帶來的影響,改進後的光流圖像被稱爲warp optical flow

深度學習中行爲識別方法:

1、TWO STREAM方法

Two-Stream方法是深度學習在該方向的一大主流方向。最早是VGG團隊在NIPS上提出來的[3]。其實在這之前也有人嘗試用深度學習來處理行爲識別,例如李飛飛團隊[8],通過疊加視頻多幀輸入到網絡中進行學習,但是不幸的是這種方法比手動提取特徵更加糟糕。當Two-Stream CNN出來後才意味着深度學習在行爲識別中邁出了重大的一步。

Two-Stream CNN網絡顧名思義分爲兩個部分,一部分處理RGB圖像,一部分處理光流圖像。最終聯合訓練,並分類。這篇文章主要有以下三個貢獻點。

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

網絡結構:

(1)、14年Two-stream convolutional networks for action recognition in videos

  •  首次提出two stream網絡,主要分爲兩個流,空間流處理靜止圖像幀,得到形狀信息,時間流處理連續多幀稠密光流,得到運動信息。兩個流最後經過softmax後,做分類分數的融合,可以採用平均法或者是SVM。不過這兩個流都是二維卷積操作。
  • 論文沒有公開源代碼。

 (2)、15年Towards Good Practices for Very Deep Two-Stream ConvNets

同樣是two stream網絡,空間流是224x224x3,時間流是224x224x10。最後在訓練時做了幾個策略:

  • 預訓練:空間流在ImageNet上預訓練,時間流中的光流轉換爲0-255灰度圖,在ImageNet上預訓練。
  • 更小的learning_rate:時間爲0.005,每1萬次迭代減少1/10,3萬次停止。空間爲0.001,每4000次迭代減少1/10,1萬次停止。
  • more data—data argumentation:由於數據集過小的原因,採用裁剪增加數據集,4個角和1箇中心,還有各種尺度的裁剪。從{26,224,192,168}中選擇尺度與縱橫比進行裁剪。
  • high dropout rate
  • GPU訓練
  1. 此論文有公開源代碼,用的是pytorch寫的。

 (3)、16年Temporal Segment Networks Towards Good Practices for Deep Action Recognition

提出兩點貢獻:

  • 提出一個temporal segment network(TSN)網絡,基於視頻的動作識別網絡,結合了稀疏時間採樣策略,和大規模時間結構建模。(將視頻分成K個序列,隨機抽取一個,網絡在所有的序列上共享參數)
  • 一系列優化的策略,估計跟上一篇差不太多。

(4)、16年Convolutional Two-Stream Network Fusion for Video Action Recognition

 (5)、17年Hidden Two-Stream Convolutional Networks for Action Recognition

2、C3D(3-Dimensional Convolution)

C3D(3-Dimensional Convolution)[6]是除了Two-Stream後的另外一大主流方法,但是目前來看C3D的方法得到的效果普遍比Two-Stream方法低好幾個百分點。但是C3D任然是目前研究的熱點,主要原因是該方法比Two-Stream方法快很多,而且基本上都是端到端的訓練,網絡結構更加簡潔。該方法思想非常簡單,圖像是二維,所以使用二維的卷積核。視頻是三維信息,那麼可以使用三維的卷積核。所以C3D的意思是:用三維的卷積核處理視頻。

3、CDC網絡

CDC網絡是在C3D網絡基礎上,借鑑了FCN的思想。在C3D網絡的後面增加了時間維度的上採樣操作,做到了幀預測(frame level labeling)。以下是文章主要貢獻點。

網絡步驟如下所示。

輸入的視頻段是112x112xL,連續L幀112x112的圖像 經過C3D網絡後,時間域上L下采樣到 L/8, 空間上圖像的大小由 112x112下采樣到了4x4 CDC6: 時間域上上採樣到 L/4, 空間上繼續下采樣到 1x1

文章的還有一大貢獻點是反捲積的設計,因爲經過C3D網絡輸出後,存在時間和空間兩個維度,文章中的CDC6完成了時序上採樣,空間下采樣的同時操作。

  • 第一次將卷積、反捲積操作應用到行爲檢測領域,CDC同時在空間下采樣,在時間域上上採樣。
  • 利用CDC網絡結構可以做到端到端的學習。
  • 通過反捲積操作可以做到幀預測(Per-frame action labeling)。
  • CDC7: 時間域上上採樣到 L/2
  • CDC8:時間域上上採樣到 L,而且全連接層用的是 4096xK+1, K是類別數
  • softmax層

4、R-C3D網絡

R-C3D(Region 3-Dimensional Convolution)網絡[10]是基於Faster R-CNN和C3D網絡思想。對於任意的輸入視頻L,先進行Proposal,然後用3D-pooling,最後進行分類和迴歸操作。文章主要貢獻點有以下3個。

可以針對任意長度視頻、任意長度行爲進行端到端的檢測 速度很快(是目前網絡的5倍),通過共享Progposal generation 和Classification網絡的C3D參數 作者測試了3個不同的數據集,效果都很好,顯示了通用性。

R-C3D網絡可以分爲4個部分。

  • 特徵提取網絡:對於輸入任意長度的視頻進行特徵提取
  • Temporal Proposal Subnet: 用來提取可能存在行爲的時序片段(Proposal Segments)
  • Activity Classification Subnet: 行爲分類子網絡
  • Loss Function

5、RPAN:An End-to-End Recurrent Pose-Attention Network for Action Recognition in Videos

因爲視頻除了空間維度外,最大的痛點是時間序列問題。如果能很好的處理這個維度,那麼效果是不是會顯著提升呢?而衆所周知,RNN網絡在NLP方向取得了傲人的成績,非常適合處理序列。所以除了上述兩大類方法以外,另外還有一大批的研究學者希望使用RNN網絡思想來解決這個問題。目前最新的進展是中科院深圳先進院喬宇老師的工作:《RPAN:An End-to-End Recurrent Pose-Attention Network for Action Recognition in Videos》[7]。這篇文章是ICCV2017年的oral文章。但是與傳統的Video-level category訓練RNN不同,這篇文章還提出了Pose-attention的機制。

這篇文章主要有以下幾個貢獻點。

  • 不同於之前的pose-related action recognition,這篇文章是端到端的RNN,而且是spatial-temporal evolutionos of human pose
  • 不同於獨立的學習關節點特徵(human-joint features),這篇文章引入的pose-attention機制通過不同語義相關的關節點(semantically-related human joints)分享attention參數,然後將這些通過human-part pooling層聯合起來
  • 視頻姿態估計,通過文章的方法可以給視頻進行粗糙的姿態標記。(這個方法還挺不錯)。

RPAN網絡框架可以分爲三個大的部分。

  • 特徵生成部分:用Two-Stream的方法生成
  • 姿態注意機制
  • LSTM時序處理網絡 

行爲檢測

行爲檢測也是目前視頻理解方向的研究主要熱點,因爲該任務更加貼近生活,在監控安防中有潛在的巨大價值。但是相比於行爲分類,行爲檢測難度更高,不僅需要定位視頻中可能存在行爲動作的視頻段,還需要將其分類。而定位存在行爲動作的視頻段是一個更加艱鉅的任務。

因爲行爲檢測任務有點類似於目標檢測任務,都是需要先定位目標,然後識別目標。所以目前很多行爲檢測方法都是借鑑於目標檢測,主要思想基本上是Temporal Proposal提取,然後進行分類與迴歸操作。這類方法包含,利用Faster R-CNN框架[9][10]

思路,利用SSD框架思路[11],還有基於TAG網絡[12]等等。還有一類方法是基於C3D做幀分類(Frame Label),然後預測存在行爲的視頻段並分類,例如2017年ICCV的CDC網絡[13]。

研究難點

上面簡單闡述了行爲檢測的難點,這裏總結一下主要有以下三點。

時序信息。與行爲識別/分類一樣,視頻理解的通用難點就是時序信息的處理。所以針對這一點目前的主要方法基本上都是使用RNN讀入CNN提取的特徵,或者直接使用C3D一樣的時序卷積。 邊界不明確。不同於行爲識別的是,行爲檢測要求做精確的動作區間檢測,而生活中一個動作的產生往往邊界不是十分確定的,所以這也是導致目前行爲檢測mAP偏低的原因。 時間跨度大。在生活中,一個行爲動作往往跨度非常大,短的動作幾秒左右,比如揮手。長的動作有的持續數十分鐘,比如攀巖、騎行等等。這使得我們在提取Proposal的時候變得異常的艱難。

 

MEXaction2:MEXaction2數據集中包含兩類動作:騎馬和鬥牛。該數據集由三個部分組成:YouTube視頻,UCF101中的騎馬視頻以及INA視頻。其中YouTube視頻片段和UCF101中的騎馬視頻是分割好的短視頻片段,被用於訓練集。而INA視頻爲多段長的未分割的視頻,時長共計77小時,且被分爲訓練,驗證和測試集三部分。訓練集中共有1336個行爲片段,驗證集中有310個行爲片段,測試集中有329個行爲片斷。且MEXaction2數據集的特點是其中的未分割視頻長度都非常長,被標註的行爲片段僅佔視頻總長的很低比例。

ActivityNet: 目前最大的數據庫,同樣包含分類和檢測兩個任務。這個數據集僅提供視頻的youtube鏈接,而不能直接下載視頻,所以還需要用python中的youtube下載工具來自動下載。該數據集包含200個動作類別,20000(訓練+驗證+測試集)左右的視頻,視頻時長共計約700小時。由於這個數據集實在太大了,我的實驗條件下很難完成對其的實驗,所以我之前主要還是在THUMOS14和MEXaction2上進行實驗。

數據集介紹

行爲檢測方向常用的數據集主要是THUMOS 2014和ActivityNet。THUMOS 2014來自於THUMOS Challenge 2014,。它的訓練集爲UCF101數據集,驗證集和測試集分別包括1010和1574個未分割的視頻片段。在行爲檢測任務中只有20類動作的未分割視頻是有時序行爲片段標註的,包括200個驗證集(3007個行爲片段)和213個測試集視頻(包含3358個行爲片段)。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章