Video Understanding(1)——Action Recognition動作識別

1.推薦閱讀

[動作識別綜述_1](本文主要翻譯自該綜述)
[動作識別綜述_2](GitHub項目)
[動作識別開源集錦](GitHub項目)
[競賽](ActivityNet)
Kinetics UCF101 HMDB-51 YouTube-8M(數據集)

2.Action Recognition 的難點

Action Recognition 需要對視頻幀中的每一個動作進行識別,這些動作可能是貫穿於整個視頻流,也可能是僅在某一時段出現一下,我們不僅要知道這個動作是什麼,還需要清楚它的起始時間段。我們的終極目標是:知道一段視頻中,誰(who)在什麼時間段(when)在哪兒(where)幹了什麼(what)?簡稱“4w”。這有點像圖像分類任務的拓展,我們需要根據每一幀的動作分類來預測整段視頻包含什麼內容。
事實上,圖像分類已經取得了比較喜人的成績,但是對於視頻分類(video classification)、表徵學習(representation learning)來說,深度學習的進展還顯得比較緩慢。之所以會如此艱難,主要源於以下幾方面的原因:

  1. 巨大的計算成本:傳統的2D卷積在面對101分類任務時,通常只需要~5M參數;然後,將其擴展到3D空間之後,參數量將劇增至~33M。在UCF101數據集上進行3D卷積操作通常需要花費3~4天的時間,在Sports-1M數據集上則要花費大概兩個月;不僅結構搜索空間很龐大,而且還容易產生過擬合。
  2. 需要捕捉上下文信息:動作識別需要在圖像幀之間獲取時空領域的上下文信息,與此同時空間信息還需要對相機移動進行補償。即便是我們能夠實現空間目標的檢測,也很難去獲取它的細節動作。例如:同樣是檢測到人和水,但是我們很難去區分出自由泳和蛙泳。
  3. 分類結構的設計:設計一個可以用來捕獲時空信息的分類網絡有很多種不同的策略,並且很難去評價這些策略孰優孰略。例如:(1)可以設計一個網絡一次性獲取時空信息,也可以設計兩個網絡分別獲取時間、空間信息;(2)單幀預測或者是融合預測;(3)端到端的訓練,或者是將特徵提取和分類兩過程分開。
  4. 無統一標準:目前最被公認的數據集就是UCF101和Sports-1M:在Sports-1M上搜索合理的網絡結構代價是很昂貴的,而UCF101雖然和ImageNet擁有相同數量級的數據,但是由於圖像在空間上的高度相關性,導致樣本的真實多樣性大打折扣。除此之外,這兩個數據集都有相同的具體領域—運動,在將其推廣到其他場景時適用性較弱,所以最近又出現了新的數據集Kinetics

3.Action Recognition 的傳統方法

在深度學習出現之前,CV領域的動作識別技術可以歸結爲以下三步:

  • 提取描述視頻的局部高維視覺特徵,要麼是密集的,要麼是稀疏的興趣點集;
  • 將提取的特徵融合到一個固定大小的視頻級別描述中(?),常見的做法是使用詞袋;
  • 最後使用SVM或者RF在視覺詞袋上進行訓練,用來預測最終的結果。

這些算法在第一步特區特徵的時候使用了hand-crafted-feature,目前該方向的SOTA是iDT(improve Densely Trajectories,使用密集採樣的軌跡特徵,代碼與解析)。與此同時,3D卷積也被用在動作識別領域(2013年);之後出現了兩片篇有突破性進展的文章(2014年),這形成了之後動作識別算法的backbone,它們之間的主要區別是:對於時空信息結合的設計方式有所不同。這兩篇文章雖然是里程碑之作,但是年代久遠、性能還是比較差,所以我們一般只關注它們的思想。

3.1Single Stream Network

論文:《Large-scale Video Classification with Convolutional Neural Networks
在這篇文章中,作者使用2D卷積進行預訓練,探索了多種從連續幀中融合時間信息的方法:
在這裏插入圖片描述
Single Frame 方法使用單線提取每一幀的特徵,然後在最後將這些特徵融合在一起;Late Fusion 方法使用雙線,雙線之間共享參數,以15幀爲間隔分別提取特徵,最後再進行融合;Early Fusion 則是對相鄰的10幀進行特徵提取,這相當於在卷積的第一層就進行了融合;Slow Fusion 尋求Late Fusion 和Early Fusion 之間的平衡,它開啓多線模式,然後在後期慢慢的將多線合併達到逐步融合時空特徵的目的。模型從整個視頻中抽取多個片段,對每個片段的分類進行打分,然後取平均值作爲最後的分類結果。
作者做了大量的實驗,最終發現這種方法與當前的SOTA方法(hand-crafted-feature)相比效果差很多,分析可能的原因:(1)網絡提取到的時空特徵可能並沒有抓取運動特徵;(2)數據集的多樣性較差,很難提取得到完備的動作庫。

3.2Two Stream Networks

論文:《Two-Stream Convolutional Networks for Action Recognition in Videos
吸取了Single Stream的失敗教訓,作者特別關注了深度網絡對運動特徵的學習:以疊加光流矢量的形式對運動特徵進行顯式建模。和之前的單個網絡network不同,這裏作者使用兩個單獨的網絡,一個用來提取空間上下文(預訓練完成),一個用來提取運動上下文。
在這裏插入圖片描述
Spatial Net的輸入是視頻的每一幀,Temporal Net的輸入是光流,作者通過實驗發現連續10幀疊加的雙向光流效果最好。這兩個網絡分開訓練,然後最後用SVM融合,最終的結果和之前一樣:採樣平均。這種方法雖然相比於Single Stream來說效果要好(因爲它結合了時間光流信息),但是仍存在一些缺陷:(1)整段視頻的預測採取的是採樣平均的方式完成的,所以還是會丟失部分長時特徵信息;(2)採樣的時候可能會出現“虛假標籤”的情況,因爲採樣的視頻默認是跟整段視頻的ground truth一致的,但實際上可能採樣的那一小片段並非標註的動作;(3)該算法設計到光流的預計算和分開存儲,並且兩個網絡是分別訓練的,無法實現訓練上的端到端。

4.深度學習中的 Action Recognition

受到上述兩種思路的啓發,後續產生了各種各樣的動作識別算法,簡述如下。

4.1 LRCN

論文:《Long-term Recurrent Convolutional Networks for Visual Recognition and Description》2014
代碼[caffe] [pytorch]
貢獻:(1)不再使用傳統的光流方法,而是引入RNN結構;(2)將編碼解碼結構拓展到視頻表徵領域;(3)爲動作識別提出了一個端到端的訓練結構。
簡介:在此文之前有學者探索了在特徵圖上使用LSTM的想法,嘗試從中捕獲時間信息;遺憾的是,最終的結論證明卷積特徵的時間池化比對特徵圖使用LSTM更有效。LRCN的作者基於此結論,設計了一種“編碼-解碼”網絡,編碼部分使用卷積塊,解碼部分使用LSTM單元,並對整個網絡使用端到端的訓練。他們還比較了以RGB圖像和光流分別作爲輸入的效果,最終發現取二者的加權平均作爲網絡輸入纔是最優選擇。
在這裏插入圖片描述
上圖左邊給出了用於Action Recognition的LRCN網絡,右邊則是通用類型的LRCN(可用於其他分類任務)。LRCN能夠處理可變長視頻序列,首先是每一幀送入CNN,這是一個編碼過程;它的輸出送入LSTM,一併送入LSTM的還有上一幀經過LSTM的輸出(也就是說,對於每一幀的LSTM而言,它要接受當前幀的編碼結果以及上一幀的解碼結果)。不同長度的視頻輸入,一般會得到不同的動作分類結果,對於LRCN來說它可以接受任意長度的序列幀。
算法:實際訓練時,作者將視頻分割爲一個個16幀的片段,每一個片段的分類結果是在時間步長上的輸出(y1y16y_1\backsim{y_{16}})平均值,視頻的分類結果則是所有片段預測值取平均。網絡採取端到端的訓練,輸入爲RGB或者光流。
效果(基於UCF101):

score comments
82.92 輸入爲RGB與光流的加權平均
71.1 輸入爲RGB

評論:LRCN仍然避免不了“虛假標籤”的問題,因爲它還是要將視頻分割成片段;其次使用光流意味着單獨計算流特性,耗時耗力;對於長範圍的時間信息還是無能爲力。後來有學者嘗試彌補長時信息的缺陷,通過降低空間分辨率、增加剪輯片段的幀數(60幀),獲得了更好的結果。

4.2 C3D

論文:《Learning Spatiotemporal Features with 3D Convolutional Networks》2014
代碼[caffe] [tensorflow]
貢獻:(1)利用3D卷積網絡作爲特徵提取器;(2)廣泛搜索最佳的3D卷積核、3D卷積網絡;(3)使用反捲積層來解釋模型決策(?)。
簡介:之前處理圖像的卷積都是2D的,這裏作者使用3D卷積構建了一個龐大的模型,用Sports-1M數據集來完成訓練,然後以此作爲其他數據集的特徵提取器(這個特徵提取器後來廣泛被用作 Action Detection 的基礎)。最終,作者實現了一個類似於SVM的簡單線性分類器,該分類器的效果可以達到當時的SOTA。同時,如果再附帶使用 hand-crafted-feature 例如iDT,效果會進一步提升。
在這裏插入圖片描述
上圖上半部分給出了2D卷積和3D卷積的對比,下半部分給出了C3D的網絡結構:8個卷積、5個池化、2個全連接,最後是一個softmax輸出。所有3D卷積的尺寸都是3*3*3、步長爲1,圖中框內的數字表示卷積核的數量;池化層的位置如圖中所示,處理pool1是1*2*2之外,其他池化層都是2*2*2。文章的另一個有趣的部分是使用反捲層來解釋決策;作者在最初的幾幀中關注空間外觀,在隨後的幾幀中跟蹤運動。
在訓練時,作者爲每個視頻隨機抽取兩個時長爲2s的片段,連帶着groundtruth一起作爲動作;在test過程,隨機抽取10個片段,取這10個片段的預測結果的平均值作爲最終的結果。

上面Figure3的註解說3D卷積的尺寸在spatial和temporal空間中都相同,如何理解?C3D屬於 two stream 嗎?這裏使用的是單網絡啊?

效果(基於UCF101):

score comments
83.2 C3D(1net)+ linear SVM
85.2 C3D(3nets)+ linear SVM
90.4 C3D(3nets)+ iDT + linear SVM

評論:首先,長時信息(long range temporal information)的問題仍然沒有解決;其次,這種自然圖像下的預訓練對於某些領域來說作用並不大,例如醫學。和C3D同一時期,有學者提出了分離三維卷積(factorized 3D conv networksFSTCN{F_{ST}CN}),該網絡將3D卷積分解爲空間上的2D卷積和時間上的1D卷積,1D卷積跟在2D卷積的後面,以這種方式在UCF101上得到的結果也能夠與其他模型一較高下。
在這裏插入圖片描述

4.3 Conv3D & Attention

論文:《Describing Videos by Exploiting Temporal Structure》,2015
代碼[tensorflow] [Theano]
貢獻:(1)建立一個3D CNN-RNN的“編碼-解碼”器,以此提取來提取局部時空信息;(2)在“編碼-解碼”框架中加入Attention機制,以此獲取全局上下文信息。
簡介:該文章並不是直接與動作識別相關的,但是它是視頻表徵(video representation)領域的里程碑之作。作者首先使用3D CNN來做預訓練,然後用3D CNN加上LSTM作爲基礎框架來完成視頻描述任務。網絡的整體框架與LRCN基本一致,區別在於:

  1. 不再是簡單的將3D CNN特徵直接送入LSTM,而是需要將3D CNN特徵圖與2D CNN特徵圖進行融合,要注意的是這二者處理的幀是完全相同的,並且它們的參數是在預訓練時確定的,這與LRCN的端到端訓練不一樣。
  2. 在LSTM中加入Attention機制,這就表明時序向量不再是以均值的方式來處理,而是加權平均;每一部分的權重大小取決於各時間段LSTM的輸出值。
    在這裏插入圖片描述

效果:(該網絡基於Youtube2Text數據庫完成視頻描述任務 video caption,並沒有做動作識別!)
評論:該論文第一次將注意力機制引入到視頻表徵任務中,是一個里程碑之作。

4.4 TwoStreamFusion

論文:《Convolutional Two-Stream Network Fusion for Video Action Recognition》,2016
代碼[Matlab]
貢獻:(1)通過加入長時損失函數來實現長時信息建模;(2)提出了一個多級融合結構。
簡介:該網絡基於Two Stream結構提出兩點創新,在不大量增加參數的情況下取得了較好的性能提升:

  1. 融合空間和時間流(這就相當於解決了how和when的問題),空間網絡提取視頻中的空間依賴性,時間網絡提取空間中各位置的週期性運動。因此,將一個特定區域的空間特徵圖映射到相關的時間特徵圖就顯得非常重要,需要在網絡的早期階段就對二者進行融合(後來 TAL-NET 證明晚融合的效果要更好),以便將相同像素位置的響應對應起來。
  2. 對時間網絡進行跨時序幀融合,這樣長時依賴關係就能夠被建模。

在這裏插入圖片描述論文中作者介紹了幾種不同的方式來對spatial和temporal進行融合,在conv5_layer位置進行一次融合,之後分開,在網絡的最後再次進行融合,這種方式的效果是比較好的。對於時間融合(temporal fusion)來說,時間網絡輸出、跨時疊加、卷積池化融合都將被納入最終的損失函數計算中。
效果(基於UCF101):

score comments
92.5 TwoStreamFusion
94.2 TwoStreamFusion + iDT

評論:在TwoStream方向中優勢很大,它在不增加C3D參數的情況下很好的提高了動作識別的性能(?有3D卷積嗎?)。

4.5 TSN

論文:《Temporal Segment Networks: Towards Good Practices for Deep Action Recognition》,2016
Temporal Segment Networks for Action Recognition in Videos》,2017
代碼[Caffe] [Pytorch] [MMAction]
貢獻:(1)提出了一種長時建模的高效解決方案;(2)實踐性地使用了BN、dropout、pre-training。
簡介:TSN還是一種TwoStream的方法,並且實現了當時的SOTA,主要的創新在於兩點:

  1. 作者提出,在整個視頻中稀疏地採樣片段以更好地對長時信號建模,而不是對整個視頻進行隨機採樣。
  2. 對於最終視頻級別的預測結果,作者嘗試了多種不同的策略,最終發現,在每一個片段上分別對時間流、空間流的得分進行平均,然後對時間流、空間流得分使用加權平均,最後以softmax分類結果作爲最終預測值,這種策略的效果是最優的。

除此之外,作者還探討了在小規模數據集上的過擬合問題,並給出了BN、dropout、pre-training的解決辦法;對於網絡輸入,作者提出兩種有別於光流的可選方案——翹曲光流(warped optical flow)和RGB差分(RGB difference)。
在這裏插入圖片描述
在實際訓練中,每個視頻按照時長被均分爲 K 個部分,然後從每個部分中隨機抽取一幀(snippet)組合成一個片段(clip);從每一個 snippet 中得到一個 snippet-level 預測結果,然後使用聚合方法將 clip 中的 snippet 聯合起來形成最終的 video-level 動作分類。
效果(基於UCF101):

score comments
94.0 TSN(input:RGB + flow)
94.2 TSN(input:RGB + flow + warped flow)

評論:作者嘗試解決Action Recognition領域的兩個大的問題:過擬合和長時信號建模,並且還取得了很好的效果,但是依然存在預計算光流和輸入模態的問題。TSN 被後來很多 video understanding 類文章引用,是 action detection 的一個重要基礎,可以說是必須掌握的

TSN目前擁有一套完整的Action Analysis流程(包括recognition、detection、location),它集成於MMAction平臺。
對於想使用TSN的同學,可以直接讀它的第二篇文章(發表於2017年的),該文章主要創新有三點:(1)針對long-range temporal問題提出稀疏採樣的方案,詳細解釋了它的出發點;(2)針對untrimmed video提出分層聚集策略,使得動作識別的場景更加合理化(其實就是解決了detection、location問題);(3)提出各種優化技巧,例如BN的使用、跨模態初始化,還添加了對TSN的可視化分析等。

4.6 ActionVLAD

論文:《ActionVLAD: Learning spatio-temporal aggregation for action classification》,2017
代碼[tensorflow]
貢獻:(1)可學習的視頻級(時空)融合特徵;(2)利用視頻級(時空)融合特徵來完成端到端的模型訓練,以此獲取長時依賴性。
簡介:本文最重要的創新點在於提出了一種可學習的融合特徵——VLAD,和之前利用池化融合特徵的方法相比是完全不同的。類似於視覺詞袋(bag of visual words),VLAD基於詞彙表用多個學好的錨點(anchor-point,{c1,c2,...,ck}\{c_1,c_2,...,c_k\})來表徵 k 個與時空特徵相關的典型動作。兩個分支流的輸出用“k維空間的動作詞袋特徵”進行編碼,每一個特徵都和其他的錨點相區分,如下圖的上半部分所示。
在這裏插入圖片描述
平均池化或者是最大池化都是對一張圖像的像素空間做出一個整體的描述,對於視頻空間來說,它的描述可能不是由一個單獨的維度空間來表徵,那麼pooling的方式就可能不是最佳的。於是作者將描述符空間劃分爲 k 個子單元格,然後在每個單元格內部進行池化,由多個sub-action來生成最後的表徵,上圖的下半部分給出了示意。

效果(基於UCF101):

score comments
92.7 ActionVLAD
93.6 ActionVLAD + iDT

評論:使用VLAD作爲高效池化的方式已經不再流行了,雖然該方式很魯棒並且在2017年的時候取得了動作識別領域的SOTA。

4.7 HiddenTwoStream

論文:《Hidden Two-Stream Convolutional Networks for Action Recognition》,2017
代碼[Caffe]
貢獻:使用一個單獨的網絡來實時產生光流作爲輸入。
簡介:對於每一個採樣幀來說,TwoStream方法中的光流必須提前計算,這樣纔可以保證不影響處理時的存儲和計算速度,針對這個問題本文提出了一種無監督結構來生成一組幀的光流。光流可以看成是一個圖像重構問題,對於給定的相鄰幀 I1I2I_1、I_2,CNN需要產生一個流場 VV;利用預測的流場 VV 和相鄰幀 I2I_2,通過反向翹曲將 I1I_1 重構爲 I1I_1^{\prime},使 I1I_1 與重構值 I1I_1^{\prime} 的差值最小化。
在這裏插入圖片描述
作者在保證不損失精度的情況下,堅持使用最大幀率和最小參數量,探索了多種網絡結構來生成光流,最終得到的網絡結構如上圖所示:時間流分支多了一個光流生成網絡MotionNet,該分支的輸入也不再是預處理計算得到的光流了,而是順序幀。要注意的是,非監督網絡MotionNet將擁有額外的損失函數。作者還實驗了用TSN來代替傳統的TwoStream結構,這對於性能有一定的提升。
效果(基於UCF101):

score comments
89.8 HiddenTwoStream
92.5 HiddenTwoStream + TSN

評論:本文主要的貢獻在於提升了預測的速度,降低了預測的成本,和傳統算法相比減少了對於光流計算網絡的依賴。現在已經有很多專門用於光流計算的網絡了,比如 SelFlow,PWC-Net 等,都是爲了 Two-Stream 提取時序特徵用。

4.8 I3D

論文:《Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset》,2017
代碼[tensorflow] [Pytorch]
貢獻:(1)利用預訓練將3D卷積模型和TwoStream結構相結合;(2)生成了Kinetics數據集,提高了動作識別數據集的多樣性。
簡介:該文章以C3D作爲出發點,在TwoStream的兩個分支結構中使用不同的3D卷積,在3D模型中使用了2D預訓練模型的權重,空間分支的輸入不再是單張圖像而是帶有時間維度的時序幀。
在這裏插入圖片描述
從上圖上半部分的對比可以大致看出 I3D 的形成過程,下半部分則給出了單個分支中基於Inception V1的3D卷積實現。圖中未標明步長的卷積和池化層默認stride爲1,prediction之前的BN、ReLU以及softmax部分在圖中省略了;與此同時,該圖還給出了不同階段模型的感受野,左邊“Inc”指的就是Inception塊,其具體實現在右邊。
效果(基於UCF101):

score comments
93.4 TwoStream I3D
98.0 ImageNet + Kinetics pre-training

評論:該論文證明了使用預訓練2D卷積模型的益處,Kinetics開源數據集則是該文章的另一個突出貢獻。它和 C3D、TSN 一起,作爲後續 Action Detection 研究很重要的基礎。

4.9 T3D

論文:《Temporal 3D ConvNets: New Architecture and Transfer Learning for Video》,2017
代碼[Pytorch]
貢獻:(1)提出了一種在可變深度(?)中結合時間信號(temporal information)的網絡結構;(2)提出了一種全新的訓練模型和技術,可以監督從2D預訓練到3D網絡之間的切換過程。
簡介:該文章延續了I3D的工作,不同的是作者主張使用基於3D DenseNet 的SingleStream(而不是TwoStream),在dense塊的後面接上不同深度的時序池化層(Temporal Transition Layer),以此來獲取不同的時序深度信息;不同深度的池化層擁有不同時序大小的池化核,如下圖的上半部分所示。
在這裏插入圖片描述
上圖的下半部分展示了基於2D卷積的預訓練網絡向基於3D卷積的DenseNet的轉換過程,2D卷積處理的是單幀RGB,3D卷積則處理同一時間戳下的視頻塊,2D卷積通過這種“圖像-視頻協作”任務“教會”3D卷積學習中間層的特徵表徵。在訓練過程中,爲了使得模型高效習得3D卷積的參數,2D卷積的預訓練參數將被凍結。
效果(基於UCF101):

score comments
90.3 T3D
91.7 T3D + Trsanfer
93.2 T3D + TSN

評論:雖然T3D相比於I3D而言並沒有多大的性能改善,但是佔用的內存空間卻要小很多;同時它還提出了一種2D向3D學習轉換的監督技術。

上面的內容基本截止到2017,下面是一些該綜述中未提到的、近期出現的、個人覺得比較好的方法。

5. 近期 Action Recognition 方法

5.1 Non-Local

論文:《Non-local Neural Networks》2018
代碼[Caffe]
貢獻:(1)提出了一種非局部連接(Non-local operations)的計算塊 (building block),用於處理視頻和圖像的長程依賴關係(long-range dependency);(2)在視頻數據集Kinetics and Charades datasets,目前最優(對比2D或3D卷積網絡);(3)圖像分類數據集COCO,能夠提升精度。
簡介:Non-Local 方法來自於 NLM(Non-Local Means,非局部均值)的啓發,NLM 主要用於圖像降噪,之所以稱之爲“非局部”是因爲它所運用的搜索框形式會使得當前像素點的像素值依賴的範圍大大增加(一般搜索框大小是21*21),具體算法看這裏。考慮將 NLM 用於卷積層之前,在提取特徵的時候先進行降噪處理;具體思想可以用一個公式來概括yi=1C(x)jf(xi,xj)g(xj)y_i=\frac{1}{C(x)}\sum_{\forall{j}}f(x_i, x_j)g(x_j)其中 xix_i 表示中心點,xjx_j 表示該中心點的非局部搜索框裏面的任意一點,f(xi,xj)f(x_i, x_j) 表示二者之間的相似度(其實就是一個權重),C(x)C(x) 是一個歸一化係數。論文對於 fgf、g 給出了幾種不同的實現方式,例如 ff 使用高斯函數、邊緣高斯等,gg 使用線性函數編碼。Non-Local 塊同時還有res殘差塊的痕跡,看下圖:

在這裏插入圖片描述

實現細節:時域上,64幀窗口採樣32幀作爲輸入;空域上,從[256, 320]上截取一個[224, 224]的區域;inference時,從一個視頻裏取10段分別做前向,再將結果做softmax後再取平均。
效果(基於Kinetics):在這裏插入圖片描述
評論:非局部連接塊已經成爲神經網絡中類似於殘差塊的一種優化結構,它不僅在視頻分類模型中有較好的的表現,也能夠添加到其他網絡中。

5.2 ECO

論文:《ECO: Efficient Convolutional Network for Online Video Understanding》2018
代碼[pytorch]
貢獻:(1)仿照TSN從 video 中均勻採樣固定數量的視頻幀,以此應對動作的長時結構問題;(2)利用 3D 卷積對從採樣幀提取的 feature map 進行 end-2-end 的融合,效果更好且不再需要單獨提取光流,速度提升10倍以上;(3)基於ECO提出一個視頻理解的 online 處理框架,獲得較好的效果。
ECO框架
簡介:上圖給出了 ECO-lite 的完整網絡結構,S1SNS_1-S_N 是從視頻中採樣得到的 N 個 RGB 的 segment,經過 2D-Net 可以產生 N 個 K2828K*28*28 的特徵圖,堆疊後得到一個 KN2828K*N*28*28 的volume;將 volume 送入 3D-Net(這裏其實就將時序特徵融合的思想包含在裏面),輸出一個512維 video-level 的特徵向量,最後經過一個全連接得到分類結果。如果在 3D-Net 的位置加一個 2D-Nets,對 volume 並行計算,輸出一個1024維 video-level 的特徵向量,然後將兩個 video-level 特徵向量concat,則得到 ECO-Full 模型,如下圖所示。(ECO完整網絡結構.pdf
在這裏插入圖片描述
下圖給出了 online 視頻理解處理框架,它的亮點在於增加了一個記憶組 SNS_N,使得預測時在以當前視頻爲主的同時兼顧過往視頻的影響。(論文的詳細分析參考)
在這裏插入圖片描述
效果:(基於UCF-101,下標 NF_{NF} 表示視頻採樣幀數)

score comments
87.4 ECOlite4FECO_{lite-4F}
90.3 ECO4FECO_{4F}
92.4 ECO12FECO_{12F}
93.0 ECO20FECO_{20F}
93.6 ECO24FECO_{24F}

評論:ECO 利用 3D 卷積來做融合是一個很好的思路,它無需依賴光流使得online成爲可能,同時網絡結構簡單參數少,在速度和精度上都有良好的性能。

5.3 st-GCN

論文:《Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition》2018
代碼[Pytorch]
TODO

5.4 TSM

論文:《TSM: Temporal Shift Module for Efficient Video Understanding》2019
代碼[Pytorch]
貢獻:提出了temporal shift的思想,能夠兼顧2D CNN的高效以及3D CNN的時空建模能力;同時提出了partial shift、residual shift兩種優化策略,能夠保證模型的高效;在online video問題上給出uni-directional TSM方案,是一種低延時的解決辦法。
簡介:TSM全稱Temporal Shift Module,和它最相似的論文應該是前面提到的TSN,後者的問題在於對時序信息的建模不夠充分,之後有一些工作就是基於此進行的改進,例如I3D、P3D等。這些工作雖然能夠有效捕捉時空特徵,但從2D CNN發展到3D CNN不可避免的要引入額外計算量,TSM巧妙地通過將時間維度的特徵進行位移,理論上用零額外計算開銷達到了不同幀之間時空特徵聯合建模的目的。
在這裏插入圖片描述
這裏僅就online video的實現方案做一個介紹。它的基本步驟跟TSN是一樣的:首先對一段視頻隨機採樣 TT 幀,{F1,F2,,FT}\{F_1,F_2,\dots,F_T\},然後將每一幀 FiF_i 送入2D CNN計算特徵feature,最終得到屬於該圖像的輸出,將 TT 個輸出做平均作爲video-level的結果。TSM的改進之處在於:將 Ft1F_{t-1} 的每一層特徵的前1/81/8保存下來,在計算 FtF_{t} 的第 kk 層特徵時,用 Ft1F_{t-1}k1k-1 層中前 1/81/8 特徵替代掉 FtF_tk1k-1 層的前 1/81/8,再做卷積計算,之後的以此類推。

之所以要在時間維度上進行這種特徵通道的替換,是爲了在當前圖像特徵中融合上一幀的部分信息,就能夠有效建模時序特徵,可參見下圖左邊理解。其次,由於部分通道特徵的替換,會影響到空間特徵的學習,作者引入了類似於殘差塊的 residual shift 結構,如下圖右邊所示,shift就是做替換的位置,替換之後的特徵做完卷積會加上原始特徵以保證不丟掉任何當前幀的空間信息。另外,取特徵通道的前 1/81/8 是作者通過實驗確定的,你不能替換的太少(時序建模效果不明顯),也不能替換的太多(延遲太大,且會影響空間特徵的學習),此稱之爲 partial shift。
在這裏插入圖片描述
效果
在這裏插入圖片描述
評論:該方法提出一種全新的時序建模思路,具有極大的參考價值;雖然其本質還是注意力機制,但是它能很輕易地部署在任何邊緣設備上,用sth-v2預訓練模型實測TSM時,單個視頻的識別速度在0.15s左右。

5.5 2s-AGCN

論文:《Two-Stream Adaptive Graph Convolutional Networks for Skeleton-Based Action Recognition》2019
代碼:[Pytorch]
TODO

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