宅中地 - 每日更新
宅中地 - 每日更新

贊助商廣告

X

雙流卷積網路:當深度學習第一次在影片動作識別上贏了

2026年08月17日 首頁 » 熱門科技

2014 年,深度學習已經在圖像識別上打得對手找不到北。AlexNet 橫空出世兩年後,卷積網路幾乎統治了靜態圖片的分類比賽,識別一隻貓、一輛車、一棟房子,交給深度網路基本沒有懸念。

但如果給你的不是一張照片,而是一段影片呢。一個人從椅子上站起來,一個人揮手打網球,一個人跳進泳池,這些動作光看一幀畫面根本看不出來。你需要看到畫面怎麼隨時間變化。

奇怪的事情發生了。在這個問題上,深度學習居然打不過一種叫做"密集軌跡"的手工設計方法。

密集軌跡*:一種傳統的影片動作識別方法,通過跟蹤影片中密集分布的點隨時間移動的軌跡,並計算軌跡周圍的手工設計特徵來判斷動作類別。

具體差多少?在當時最具挑戰性的 UCF-101 數據集上,密集軌跡這類手工特徵方法能做到 87% 左右的準確率,而已有的深度學習嘗試,比如直接把 3D 卷積網路懟上去的方法,只能做到 65% 上下。整整 20 個百分點的差距,意味著什麼?意味著每 5 個動作里,深度學習就要比手工方法多認錯 1 個。這在圖像識別領域是不可想像的差距,AlexNet 當年也沒輸給傳統方法這麼多。

這篇論文的兩位作者,Karen Simonyan 和 Andrew Zisserman,來自牛津大學的 VGG 組。沒錯,就是那個幾個月後發表了 VGGNet、把圖像分類刷到新高度的團隊。這兩篇論文幾乎是同期的工作,一個在攻克圖片,一個在攻克影片,而攻克影片這一仗,打得比想像中艱難。

他們要回答一個問題:為什麼深度學習在圖片上這麼強,到了影片上反而不靈了。

問題出在哪:網路學不好"動"這件事

先說說當時的深度學習方案是怎麼做影片識別的。最直接的想法是把 2D 卷積網路擴展成 3D,讓卷積核不僅在圖像的長寬方向滑動,還在時間維度上滑動,指望網路自己從連續幀里學出運動的規律。

這個想法聽起來很合理,但實際效果很差。原因也不難理解。圖像識別的成功建立在一個基礎上,那就是有海量標註數據,ImageNet 有超過一百萬張標註圖片。而影片數據集小得多,動作識別常用的數據集只有幾千到一萬多個影片片段。讓一個本來就參數龐大的 3D 卷積網路,從這麼少的數據里,自己學會什麼是"運動",這相當於要求一個學生只看了幾頁教材就要總結出整個學科的規律,學不好是必然的。

Simonyan 和 Zisserman 的思路是,既然網路自己學不好運動資訊,那就不要讓它自己學,直接把運動資訊餵給它。

這就引出了整篇論文最核心的設計,光流。

光流*:描述圖像中每個像素點在連續兩幀之間的運動方向和速度的一種表示方法,用一張"運動圖"來記錄畫面里哪裡在往哪個方向移動、移動了多快。

光流不是什麼新東西,電腦視覺里研究了幾十年,專門用來描述畫面里的運動。它把每一幀圖像里每個像素的位移,編碼成一張類似圖片的東西,橫向位移和縱向位移各占一個通道。這樣一來,運動資訊不再需要網路自己從像素變化里費力推測,而是被預先計算好,直接擺在網路面前。

這裡就要問一個問題了,如果不用光流,網路能不能自己學到同等質量的運動資訊?論文用實驗回答了這個問題,答案是不能,或者說,非常難,需要多得多的數據和更複雜的結構才能勉強逼近。這也是為什麼在數據有限的情況下,把光流這種領域知識直接注入網路,比讓網路從零開始摸索要划算得多。

雙流架構:把一個問題拆成兩個網路來解決

既然運動資訊要單獨處理,那靜態的外觀資訊呢?比如畫面里有沒有網球拍,有沒有游泳池,這些資訊其實也很重要,一個人揮拍的動作旁邊有球拍,這個先驗資訊本身就是很強的線索。

於是論文提出了雙流卷積網路這個核心架構。

雙流卷積網路*:一種把影片動作識別拆分成兩個獨立卷積網路的架構,一個網路專門處理單幀靜態畫面(叫空間流),另一個網路專門處理連續幀之間的光流場(叫時間流),兩個網路最後的判斷結果做融合,得出最終的動作類別。

![論文中的雙流架構示意圖,展示了空間流網路接收單幀RGB圖像,時間流網路接收多幀光流疊加,兩條支路分別輸出softmax分數後融合]

空間流很好理解,輸入就是影片裡隨便抽出來的一幀圖像,網路結構和普通的圖像分類網路差不多,負責判斷畫面里有什麼物體、什麼場景。

時間流是這篇論文的重點,輸入不是圖像,而是連續多幀計算出來的光流場,堆疊在一起,形成一個多通道的輸入,論文裡用的是連續 10 幀的光流,橫向和縱向各一個通道,一共 20 個通道堆在一起餵給網路。這個網路專門學習"動作模式",比如揮拍這個動作在光流場上呈現出什麼樣的運動軌跡。

兩個網路訓練好之後,分別對同一個動作片段給出一個預測分數,最後把兩個分數加權融合,誰給出的置信度更高,權重就更大一些,融合方式論文裡試了簡單平均和用支持向量機學習權重兩種,後者效果更好一點。

這個設計其實映射了人類大腦處理視覺資訊的一個已知事實,神經科學上早就發現,人的大腦視覺皮層里存在兩條相對獨立的通路,一條處理"這是什麼"(物體識別),一條處理"這在往哪動"(運動感知)。這兩位作者顯然是借鑑了這個思路,讓機器也用兩套"眼睛"分別看靜止的和動態的資訊,而不是塞進一個網路里讓它自己去分辨。

這裡可以做一個類比。想像你在看一場足球比賽的回放,如果只給你一張定格的畫面,你可能能看出這是個球場,有球員在場上,但你猜不出下一秒球往哪兒飛,誰要射門了。如果只給你一段沒有畫面內容、純粹標註了每個點往哪個方向移動的運動軌跡圖,你能看出有東西在快速移動,但你分不清到底是球還是人。你必須同時結合"這是什麼"和"它怎麼動",才能準確判斷出這是一次射門還是一次傳球。如果只用一條通路去處理,等於讓你蒙著眼睛只憑運動軌跡猜比賽內容,或者盯著一張靜態照片猜下一秒的動作,兩種情況下你都會經常猜錯。雙流網路的設計,就是不讓機器也陷入這種資訊缺失的困境。

時間流網路怎麼設計:光流該怎麼堆疊

時間流網路具體怎麼處理光流數據,這裡面還有幾個值得展開的設計細節。

第一個問題是光流怎麼計算。論文用的是傳統的光流算法,不是深度學習方法(當時深度學習做光流估計還不成熟),計算出來的光流場每個像素點有橫向和縱向兩個分量。為了讓網路看到一段時間內的運動趨勢,而不是單幀之間的瞬時運動,論文把連續 10 幀的光流疊在一起,變成一個 20 通道的輸入(10 幀乘以橫縱兩個方向)。

第二個問題是要不要考慮攝像機本身的移動。很多影片是手持拍攝或者運鏡的,整個畫面都會有一個整體的位移,這個位移和動作本身無關,是噪聲。論文嘗試了減去這個整體運動的版本,效果確實有提升,說明網路確實會被這種無關的全局運動干擾,這也提示了一個更深層的問題,光流這種表示雖然比原始像素更貼近"運動"的本質,但它依然不是純粹的,裡面混雜了背景運動和物體運動,需要額外處理才能把真正有用的信號提取出來。

第三個問題是怎麼應對數據量不足。前面說過,影片數據集比圖像數據集小得多,UCF-101 一共只有一萬多個片段。論文採用了一個巧妙的辦法,用兩個數據集聯合訓練,把動作類別少但樣本相對充足的數據集和目標數據集放在一起訓練,共享網路的大部分參數,只在最後分類層做區分。這個做法某種程度上是數據不夠,借別處的數據來湊,類似於一個學生主科的練習題不夠,就去借用相近科目的習題來鞏固基礎知識,雖然題目不完全對口,但鍛煉的底層能力是相通的。如果不這麼做,單獨在小數據集上訓練,過擬合會非常嚴重,網路記住的是訓練集裡的個別樣本特徵,而不是動作本身的規律。

結果:深度學習終於贏了一次

說了這麼多設計,數據說話才是硬道理。論文在兩個標準數據集上做了測試,UCF-101 和 HMDB-51,這是當時動作識別領域最常用的兩個基準。

| 方法 | UCF-101 準確率 | HMDB-51 準確率 |

|---|---|---|

| 只用空間流網路 | 72.6% | 40.5% |

| 只用時間流網路 | 81.0% | 54.6% |

| 雙流網路融合 | **88.0%** | **59.4%** |

| 同期最好的手工特徵方法 | 87.9% | 57.2% |

先看只用空間流會怎樣。準確率只有 72.6%,比雙流融合的 88% 低了 15 個百分點還多。這說明單看靜態畫面確實丟失了大量資訊,一個揮拍的動作,如果只看一幀,網路很容易和別的手臂動作搞混。

再看只用時間流。81% 已經比空間流高出一大截,這本身就很說明問題,運動資訊對判斷動作類別的重要性,可能超過靜態外觀資訊。但即便只看運動資訊,也比不上兩者融合的效果。

融合之後的 88%,第一次讓深度學習方法在 UCF-101 上追平甚至略微超過了手工設計的密集軌跡類方法。這是一個歷史節點,深度學習在影片動作識別這個子領域,第一次不再是被手工特徵按在地上打的那一方。這句話放在 2014 年,分量不亞於兩年前 AlexNet 在圖像識別上掀起的那場革命,只是這次戰場換到了影片。

值得多說一句的是 HMDB-51 上的結果,雙流網路拿到 59.4%,超過手工方法的 57.2%,差距不算大,但這個數據集樣本量更小、動作更難區分,深度學習能在這種小樣本條件下也追上甚至反超,說明雙流架構確實抓住了問題的本質,而不是靠堆數據蠻力取勝。

這篇論文之後:光流思路被繼續放大

雙流網路提出之後,光流加靜態畫面的這個思路成了後續很多工作的起點。

3 年後,Feichtenhofer 等人在 2017 年提出了時空融合網路,把雙流網路里兩個獨立訓練、最後簡單融合的做法改成了更早期就開始交互融合,讓空間流和時間流在網路的中間層就開始資訊交換,而不是等到最後一步才合併結果,這個改進進一步提升了準確率,也證明了兩條流之間不應該是完全割裂的,中間層的資訊共享能帶來額外收益。

同樣在 2017 年前後,Carreira 和 Zisserman(還是同一位作者)提出了 I3D 網路,這個工作乾脆放棄了單獨計算光流的思路,而是把 2D 卷積網路直接膨脹成 3D 卷積網路,讓網路在一個更大規模的影片數據集 Kinetics 上直接學習時空特徵,某種程度上是回到了最初"讓網路自己學運動"的思路,但這次因為有了 Kinetics 這種規模大得多的數據集做支撐,3D 卷積終於跑贏了雙流網路。這個轉折也挺耐人尋味,雙流網路當年之所以要引入光流這種手工先驗,本質上是因為數據不夠,一旦數據規模上來了,先驗知識的必要性反而下降了,這某種程度上印證了深度學習領域一直存在的一個規律,數據量足夠大的時候,很多手工設計的技巧會顯得沒那麼關鍵。

再往後,各種基於雙流思路的變種持續湧現,光流這個概念也被質疑過是否必要,一些研究開始嘗試用更輕量、計算更快的運動表示方式來替代傳統光流,因為計算光流本身是很耗時的一步,會拖慢整個系統的實際部署速度。這也是雙流網路留下的一個明顯短板,光流計算這一步沒法端到端訓練,必須先用傳統算法算好光流再餵給網路,整個流程不是一體化的,訓練和部署都因此變得更麻煩。

寫在後面

讀這篇論文最讓我意外的一點,是深度學習在影片領域曾經輸得這麼徹底。習慣了深度學習一路碾壓的敘事,很容易忘記它也有過被傳統方法按住打的階段,而且不是輸一點點,是輸了 20 個百分點的量級。

另一個值得琢磨的地方是,這篇論文解決問題的方式不是"設計一個更大更深的網路硬train一發",而是先想清楚問題的結構,運動資訊和外觀資訊本質上是兩類不同的東西,再設計架構去匹配這個結構。這種"先理解問題再設計模型"的思路,比單純堆參數堆算力更值得學習。

論文裡還有一個小細節挺有意思,融合空間流和時間流的時候,用支持向量機去學融合權重,效果比簡單平均要好,這說明"兩個資訊源誰更可信"這件事本身也是可以學出來的,不需要人為拍死一個固定比例。這個小設計後來被很多多模態融合的工作繼承了下來。

Q&A

Q1:雙流卷積網路是什麼?

A:雙流卷積網路是牛津大學團隊在2014年提出的影片動作識別方法,把識別任務拆成兩個獨立的卷積網路,一個處理單幀靜態畫面判斷場景和物體,另一個處理連續幀的光流場判斷運動模式,兩者結果融合得出最終動作類別,在UCF-101上準確率達到88%。

Q2:雙流卷積網路為什麼要用光流而不是讓網路自己學運動資訊?

A:因為當時影片數據集規模太小,只有幾千到一萬多個樣本,網路很難僅從原始像素變化中自己學出運動規律,直接把傳統算法計算好的光流場餵給網路,相當於把運動資訊預先處理好,大幅降低了網路的學習難度。

Q3:雙流卷積網路後來被哪些工作超越了?

A:2017年前後,時空融合網路讓兩條流在中間層就開始交互,而不是等到最後才融合結果;同期的I3D網路則用更大規模的Kinetics數據集直接訓練3D卷積網路,跳過了光流計算這一步,最終在準確率上反超了雙流網路。

宅中地 - Facebook 分享 宅中地 - Twitter 分享 宅中地 - Whatsapp 分享 宅中地 - Line 分享
相關內容
Copyright ©2026 | 服務條款 | DMCA | 聯絡我們
宅中地 - 每日更新