計算機視覺中video understanding領域有什麼研究方向和比較重要的成果?

知乎上好像沒有看到關於video understanding的概述回答,有相關大神願意總結一些嗎?


視頻分析最難的是temporal information modeling。用光流計算量會很大,一種思路是用RNN來做時間信息建模,比如論文「Bidirectional Multirate Reconstruction for Temporal Modeling in Videos CVPR 2017」,就是用RNN對視頻進行分析,並且在事件檢測這一任務中取得了最好性能。類似的工作還有:「Unsupervised Learning of Video Representations using LSTMs ICML 2015」等;

另外補充qjzhao的回答,除了video captioning, video question answering最近也有一些進展。比如:"MovieQA: Understanding Stories in Movies through Question-Answering CVPR 2016","MarioQA: Answering Questions by Watching Gameplay Videos ICCV 2017"等;值得注意的是:"Uncovering the Temporal Context for Video Question Answering IJCV 2017"提出了回答關於過去,現在,未來問題的Video QA,解決此任務需要更好地時間序列進行建模,這篇文章同時收集了一個新的視頻問答數據集。現在video captioning的性能刷的很高了,所以要做論文會越來越難。但是Video QA剛剛開始,刷性能更容易,從做論文的角度來說,要相對容易一些。


淺談自己的理解後坐等大神更新(地鐵上碼字很不方便 )

video understand,是屬於visual analysis的第三個層次,比較high-level的研究方向。

1)最基礎的video classification,從相應數據集來看,比如sport1m,hmdb51,activity-net等,大都屬於運動/行為類型的類別,所以,video classification和action recognition有很多的overlap(當然 action recognition 從人的動作監督信息可以分為 skeleton based 和non-skeleton based)

研究人員大多從兩方面去展開:

1.c3d,3d卷積同時學習每幀圖像上的行為信息和短時間序列上的行為信息。

2.two stream,幀stream+光流stream+ensemble的方法,方別學習幀圖像上的行為信息和短時序列上的行為信息。

cvpr17有文章把二者結合也做了文章(其實也沒比TSN好)

2)video temporal activity detection,即在時間序列上檢測事件的起始時間,主要用於untrimmed video data,數據集比如activity-net有相應的標記信息,即事件的開始和結束的時間點信息。

主要看到過有兩類方法:

1.強化學習,從首幀開始往後做識別,強化學慣用於學習選擇跳過的幀數。

2.video clips proposal,類似於檢測裡面的region proposal,該方法是將視頻中的短片段抽取特徵,然後作為candidate送入後面的決策網路

3)event detection,比如trecvid 每年舉辦的比賽里的multimedia event detection(MED),在幾十萬各種各樣的視頻中,包含有指定(複雜)事件的一些視頻,需要用演算法找出最可能包含這些事件的視頻。這其中根據訓練數據的數量分為100x,10x,0x,前兩者屬於non-zero-shot learning,所以一般會使用提取特徵+訓練分類器的方法去做,做工作的地方會主要在特徵提取的環節。後者0x是沒有訓練數據的,需要從事件的語義信息中去找事件組成子元素(concept怎麼翻譯 ),然後通過易得的其他數據中訓練這些子元素,再去視頻中找他們。

這個任務很難,特別是一些很複雜卻又不好和相近類別分開的事件(比如med里有個事件是」做木製手藝活」)

4)video captioning,對指定的視頻輸出一段描述文字。從早期的cnn+rnn的結構,即幀圖像特徵提取+建立文字序列結構到現在各種新方法的探索,現在已經能做的很不錯了。當然仍有很大的空間。類似的topic還有很多,比如video2doc(一段文字描述,如果沒記錯的話,有這麼一篇文章),video2vec,加上seq2seq,又可以轉到新的表達形式。

暫時寫這麼多,仍在學習,很多說的不合理的地方希望多多指教

reference有空碼上去


更新: 我維護了一個repo來記錄最近的視頻理解的數據集,希望大佬們有空合作填完裡面的list, 地址在 yoosan/video-understanding-dataset

----

算是做了大半年,期間參加了三個視頻理解的比賽,Google的youtube8m,CVPR17的Activitynet和MM17的LSVC。我就說一下自己的感受吧。不管是做分類還是做temporal detection還是captioning,區別是後面的decoder不同,encoder部分要做的都是learning the video representation。

Google youtube8m是17上半年的一個比賽,因為視頻數據太大了,所以官方提供的是inception_v3抽好的frame feature和audio feature。目的很明顯,就是讓參賽者設計演算法來聚合視頻里時序上的信息。第一名是INRIA的NetVLAD,NetFV+context gating方法,VLAD和FV都是老方法了,作者也公布了代碼。第二名是百度和清華的,我沒記錯的話應該是stack LSTM+attention+residual的思路,基本上把現在流行的做法都試了。這個數據是多分類的,視頻很長且每個視頻類別很多,所以用的GAP沒用mAP做metric。這個數據集仍然是非常有挑戰的數據集。

Activitynet是第二屆了,增加了幾個task,前面的 @qjzhao 和 @二九 都提到了,temporal action detection和proposal的冠軍 @林天威 也在知乎上分享了他們做比賽的思路,非常好的分享。我主要做的還是分類任務,就是kinetics這個動作短視頻數據集。這個數據的視頻是真的難下載,特別是對於國內的同學。我們到了比賽前一個星期,數據還沒有下載完,而且用的又是tensorflow的框架,還要轉數據格式成tfrecord,所以那時候做的一團亂麻。拿了一份不完整的數據跑了一個單RGB的baseline結果。後面一直關注比賽的結果,前三名是百度,CUHKETHZSIAT和TwentyBN,百度的做法是youtube8m模型的一個延續吧,TwentyBN用的是3d resnet,CUHK那邊則延續了TSN的思路,也嘗試加入了3d conv和3d pooling的操作。比賽效果好的都用了flow的信息,然而抽取flow又是一件很花費時間和資源的事情了。具體方法參考Activitynet 2017 summary (https://arxiv.org/pdf/1710.08011.pdf)。比賽完之後,陸續有很多演算法來提升,這裡強推FAIR的non-local neural networks,單RGB達到77.7%的準確率,這是一個非常大的提升。關於non-local參考這個問題 (如何評價 Kaiming He 最新的 Non-local Neural Networks?)。Deepmind的科學家Joao Carreira在Activitynet的會議上講,Activitynet會成為未來的Imagnet,我覺得是的,畢竟圖像識別已經超越人類了,但是視頻理解還遠遠不夠。

隨後的MM17也舉辦了一個視頻分類的比賽LSVC (Large-Scale Video Classification Challenge),這是我做的時間最久也最充分的比賽了。然而最後數據還是沒有下完 (哭QUQ。只用到了1fps的RGB數據,也沒用到flow和audio的信息,所以最後結果也可想而知。這裡推薦一下LSVC的比賽,主辦方之一是復旦大學的Yu-Gang Jiang教授,他們說明年會繼續辦這個比賽,希望國內做視頻分類的團隊都去參加。

做一個小總結,視頻理解現在還是一個非常有挑戰的任務,相對與圖像識別,視頻理解不光需要你理解視頻里幀的空間信息,更需要理解整個視頻的時序信息,要讓模型學習一個spatio-temporal representation,是一件很難的事情。


我覺得video understanding 分為下面四類:

1).video classification ,或者是action recognition. 常用數據集小的有UCF101,HMDB51,中等的有ActivityNet ,Thumos 2014, 大規模的有 Deepmind 的Kinetics,Tewnety-BN的something-something, 谷歌的AVA,當然還有李菲菲的sports-1M。sports-1M 有1百萬個視頻,但不是人工標註的。 現階段這個任務的performance 趨於飽和了,ucf101 上 i3d 做到了98%,activityNet 16年 的map 就被liming wang 做到了90+,今年又高了一些。這個任務上的工作已不太好做。這裡建議剛入門或者設備不足的先從HMDB和UCF做起。 Sports-1m最好放棄,大的我下載不下來。。。。。

這個任務最好的performance 都是基於two-stream的,two-stream 最大的缺點是要提取光流,而光流是很難實時提取的。還有一類方法就是用3D卷積來取代光流捕捉motion 信息,這種方法performance一般沒有two-stream 高 但速度相對來說快一些。

我個人覺得 3d-cnn的參數多 ,擬合能力強,當數據集小的時候擬合的效果很好,如i3d在ucf101上acc 98%, 但是大數據集就不行了,比如 在kinetics上 i3d 還是不如 two-stream(resnet152)。 此外3d-cnn 一個大的缺點是參數多 ,deep 的model size會越來越大,難訓也訓得慢,msra的 iccv17的p3d 一定程度緩解了這個問題,但在各個數據集上 performance還是不如 two-stream.

順便吐槽下RNN來捕捉時序信息做action recognition,雖然道理講得通,但我發現加RNN(LSTM)的做法大多不是很work,提升的很少,比如LRCN等,暫時還沒見到用RNN取得一個impressive的performance。歡迎指正。

2).activity localization 或者是action detection.就是從一個十分鐘的視頻中找出事件發生的起止時間,這個任務基於上面的那個任務,這個的map還比較低,最厲害的應該是iccv17 cuhk的ssn. 還有基於c3D 的一系列工作;R-C3D,CDC. 當然還有又增強學習做的,李菲菲組有一篇cvpr就用了增強學習,但是準確率並不高。 這個任務還大有做頭,常用的數據集上thoumos14和activityNet. 以上所說的ssn(pytorch),R-C3D(caffe),CDC(caffe),lifeifei的增強學習(torch) 四個工作都已開源了code.

3) 第三個任務就是video和NLP結合了,如video caption ,video QA, video QA 感覺做的不如video caption 多,caption 這個任務 msra 的meitao 老師做的很多也很好,據說用到了微軟小冰裡面。

4) 第四個任務就是video的piexl semantic classfication, 比如video semantic segmentation,也叫作video scene pharsing,(視頻場景解析)。 常用的數據集有camVid 和cityscape,就是把圖片的語義分割拓展到了video.,這個可以用到自動駕駛領域,所以Facebook,騰訊都有做這個任務,iccv17上有一系列他們的工作,貌似idea有一些比較像的地方。估計是英雄所見略同吧。還有一個任務是video object segmentation, cvpr16上提了一個數據集DAVIS。貌似還辦了個比賽 DAVIS: Densely Annotated VIdeo Segmentation。


博士期間的研究領域比較靠近這個方向,來說一下自己的理解,視頻分析從淺到深大概的歷史進程是:

  • Video Segmentation

不論是比較傳統的光流還是基於anchor的proposal network或者是其他的一些方法,由於長視頻本身的複雜性,在時間序列上將視頻分割成更加單一的clip再進行下一步的處理都是極有必要的。

  • Activity Detection

在segmentation的基礎上,最為常見的一個應用是Temporal Activity Detection,Activity在時間序列上的檢測就像Object在圖像的空間維度上的檢測,也是一個非常重要的任務。

推薦:CDC: Convolutional-De-Convolutional Networks for Precise Temporal Action Localization in Untrimmed Videos

  • Video Caption

Video Caption是Image Caption的升級版,針對一段視頻生成一句(段)描述性語句,不僅要求視頻在時間序列上的合理分割,還要求對每段clip的視覺內容做caption之後合理整合,難度更大。

推薦:Hierarchical Recurrent Neural Encoder for Video Representation with Application to Captioning

  • Video Question Answering

前面三點在 @qjzhao 的回答中已經解釋得很詳細了,由於做的人太多,我也沒有辦法評價誰是最好的,列出的paper是我覺得還算比較新的,我打算主要講講Video Question Answering。

Video QA是很新的一個topic,Video QA是Image QA(也就是常說的VQA)的升級版,它可以看成是一種檢索,輸入的Question就是檢索的關鍵詞和限定條件,但是同時又對Video Analysis有很高的要求。

如 @ddj 所言,現在的Video QA剛起步,做的人還很少,現在在dblp上能夠搜到的論文不是很多,基本上還是在各種新方法的嘗試階段。比如IJCAI 17的Video Question Answering via Hierarchical Spatio-Temporal Attention Networks,這篇是比較典型的時空注意力機制的應用,由於視頻的時空特性,多層注意力機制的強大表現力是可預見的。另外,SIGIR 17的Video Question Answering via Attribute-Augmented Attention Network Learning,這篇文章引入了Attribute概念,加強了frame-level的Video Representation,也同樣採用了Temporal Attention的方法;而MM 17的Video Question Answering via Gradually Refined Attention over Appearance and Motion這篇文章則通過結合Appearance和Motion兩個通道的不同Attention來加強問題和視頻表達間的聯繫,再通過RNN cell的變體AMU來對問題進行處理。現有的Video QA基本都還逃不開spatio-temporal model,還有許多值得探索的地方,隨著現在數據集慢慢成熟,可以入場了。


Video很有意思, 不過僅限於unsupervised learning很有意思. supervised learning的話其實跟image沒有本質區別.

video跟image最大的不同,是video裡面含有一些causal signal,就是事件的因果關係和演化過程, 有助於 unsupervised 地 學出比如disentangled representation之類語義層面的東西.

舉個例子, video可以幫助unsupervised 學出segmentation和object detection. 例如你的video里如果有很多object,相互之間存在相對運動, 那麼很可能有一個演算法可以自己discover 這些是不同的object的. 圖片里就很難.

未來真正make sense的 unsupervised learning 應該會首先出現在video上.


qjzhao 總結得非常棒。video understanding 也是一個應用會非常廣泛的領域。

這裡想推薦幾篇關於video understanding 相關的文章。

Video Analysis 相關領域解讀之Video Captioning(視頻to文字描述)-極市博客

Video Analysis 相關領域解讀之Temporal Action Detection-極市博客

這兩個主要從時序檢測及視頻文字描述這塊來講解 視頻分析領域。

另外關於視頻描述這塊,推薦可以看看 @沈志強 發表的CVPR2017 的論文Weakly Supervised Dense Video Captioning,主要解決的問題是讓計算機自動學習並從多角度生成語義豐富的視頻描述的解決方案,也將機器的視覺理解向著更少人工,更全面理解的方向推進了一步。關於這塊我們也特意邀請了沈博來分享這塊的知識,大家可以點擊此處查看詳情

這篇論文的詳細介紹可以看這裡看視頻,講故事,舉一反三:詳解英特爾弱監督視頻密集描述生成模型


我也是最近剛開始看video action recognition 方向,與題主的問題有一定關聯。我覺得,vedio understand 和video caption 等是在vedio action recognition 和 action location基礎上做的,然而視頻運動識別在cross-view, cross domain 等方面還非常不成熟(與image 相比),大規模多視角的資料庫也非常有限,所以,基礎問題沒有很好解決,建立在基礎問題上的video understand 就更是有很大提升空間。

當然這是我這個科研小白的看法^O^


Seeing the Arrow of Time 挺有意思的


推薦閱讀:

氣體和液體的流體模擬有哪些異同?
一般在graphics research中是怎麼做unit test的?
遊戲中的GUI相比一般應用中的GUI在技術上有哪些差別?

TAG:人工智慧 | 機器學習 | 計算機視覺 | 計算機圖形學 | 深度學習DeepLearning |