雙流網路
雙流網路把影片理解拆成兩個平行的 CNN,呼應一種粗略的知覺分工:一條流看外觀(單一張 RGB 影格,回答「畫面中有哪些物體與場景?」),另一條流看運動(一疊光流場,回答「東西如何移動?」)。接著融合它們的預測。這個構想出自 Simonyan 與 Zisserman(2014),認為顯式的運動輸入能補上單靠 2D 影像網路看不見的東西,而它正是第一個讓深度影片分類具備競爭力的架構。
空間流(spatial stream)是一個標準影像 CNN,跑在一張(或數張抽樣的)RGB 影格上,擷取物體、場景與姿態線索,這也是它能用 ImageNet 預訓練的原因。時間流(temporal stream)吃進一疊 L 張連續的光流場(每張是水平與垂直位移的雙通道影像,故輸入有 2L 個通道),因此它的第一層直接看到短期運動。兩條流分開訓練,再以後期融合(late fusion,把 softmax 分數平均或訓練一個 SVM)結合,不過後續研究在中層卷積層做融合以獲得更豐富的互動。時序分段網路(TSN)把這個想法延伸到長影片,做法是抽取散布於整段片段的分段並加以彙整,解決了原方法時間涵蓋範圍過短的問題。
它流傳下來的啟示是:運動(光流)與外觀互補,餵入預先計算的光流帶來巨大的準確度提升,這是當時純 RGB 網路無法企及的。它流傳下來的問題是成本:計算光流既慢又佔儲存,破壞了即時使用。這驅動了兩種回應:在網路內部學習運動表示(hidden two-stream、TVNet),以及放棄顯式光流、改用隱式學習運動的 3D 卷積。即使是當年最強的 3D 模型雙流 I3D,也保留了光流流,因為它仍有幫助。
光流流是瓶頸:預先計算光流可能主宰整體執行時間與儲存,因此雙流方法很少能即時。現代 3D 與 Transformer 模型藉由隱式學習運動,部分吸收了光流流的好處,但在重運動的資料集上,光流輸入仍可能有所助益。