MRI、CT(三維圖像)之類的醫療圖像和視頻很是相似——它們都是在第三個維度上對二維空間信息進行編碼。與從三維圖像中進行異常診斷很像,從視頻中進行動做識別須要從整個視頻中捕捉上下文信息而不僅是從每一幀中捕捉信息。php
圖 1: 左圖:頭部 CT 掃描示例。右圖:來自動做識別數據集的示例視頻。CT 容積圖中的 Z 維和視頻中的時間維度類同。算法
在本文中,我會總結視頻動做識別相關的文獻。這篇博文分爲三個章節——api
動做識別是什麼以及它爲何很難微信
解決方案概覽網絡
論文總結架構
動做識別任務涉及從視頻剪輯(一串二維幀序列)中識別不一樣的動做,其中的動做可能貫穿整個視頻,也可能不會。這有點兒像圖像分類任務的一種天然擴展,即在多幀視頻中進行圖像識別,而後從每個幀中彙集預測結果。儘管深度學習框架在圖像分類(ImageNet)領域取得了成功,可是視頻分類和表示學習領域的架構進展緩慢。框架
1. 巨大的計算成本 一個簡單的 101 分類的二維卷積網絡只有大約 5M 參數,而相同架構擴展到一個三維結構就會增加爲大約 33M 參數。在 UCF101 上訓練一個三維卷積網絡(3DConvNet)須要 3 到 4 天時間,而在 Sports-1M 上須要大約 2 個月時間,這使得外延框架探索變得困難並且可能過分擬合 [1]。ide
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.