更多幹貨內容請關注微信公眾號“AI 前線”,(ID:ai-front)
MRI、CT(三維影像)之類的醫療影像和視訊非常類似——它們都是在第三個維度上對二維空間資訊進行編碼。與從三維影像中進行異常診斷很像,從視訊中進行動作識別需要從整個視訊中捕捉上下文資訊而不只是從每一幀中捕捉資訊。
圖 1: 左圖:頭部 CT 掃描示例。右圖:來自動作識別資料集的示例視訊。CT 容積圖中的 Z 維和視訊中的時間維度類同。
在本文中,我會總結視訊動作識別相關的文獻。這篇博文分為三個章節——
-
動作識別是什麼以及它為什麼很難
-
解決方案概覽
-
論文總結
動作識別任務涉及從視訊剪輯(一串二維幀序列)中識別不同的動作,其中的動作可能貫穿整個視訊,也可能不會。這有點兒像影像分類任務的一種自然擴充套件,即在多幀視訊中進行影像識別,然後從每一個幀中聚集預測結果。儘管深度學習框架在影像分類(ImageNet)領域取得了成功,但是視訊分類和表示學習領域的架構進展緩慢。
1. 巨大的計算成本 一個簡單的 101 分類的二維卷積網路只有大約 5M 引數,而相同架構擴充套件到一個三維結構就會增長為大約 33M 引數。在 UCF101 上訓練一個三維卷積網路(3DConvNet)需要 3 到 4 天時間,而在 Sports-1M 上需要大約 2 個月時間,這使得外延框架探索變得困難而且可能過度擬合 [1]。
2. 捕捉長期的上下文 動作識別涉及捕捉跨幀的時空上下文。另外,捕捉的空間資訊必須針對攝像頭移動進行補償。即使有很強的空間物件檢測能力也不能滿足需要,因為運動資訊還攜帶更詳細的細節。為了穩健的預測,需要在捕捉區域性上下文 w.r.t 的同時捕捉全域性的 w.r.t 運動資訊上下文。以圖 2 所演示的視訊為例。一個強大的影像分類器能夠識別兩個視訊中的人類、水體,但是識別不出自由泳與蛙泳的時間週期性的動作特徵的區別。
圖 2: 上圖為自由泳。下圖為蛙泳。捕捉時間性運動是區分這兩種看起來很相似的情況的關鍵。另外,還需要注意,相機角度在自由泳視訊中段如何突然改變。
3. 設計分類架構 設計能夠捕捉時空資訊的架構涉及評估多個不同尋常且代價很大的選項。例如,一些可選的策略有:
-
一個同時捕捉時空資訊的網路 vs 兩個網路,一個捕捉時間資訊,一個捕捉空間資訊。
-
跨多個剪輯的融合預測
-
端到端訓練 vs 分別進行特徵提取和分類
4. 沒有標準的基準 長期以來,UCF101 和 Sports1M 都是最流行的基準資料集。探索基於 Sports1M 的合理架構代價非常大。對於 UCF101,儘管幀數與 ImageNet 相當,但是視訊之間的空間高關聯性讓訓練中的實際多樣性小得多。此外,考慮到相似的主題(運動)在資料集、基準框架向其它任務的推廣方面仍然是一個問題。這點最近已經隨著 Kinetics 資料集的引入而被解決 [2]。
UCF-101 插圖示例。來源(http://www.thumos.info/)
這裡必須一提的是,三維醫療影像異常檢測並不涉及這裡提到的所有挑戰。動作識別與醫療影像的區別如下:
就醫療成像來說,時間上下文可能不如動作識別那樣重要。例如,頭部大出血 CT 掃描檢測應該較少涉及跨片段的時間上下文。顱內大出血能夠從單個片段中檢測出來。與之相反的是,從胸部 CT 掃描中進行肺結節檢測會涉及捕捉時間上下文,因為結節與支氣管和血管在二維掃描中看起來都像圓形物體。只有捕捉三維上下文,球形物體的結節才能與圓柱形物體的血管區分開。
就動作識別來說,大部分研究理念都藉助於使用預訓練的二維卷積神經網路作為起點來獲取更好的收斂結果。就醫療影像來說,沒有這樣可用的預訓練網路。
在深度學習之前,大部分用於動作識別的傳統 CV(計算機視覺,computer vision)演算法變體可以分為以下 3 個廣義步驟:
描述視訊區的區域性高維視覺化特徵是提取自密集的 [3] 或者稀疏的特徵點(intereset points)集 [4][5]。
提取的特徵組成固定規格的視訊級別描述。這個步驟的一個流行變體是將視覺詞彙打包來在視訊級別編碼特徵。
基於視覺詞彙包對 SVM 或 RF 之類的分類器進行訓練來得到最終預測。
在步驟 1 使用表面人工特徵的這些演算法中,使用密集取樣軌跡特徵的 iDT 演算法(improved Dense Trajectories[6],改進型密集軌跡演算法)是最先進的。同時,在 2013 年用於動作識別的三維卷積演算法也沒有帶來多少幫助 [7]。2014 年之後不久,兩篇突破性的研究論文先後發表,它們構成了我們在本文中將要討論的所有論文的主幹。它們的主要區別是圍繞組合時空資訊的設計選擇。
在這篇論文【2014 年 6 月 https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/42455.pdf 】中,其作者——Karpathy et al.——探索了多種方法來使用預訓練的二維卷積網路從連續幀中融合時間資訊。[8]
圖 3: 融合理念。來源
如圖 3 所示,視訊的連續幀是所有設定中的輸入。Single frame 使用單個架構,在最後階段融合來自所有幀的資訊。Late fusion 使用共享引數的兩個網路,間隔 15 幀,然後在最後組合預測。Early fusion 通過卷積 10 多幀在第一層進行組合。Slow fusion 涉及在多個階段的融合,是 early fusion 與 late fusion 的一種平衡。為了最終預測,從整個視訊中取樣多個剪輯並在最後平均化它們的預測分數。
儘管進行了大量實驗,作者發現,與現有的基於人工特徵的演算法相比,結果明顯更差。造成這一失敗的原因有很多:
學習的時空特徵沒有捕捉運動特徵
資料集多樣化相對較少,學習這種詳細特徵比較困難。
在 Simmoyan 和 Zisserman 的這個開拓性論文【2014 年 6 月 https://arxiv.org/pdf/1406.2199.pdf】 中,作者吸取了先前 Karpathy et al. 的論文的失敗教訓。考慮到學習運動特徵的深度框架的困難度,作者明確以堆積光流向量的形式建模運動特徵。因此,這個框架有 2 個單獨的網路——一個用於空間上下文(預訓練的),一個用於運動上下文,而不是隻有單個用於空間上下文的網路。空間網路的輸入是視訊中的一個單幀。作者對時間網路的輸入進行了實驗,發現跨 10 個連續幀堆積的雙向光流表現最好。這兩個流分別進行訓練,然後使用 SVM 進行組合。最終預測和先前的論文一樣,平均化多個取樣幀的預測得分。
圖 4: 雙流架構。來源(https://arxiv.org/pdf/1406.2199.pdf)
儘管這種方法通過明顯捕捉區域性時間運動提升了單流方法的效能,但仍然存在一些缺點:
-
由於視訊層級預測是通過平均取樣剪輯的預測得分獲得,因此在學習的特徵中長期的時間資訊仍然是丟失的。
-
由於訓練的剪輯是從視訊中均勻取樣的,因此它們存在錯誤標籤分配問題。每個剪輯都相同的基本假設與動作可能只發生在整個視訊的很小一個時間段的基本情況不符。
-
這個方法涉及預計算光流向量並分別儲存它們。另外,針對兩個流的訓練是分離的,意味著端到端訓練落地還有很長的一段路要走。
下列論文是基於這兩篇論文(單流與雙流)的某種方式的演化:
-
LRCN
-
C3D
-
Conv3D & Attention
-
TwoStreamFusion
-
TSN
-
ActionVlad
-
HiddenTwoStream
-
I3D
-
T3D
這些論文中經常出現的主題可以歸納如下。所有論文都是基於這些基本理念的即興創作。
論文中經常出現的主題。來源 https://arxiv.org/pdf/1705.07750.pdf
對於每一份論文,我列舉出它們的主要貢獻並進行解釋。我還展示了它們在 UCF101-split1(http://crcv.ucf.edu/data/UCF101.php) 上的基準得分。
用於視覺識別和描述的長期遞迴卷積網路(Long-term Recurrent Convolutional Networks)
Donahue et al.提交於 2014 年 11 月 17 日
Arxiv 連結:https://arxiv.org/abs/1411.4389
-
基於先前的工作構建,使用遞迴神經網路(RNN,recurrent neural network)而不是基於流的設計
-
面向視訊展示的編碼 – 解碼架構擴充套件
-
提出用於動作識別的端到端可訓練架構
在先前 Ng et al 的論文中 [9],作者已經探索了在分離訓練的特徵圖上使用 LSTM 來看看它是否可以從剪輯中捕捉時間資訊的想法。令人遺憾的是,他們得出結論,卷積特徵的時間聚集(temporal pooling)證明比對訓練的特徵圖進行 LSTM 堆積更有效。在這篇論文中,作者基於在卷積塊(編碼器)之後使用 LSTM 塊(解碼器)的相同想法,但是整個架構使用端到端訓練。他們還對 RGB 和光流作為輸入選項進行了比較,發現基於兩種輸入的加權預測得分是最好的。
圖 5: 左邊為面向動作識別的 LRCN。右邊為面向所有任務的通用 LRCN 架構。來源(https://arxiv.org/pdf/1411.4389.pdf)
在訓練期間,從視訊中取樣了 16 幀剪輯。這個架構用 RGB 或 16 幀剪輯的光流作為輸入進行端到端訓練。每個剪輯的最終預測是每個時間步長的預測平均值。視訊級別的最終預測是每個剪輯的預測平均值。
儘管作者提出了端到端訓練框架,但仍然有一些缺點:
-
由於視訊進行了剪輯而造成的錯誤標籤分配
-
不能捕捉長期時間資訊
-
使用光流意味著分別預計算流特徵
Varol et al. 在他們的論文 [10] 中嘗試通過使用更小的視訊空間解析度和更長的剪輯(60 幀)來補救有缺陷的時間範圍問題,這明顯提升了效能。
用三維卷積網路學習時空特徵
Du Tran et al.
提交於 2014 年 12 月 02 日
Arxiv 連結:https://arxiv.org/pdf/1412.0767
-
將三維卷積網路用作特徵提取器
-
最佳三維卷積核心和架構的廣泛探索
-
使用反摺積層來解釋建模決策
作者基於 Karpathy et al. 的論文(single stream)構建了這篇論文。然而,他們在視訊音量上使用三維卷積演算法,而不是跨幀使用二維卷積演算法。其理念是在 Sports1M 上訓練這些網路,然後使用它們(或者一套擁有不同時間深度的網路)作為其它資料集的特徵提取器。他們的發現是一種類似 SVM 的基於全套提取特徵的簡單線性分類器,比現有最好的演算法更有效。如果使用類似 iDT 的人工特徵,這個模型會表現得更好。
C3D 論文和單流論文的區別。來源(https://arxiv.org/pdf/1412.0767)
這篇論文的另外一個有意思的部分是使用反摺積層(解釋連結http://blog.qure.ai/notes/visualizing_deep_learning) 來解釋決策。他們發現,網路在前幾幀聚焦於空間外觀,並在後續幀中跟蹤運動。
在訓練期間,假設已知動作在整個視訊中的分佈,則從每個視訊隨機提取 5 個 2 秒剪輯。在測試期間,隨機取樣 10 個剪輯,最終對他們的預測得分進行平均從而得到最終預測。
卷積應用在一個時空立方體上的三維卷積。
長期時間建模仍然是一個問題。此外,訓練如此巨大的網路在計算上是一個難題——特別是對於醫療成像來說,自然影像的預訓練沒有多大幫助。
幾乎與此同時,Sun et al. [11] 提出了因式分解三維卷積網路(FSTCN)的理念,其中作者探索了將三維卷積分解成空間二維卷積和時間一維卷積。這個一維卷積放在二維卷積層後面,實現為一個在時間和通道維度上的二維卷積。因式分解三維卷積(FSTCN)在 UCF101 split 上的結果也很可觀。
論文和三維因式分解。來源(https://arxiv.org/pdf/1510.00562.pdf)
利用時間結構來描述視訊
Yao et al.
提交於 2015 年 4 月 25 日
Arxiv 連結:https://arxiv.org/abs/1502.08029
-
捕捉區域性時空資訊的新型 3D CNN-RNN 編碼 – 解碼架構
-
使用 attention 機制和 CNN-RNN 編碼 – 解碼框架來捕捉全域性上下文
儘管這篇論文與動作識別沒有直接關聯,但是這是一篇視訊表示相關的具有重大意義的論文。在這篇論文中,作者使用了一種 3D CNN+LSTM 架構作為視訊描述任務的基礎架構。在這個基礎之上,作者使用了一個預訓練的 3D CNN 來改進結果。
其設定與在 LRCN 中描述的編碼 – 解碼架構幾乎相同,只有 2 點不同:
-
剪輯的 3D CNN 特徵圖用同幀集的 2D 特徵堆積圖級聯來豐富每一幀 i 的表示式{v1, v2, …, vn},而不是將特徵從 3D CNN 傳給 LSTM。備註:使用的 2D & 3D CNN 是預訓練的,而不是像 LRCN 那樣的端到端訓練。
-
使用加權平均來組合時間特徵,而不是對所有幀的時間向量進行平均。其中 attention 權重基於每個時間步長的 LSTM 輸出決定。
動作識別的 attention 機制。來源(https://arxiv.org/abs/1502.08029)
這是 2015 年的一篇具有重大意義的論文,首次提出了面向視訊表示的 attention 機制。
面向視訊動作識別的雙流卷積網路融合
Feichtenhofer et al.
提交於 2016 年 4 月 22 日
Arxiv 連結:https://arxiv.org/abs/1604.06573
-
通過長期損失進行長期時間建模
-
新型多級融合架構
在這篇論文中,作者使用基礎的雙流架構以及 2 種新型方案,在不顯著增加引數規模的情況下提升了效能。作者探索了這兩種想法的功效。
-
空間流和時間流的融合(如何融合、什麼時候融合)——對於洗頭和刷牙之間的任務識別,空間網路能夠捕捉視訊中的空間依賴(比如頭髮或牙齒),而時間網路能夠捕捉視訊中每個空間位置的週期性執行的存在。因此,將對應於特定面部區域的空間特徵圖對映到時間特徵圖的對應區域是非常重要的。為了實現同樣目的,2 個網路需要在早期進行融合,使得在相同畫素位置的響應被置於相應的位置,而不是(像在基礎雙流架構中那樣)最後才融合。
-
跨時間幀來組合時間網路輸出,從而對長期依賴也進行建模。
演算法:與雙流架構幾乎保持一致,除了:
-
如下圖所示,來自兩個流的 conv_5 層輸出通過 conv+pooling 融合。在最後一層還有另外一次融合。最終融合的輸出用於時空損失評估。
用於融合空間流和時間流的可能策略。右邊的策略表現更好。來源(https://arxiv.org/abs/1604.06573)
2. 對於時間融合來說,來自時間網路的輸出,跨時間堆疊,然後通過 conv+pooling 的融合,是用於時間損失的。融合架構。
雙流有兩種路徑,一種是第一步,另一種是第二步。來源(https://arxiv.org/abs/1604.06573)
作者奠定了 TwoStreamFusion 方法的優越性,因為它的效能超越了 C3D 卻沒有 C3D 中使用的額外引數。
時間段網路:面向深度動作識別的良好實踐
Wang et al.
提交於 2016 年 8 月 02 日
Arxiv 連結:https://arxiv.org/abs/1608.00859
主要貢獻:
-
面向長期時間建模的有效解決方案
將使用批量標準化(batch normalization)、dropout(譯者注:dropout 是指在深度學習網路的訓練過程中,對於神經網路單元,按照一定的概率將其暫時從網路中丟棄)和預訓練建立為良好實踐
在這篇論文中,作者對雙流架構進行了優化,從而產生最好的結果。與原論文相比,有兩個主要的區別:
-
他們建議從視訊中稀疏地取樣剪輯從而獲取更好的長期時間訊號建模,而不是在整個視訊中隨機取樣。
-
針對視訊等級的最終預測,作者探索了多種策略。最佳策略是:
-
通過平均每個片段,分別組合空間流和時間流(和其它流,如果涉及其它輸入形式)的得分
-
對最終的空間得分和時間得分使用加權平均方法獲得融合得分,在所有類上應用 softmax。
論文的另外一個重要部分是,建立了過度擬合問題(由於資料集規模較小)並演示了現在流行的批量標準化、dropout、預訓練等技術。作者還評估了光流之外的兩種新的輸入形式——即扭曲光流(warped optical flow)和 RGB 差值。
在訓練和預測過程中,一個視訊被分割成 K 個時間段相同的片段。在那之後,從 K 個片段中隨機取樣一些片段。其餘步驟與雙流構架相似,除了上述的一些變化。
時間段網路構架。來源(https://arxiv.org/pdf/1608.00859.pdf)
這篇論文嘗試處理動作識別領域的 2 個巨大挑戰——由於資料集規模較小的過度擬合和長期時間建模,而且其結果非常不錯。然而,預計算光流問題和相關的輸入形式仍然是一個問題。
ActionVLAD: 面向動作分類的時空聚合學習
Girdhar et al.
提交於 2017 年 4 月 10 日
Arxiv 連結:https://arxiv.org/pdf/1704.02895.pdf
解主要貢獻:
-
可學習的視訊級別特徵聚合
-
具有視訊聚合特徵的端到端可訓練模型來捕捉長期依賴
在這篇論文中,作者最突出的貢獻是,相對於使用 maxpool 後者 avgpool 的普通聚合來說,對可學習的特徵聚合(VLAD)的使用。這個聚合技術類似於視覺詞彙包。以多個學到的錨點(比如 c1, …ck)為基礎的詞彙表示 k 個典型動作(或者子動作)相關的時空特徵。在雙流架構中的每個流的輸出是用 k 個“動作詞彙”相關特徵編碼的——針對任何給定的空間或時間位置,每個特徵與對應錨點的輸出都是不同的。
ActionVLAD——基於動作包的視覺“詞彙”。來源(https://arxiv.org/pdf/1704.02895.pdf)
平均或最大池化(譯者注:max-pooling,是指將輸入的影像劃分為若干個矩形區域,對每個子區域輸出最大值。)表示特徵點的完整分佈,因為單個描述符對於表示多個子動作組合而成的完整視訊來說可能是次優的。相反地,論文中提出的視訊聚合,通過將描述符空間分成 k 個單元並且在每個單元中聚合(pooling),從而將一個完整描述符的分佈表示為多個子動作。
儘管最大池化或者平均池化對於相似的特徵表現良好,但它們並沒有充分地捕捉到完整的分佈特徵。ActionVLAD 聚集了外觀和運動特徵,並從最近的叢集中心聚集其餘特徵。來源(https://arxiv.org/pdf/1704.02895.pdf)
除了 ActionVLAD 層的使用,一切與雙流架構都幾乎保持相似。作者嘗試了多層架構,將 ActionVLAD 層和 late fusion 放在 conv 層之後作為最佳策略。
使用 VLAD 作為一種有效的聚集(pooling)方法已經被證明很久了。在 2017 年初,端到端框架中的相同擴充套件,使得這項技術對於大多數動作識別任務來說非常健壯和先進。
面向動作識別的隱雙流卷積網路
Zhu et al.
提交於 2017 年 4 月 2 日
Arxiv 連結:https://arxiv.org/abs/1704.00389
-
利用隔離網路生成動態光流輸入的新型架構
在雙流架構中對光流的使用使得需要強制預計算每個取樣幀之前的光流,從而對儲存和速度產生不利影響。這篇論文提倡使用一種無監督架構來針對幀堆疊生成光流。
光流可以看作是一種影像重構問題。假定一組相鄰的幀 I1 和 I2 作為輸入,我們的卷積神經網路生成一個流場 V。然後使用預測的流場 V 和 I2,可以使用逆翹曲(inverse wraping)方法將 I1 重構為 I1`,使得 I1 和它的重構體之間的差別最小化。
作者探索了多種策略和架構來生成具有最大 fps 和最少引數且儘可能不損傷準確度的光流。最終的架構與雙流架構相同,但進行了如下改變:
-
時間流現在擁有堆疊在通用時間流架構上的光流生成網(MotionNet)。時間流的輸入現在是自然幀而不是預處理過的光流。
-
對於 MotionNet 的無監督訓練來說,具有額外的多級損失。作者展現了使用基於 TSN 的融合而不是針對雙流方案的卷積架構在效能方面的提升。
HiddenTwoStream——MotionNet 生成動態光流。來源(https://arxiv.org/pdf/1704.00389.pdf)
這篇論文的主要貢獻是改進了預測的速度和相關成本。隨著流的自動生成,作者減輕了對較慢的傳統生成光流方法的依賴。
動作識別將何去何從?一種新型模型和 Kinetics 資料集
Carreira et al.
提交於 2017 年 5 月 22 日
Arxiv 連結:https://arxiv.org/abs/1705.07750
-
利用預訓練將三維模型組合到雙流架構中
-
面向未來基準和改進動作資料集多樣性的 Kinetics 資料集
這篇論文基於 C3D。作者在雙流架構中使用了 2 種不同的三維網路而不是單個三維網路。另外,為了利用預訓練二維模型的優勢,作者在第三維中重用了二維預訓練權重。空間流輸入現在包括時間維度堆積的幀而不是基礎雙流架構中的單種幀。
除了針對每個流的三維網路,和基礎的雙流架構相同。
這篇論文的主要貢獻是展現了使用預訓練二維卷積網路的好處的證據。論文中開源的 Kinetics 資料集也是這篇論文的另外一個重要貢獻。
時間三維卷積網路(Temporal 3D ConvNets):視訊分類的新架構和遷移學習演算法
Diba et al.
提交於 2017 年 11 月 22 日
Arxiv 連結:https://arxiv.org/abs/1711.08200
-
可變深度的時間資訊組合架構
-
監督二維預訓練網路到三維網路的遷移學習的新型訓練架構和技術
解釋:作者擴充套件了 I3D 上所做的工作,但建議使用基於單流 3D DesnseNet 的架構和在密集塊之後堆積的多深度時間聚集層(Temporal Transition Layer)來捕捉不同的時間深度。這個多深度聚集(multi depth pooling)是通過變化的時間規模核心的聚集來實現的。
TTL 層和 DenseNet 架構的其餘部分。來源(https://arxiv.org/abs/1711.08200)
除上述之外,作者還設計了一種新的介於預訓練二維卷積網路和 T3D 之間的有監督遷移學習技術。其中的二維預訓練網路和 T3D 都來自視訊的幀和剪輯,而這些視訊剪輯可能來自相同的視訊,也可能不是。這個架構被訓練,基於 T3D 網路反向傳播的預測的正確和錯誤來預測 0/1,從而高效遷移知識。
有監督遷移學習。來源(https://arxiv.org/abs/1711.08200)
這個架構基本上是對 DenseNet[12] 的三維修改,新增了可變時間聚集(variable temporal pooling)。
儘管最終並沒有提升 I3D 的結果,但這很大程度上可能歸因於相對於 I3D 來說低得多的模型記錄。這個論文的最新貢獻是有監督遷移學習技術。
Rohit Ghosh
檢視英文原文:
http://blog.qure.ai/notes/deep-learning-for-videos-action-recognition-review
[1] ConvNet Architecture Search for Spatiotemporal Feature Learning by Du Tran et al.
[2] Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset
[3] Action recognition by dense trajectories by Wang et. al.
[4] On space-time interest points by Laptev
[5] Behavior recognition via sparse spatio-temporal features by Dollar et al
[6] Action Recognition with Improved Trajectories by Wang et al.
[7] 3D Convolutional Neural Networks for Human Action Recognition by Ji et al.
[8] Large-scale Video Classification with Convolutional Neural Networks by Karpathy et al.
[9] Beyond Short Snippets: Deep Networks for Video Classification by Ng et al.
[10] Long-term Temporal Convolutions for Action Recognition by Varol et al.
[11] Human Action Recognition using Factorized Spatio-Temporal Convolutional Networks by Sun et al.
[12] Densely Connected Convolutional Networks by Huang et al.