Model for Video Understanding【1】
作為深度學習還未完全攻克的領域,越來越的研究者開始將目光投向視頻。而Action Recognition,或者說Video Classification,作為最基本的問題,等同於圖像分類。而目前深度學習方面最具代表性的方法之一,就是港中文在ECCV2016提出的Temporal Segment Networks(TSN),這也是目前的benchmark。
Website:Temporal Segment Networks - TSN
之前的模型有哪些問題?
1.主流的CNN模型聚焦在appearance和 short-term motion,缺少學習長序列的能力。已提出的解決辦法有dense temporal sampling,但是這種方法計算量很大,無法應用到大於預定length的長視頻之中。
2.CNN網路訓練需要大量的數據。而當時的數據集不夠大,容易過擬合。
本文研究的問題:
1.如何設計一種高效的、能夠學習長序列的網路結構?
2.如何在數據有限的情況下,讓網路學習到有用的特徵?
作者的觀察:
連續幀的輸入中,存在嚴重的冗餘。(例如射箭的視頻,其實完全可以僅根據其中幾幀就能判斷,而且冗餘的幀也會引入更多的雜訊,key-frame這塊在去年已經有相關的論文了)。所以前面提到的密集採樣其實是不必要的。
主要思路:
稀疏採樣提取多個短視頻序列,Segmental結構用來融合所以短視頻序列的信息。(傳統C3D網路,每次輸入16幀,對應一個標籤,而現在是整個視頻輸入,切割為多個短序列作為網路的輸入,最後融合多個網路的結果作為最終輸出。)因為是稀疏採樣,所以雖然增加多個序列,但計算量仍然是可接受的。
網路結構如下,中間綠色+藍色是傳統的雙流網路結構。
細節討論:
- 網路內部採用BN-Inception。(通常來說,Deeper is better,尤其是Resnet出來後,去年MSRA已經提出了199層的3D-Resnet,效果不錯)
- 網路輸入:傳統採用RGB+optical flow形式。本文額外探索了RGB difference和warped optical flow fileds。
- 網路訓練:
3.1 Spatial網路使用Image-net上預訓練的結果作為初始化,Temporal網路先進行規格化至0-255之間,這樣光流圖就和RGB一樣了,然後調整Spatial網路的第一層卷積。
3.2 Regularization。改進的Batch Normalization(BN),同時增加一層drop-out。
3.3 Data Augmentation。數據增強主要用來增加樣本多樣性,防止過擬合。傳統雙流網路採用了random cropping和horizontal flipping。本文探索了corner cropping和scale jittering。其中corner cropping是指crop的區域只從角點或者圖像的中心點選取,scale jittering是一種multi-scale cropping的方法,固定初始RGB或光流圖像size為256x340,crop的寬和高從{256,224,192,168}里選取,然後resize到224x224,作為網路輸入。
個人討論:
1. Data Augmentation:文中得出的最佳組合是Optical flow+Warped flow+RGB,但值得注意的是,如果再加上RGB difference,效果反而會下降一點,原因可能是RGB difference雖然包含了motion信息,但是在已經有更好的motion信息下,相當於引入了額外的雜訊。
2. 最新挖坑文:On the Integration of Optical Flow and Action Recognition,重新審視了光流的作用,或許光流並沒有包含所謂的motion信息。使用Data Augmentation的結果替代光流仍然值得探索,例如邊緣增強/分割圖/顏色增強等。
3. 下一步發展個人覺得主要集中在模型(網路架構)、tricks(引入Res-net,新的loss函數,輸入的形式等),新的數據集(Moments in time)。當然,最為重要還是特徵,motion特徵。
推薦閱讀:
※Rocket Training: 一種提升輕量網路性能的訓練方法
※Path Aggregation Network for Instance Segmentation
※【小林的OpenCV基礎課 10】Canny邊緣檢測
※計算機視覺方面博客及代碼
TAG:計算機視覺 |