近期在做在線動作識別的項目,閱讀了不少文獻,發現現有的方法基本都是離線的action recognition和action detection(離線指這些算法都是在處理切割好的視頻片斷)。而online action detection還沒有很好的方法。以下給出我總結的動作檢測/識別問題的分類及一些研究進展。
Action Recognition
- 目的:判斷一個視頻片斷中某個動作是否發生
- 特點:簡化了問題,一般使用的數據庫都先將動作分割好了,一個視頻片斷中包含一段明確的動作,時間較短(幾秒鐘)且有唯一確定的label。所以也可以看作是輸入爲視頻,輸出爲動作標籤的多分類問題。此外,動作識別數據庫中的動作一般都比較明確,周圍的干擾也相對較少(不那麼real-world)。
- Online/Offline:action recognition中的算法均爲offline算法,此處並不是指訓練過程的online還是offline,而是指測試過程。Action recognition的算法都是將一段視頻整體作爲輸入,所以是offline的。
- 常用數據庫
- 視頻數據庫:
- 來源:視頻通常來自youtube,電視劇集,體育賽事視頻等
- 常用:UCF50,UCF101,HMDB51等
- 骨架數據庫:
- 含義:指數據庫已經提取了每幀視頻中人的骨架信息,基於骨架信息判斷運動類型
- 常用:MSR Action 3D,HDM05,SBU Kinect Interaction Dataset
- 特點:骨架數據庫上的動作識別相對簡單
- 視頻數據庫:
- 研究進展
- 傳統方法:iDT(improved
dense trajectories)特徵
- 論文"Action recognition with improved trajectories",我寫的筆記見iDT算法筆記
- iDT方法(13年)是深度學習進入該領域前效果最好,穩定性最好,可靠性最高的方法。事實上,現在的深度學習方法提取的特徵通常也會在最後加上iDT特徵,獲得一定的效果提高。與圖像識別問題不同,動作識別的深度學習算法還沒能夠做到大幅優於傳統方法(只能說iDT方法設計的太好了。。)
- 特點:iDT特徵中包括HOF,HOG,MBH,trajectory4種特徵,其中HOF基於灰度圖計算,另外幾個均基於dense optical flow計算,所以可以認爲iDT是一種spatial與temporal結合的方法
- 基於iDT方法的改進效果最好的是“Action Recognition with Stacked Fisher Vectors"這篇文章。使用了兩層的fv編碼,筆記見Stacked Fisher Vector
- 深度學習方法
- Two-Stream方法
- 最新論文:”Convolutional Two-Stream Network Fusion for Video Action Recognition“(2016CVPR),最早提出的是“Two-Stream Convolutional Networks for Action Recognition in Videos”(2014NIPS)
- 基本原理:對視頻序列中每兩幀計算密集光流,得到密集光流的序列(即temporal信息)。然後對於視頻圖像序列(spatial)和光流序列(temporal)分別訓練CNN模型,之後在訓練一個fusion網絡融合spatial和temporal的網絡。
- 特點:在深度學習算法中比較有代表性,效果略略好於iDT,與iDT融合特徵後還可以獲得一定的提高。作者在16年將CNN網絡從VGG16換成了ResNet,又獲得了一定的效果提高
- LSTM+2stream方法
- 論文:“Beyond Short Snippets:Deep Networks for Video Classification”
- 是2stream方法的一種改進,在獲得spatial和temporal網絡後,此文分別用普通的fusion網絡和LSTM網絡對兩者進行融合,得到的結果再進行ensemble
- Two-Stream方法
- 傳統方法:iDT(improved
dense trajectories)特徵
- 討論:目前在較簡單的數據庫如UCF101上已經可以達到92%左右的準確率,在較難的數據庫如HMDB51上可以達到65%左右的數據庫。但這些數據庫中的視頻是已經分割好的,這實際上降低了很多難度,也使得這些算法難以直接應用到真實場景中。
Action Detection
- 目的:不僅要知道一個動作在視頻中是否發生,還需要知道動作發生在視頻的哪段時間
- 特點:需要處理較長的,未分割的視頻。且視頻通常有較多幹擾,目標動作一般只佔視頻的一小部分。
- 分類:根據待檢測視頻是一整段讀入的還是逐次讀入的,分爲online和offline兩種
- Offline action detection:
- 特點:一次讀入一整段視頻,然後在這一整段視頻中定位動作發生的時間
- Online action detection:
- 特點:不斷讀入新的幀,在讀入幀的過程中需要儘可能早的發現動作的發生(在動作尚未結束時就檢測到)。同時online action detection 還需要滿足實時性要求,這點非常重要。這導致online action detection不能採用計算複雜度過大的方法(在現有的計算能力下)
- 現有方法:
- 逐幀檢測法:即在視頻序列的每幀上獨立判斷動作的類型,可以用CNN等方法,僅用上了spatial的信息
- 滑窗法:即設置一個固定的滑窗大小,在視頻序列上進行滑窗,然後對滑窗得到的視頻小片斷利用action recognition的方法進行分類。
- 現狀:由於此問題難度比action recognition高很多,所以現在還沒有效果較好的方法
- Offline action detection: