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

贊助商廣告

X

深度學習曾經打不過一個叫「密集軌跡」的老方法,直到這兩個人用了一招「作弊」

2026年09月22日 首頁 » 熱門科技

2014 年之前,如果你是一個研究影片動作識別的學者,你大概會覺得深度學習這套東西,好用是好用,但在影片這件事上,好像不太靈。

這話聽起來有點奇怪。因為就在兩年前,2012 年,AlexNet 靠著深度卷積網路在圖像識別比賽上把所有傳統方法按在地上摩擦,直接把整個電腦視覺領域的研究範式給掰了個彎。從那以後,深度學習幾乎是所向披靡的存在。

但影片動作識別這個賽道,深度學習卻一直打不過一個叫"密集軌跡"的手工設計方法。

密集軌跡*:一種手工設計的影片特徵提取方法,通過跟蹤影片裡密集分布的像素點,沿著運動軌跡計算局部的外觀和運動統計量,再組合成特徵來判斷動作類別。

這個方法在當時的公開數據集上,識別準確率能做到 88% 左右。而同期嘗試用深度網路硬啃影片的研究者們,最好的結果只能做到 65% 上下。

20 多個百分點的差距,這意味著什麼?意味著每 5 個影片動作,深度學習方法就要比手工方法多認錯 1 個以上。這不是一點點差距,這是量級上的落後。

這件事讓很多人困惑:圖像識別上深度學習明明贏了,為什麼換成影片就不靈了?

牛津大學的 Karen Simonyan 和 Andrew Zisserman 就是被這個問題卡住的人之一。他們後來在同一年發布了另一篇論文,提出了 VGGNet,也就是後來幾乎人盡皆知的那個深度卷積網路架構。這兩篇論文幾乎是同期完成的工作,一篇解決圖像分類,一篇解決影片動作識別,用的是同一套底層直覺。這個背景細節很有意思,說明這兩位作者當時腦子裡裝的是同一套問題:怎麼讓卷積網路學會"看懂"視覺世界裡那些複雜又動態的模式。

而影片動作識別這篇論文,就是這篇要講的東西。它給出的答案,後來被稱為"雙流網路"。

影片比圖片難在哪

先說清楚一件事,為什麼影片比單張圖片難識別這麼多。

一張靜態照片,網路只需要認出"畫面里有什麼東西",比如一隻貓,一輛車。但一段影片裡,網路需要認出的是"畫面里的東西在做什麼"。

區別在哪?

想像你看一張照片,照片裡有個人張開雙臂,雙腳離地。這個畫面本身模糊得要命,你完全猜不出這個人是在跳舞、在摔倒,還是在做體操落地的瞬間動作。單張畫面丟掉了時間資訊,而動作恰恰是隨時間展開的東西。

如果不解決這個問題會怎樣?答案就是前面提到的那 65% 的準確率。當時的深度網路大多是把影片的每一幀單獨餵給卷積網路,然後把結果做個平均或者投票。這種做法相當於把一部電影拆成一張一張的截圖,然後試圖靠看單張截圖猜整部電影講了什麼故事。資訊全在,但組織方式錯了,時間維度上的動態線索完全丟失。

那手工方法密集軌跡為什麼能做到 88%?因為它從設計之初就是專門追蹤像素點如何隨時間移動的,運動資訊是它的第一公民,而不是附加品。

這就是當時深度學習在這個賽道上的困境:圖像識別里成功的那一整套卷積網路思路,直接搬到影片上,漏掉了最重要的一環。

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

Simonyan 和 Zisserman 的思路很直接,甚至可以說帶著一點"作弊"的味道。

他們沒有去死磕怎麼讓一個網路同時學會外觀和運動,而是乾脆分成兩個網路,一個專門負責看"這個畫面里有什麼東西",另一個專門負責看"這個東西在往哪個方向動"。

第一個網路叫空間流,輸入是普通的 RGB 影片幀,負責識別場景和物體,比如網球場、游泳池、鋼琴這些背景和道具資訊,這些資訊本身就能提示很多動作線索。

第二個網路叫時間流,這是整篇論文真正的巧思所在。它的輸入不是原始畫面,而是光流場。

光流*:描述影片中相鄰兩幀之間,畫面里每個像素點是如何移動的,用一個方向和大小的向量場來表示,本質上是把"運動"這件事直接可視化成一張張圖片。

光流場把"運動"這個抽象概念,變成了一張具體的圖片,每個像素點上都記錄著一個方向箭頭。網路看到的不再是原始畫面里的顏色和形狀,而是一整張純粹的"運動軌跡圖"。這樣一來,網路不需要自己去悟運動資訊藏在哪裡,運動資訊已經被顯式地擺在了它面前。

這兩個網路各自獨立訓練,各自輸出一個動作分類的判斷,最後把兩邊的判斷結果做加權融合,誰的判斷更有信心就多聽誰的。

為什麼要這麼拆?

這裡有個很樸素的直覺。讓一個網路同時學會"認物體"和"認運動",相當於讓一個人同時用一雙眼睛去做兩件完全不同性質的觀察任務。而人類的視覺系統里,恰好也存在類似的分工。生物學研究早就發現,人腦處理視覺資訊時,腹側通路負責識別物體是什麼,背側通路負責判斷物體在空間裡怎麼移動。這兩條通路在生理結構上就是分開的。

雙流網路某種程度上是把這個生物學發現,直接翻譯成了兩個並行的卷積網路。

這裡可以做一個類比,但要說清楚代價和收益,不能只是好看。

假設你要評價一場足球比賽,你可以雇一個人從頭到尾盯著看,同時判斷球員是誰、球往哪跑、跑動速度多快。這個人的注意力會被分散,既要認臉又要追蹤運動軌跡,兩件事互相搶資源。

但如果你雇兩個人,一個專門負責看清楚場上有哪些球員和道具,另一個專門盯著球和人的移動軌跡不看別的,只看動態,兩人各自做好一件事,最後把兩份報告拼起來,判斷的準確度反而更高。

如果不這麼拆會怎樣?實驗數據擺在那裡:只用空間流,單獨跑一遍,準確率是 73%左右。只用時間流,單獨跑,準確率能到 83.7%。兩者融合起來,總準確率跳到 88%,和當時最強的手工方法密集軌跡打成平手,在某些數據集設置下甚至反超。

這組數字本身就很值得琢磨。時間流單獨跑就已經比空間流高出 10 個百分點,這說明一件很反常識的事:運動資訊本身,比畫面里的物體外觀資訊,對判斷動作類別更重要。這跟很多人的直覺是反的,大部分人第一反應會覺得"認出畫面里是什麼東西"應該更關鍵,但數據說的是另一件事。

論文裡還專門放了一張第一層卷積核的可視化圖。看那張圖,你會發現時間流網路學到的卷積核,大多呈現出方向性的條紋結構,像是專門在捕捉某個方向上的邊緣變化。這不是巧合,這是網路自己從光流數據里學出來的,它發現光流場裡最重要的資訊就是運動的方向和強度模式。網路沒有被告知"你要去關注方向",它是自己摸索出這一點的。

數據不夠用怎麼辦:多任務訓練的救場

雙流網路還面臨一個很現實的麻煩,當時能用來訓練動作識別模型的標註影片數據集,規模小得可憐。

主流的兩個數據集,UCF101 大約 1 萬多段影片,HMDB51 更小,只有幾千段。相比之下,圖像識別領域用來訓練 AlexNet 的 ImageNet 數據集有上百萬張圖片。

數據量差了兩個數量級,直接拿小數據集去訓練一個深層卷積網路,大概率會過擬合,網路記住的是訓練集裡的具體細節,而不是真正學會了識別動作的通用規律。

Simonyan 和 Zisserman 用了一個叫多任務學習的技巧來緩解這個問題。

多任務學習*:讓同一個網路同時在多個相關但不完全相同的數據集或任務上訓練,共享底層特徵,藉此擴充有效的訓練信號。

具體做法是,他們把網路的最後一層拆成兩個分支,一個分支對應 UCF101 數據集的類別標籤,另一個分支對應 HMDB51 數據集的類別標籤。網路的前面絕大部分層是共享的,只有最後的分類層是各自獨立的。

這樣訓練的時候,網路能同時從兩個數據集裡吸收資訊,相當於把原本分散的兩小筆訓練數據,拼成了一筆更大的訓練數據,雖然兩個數據集的類別定義不完全一樣,但底層的運動模式和視覺規律是相通的。

這個做法在教育場景里也很好理解。假設你要教一個學生學好英語,但你手頭能找到的教材很有限,一本教材詞彙量不夠。這時候你找來另一本教材,雖然它側重的話題和考試形式跟第一本不完全一樣,但語法和核心詞彙是重疊的。你讓學生同時學兩本書,總的語言積累量就上去了,即便兩本書的具體測驗內容不同。

如果不用這個技巧會怎樣?論文裡做了對比,單獨用小數據集訓練的網路,過擬合現象明顯,驗證集上的表現會隨著訓練輪數增加先升後降。加入多任務訓練之後,HMDB51 上的準確率從 54.6% 提升到 59.4%,提升了將近 5 個百分點。這個提升幅度看起來不算特別誇張,但在數據極度稀缺的情況下,這是實打實靠"借用"另一份數據換來的免費收益。

這篇論文改變了什麼

現在回頭看這個結果的歷史分量。

在 2014 年,深度學習方法第一次在影片動作識別這個任務上,追平甚至反超了手工特徵方法的表現。這句話放在當年不是一句平淡的技術總結,這跟 2012 年 AlexNet 在圖像分類上首次證明深度學習可行,是同一個量級的事件,只是發生在影片這個更難的賽道上,晚了兩年。

這個結果直接告訴整個領域一件事:深度網路不是不能處理影片,只是之前的做法沒有把運動資訊餵對方式。把光流這種顯式的運動表徵直接交給網路,而不是指望網路自己從原始像素堆里悟出運動規律,這個思路一下子打開了後續大量工作的方向。

後續的工作證實了這條路是走得通的。2016 年,Feichtenhofer、Pinz 和 Wildes 在論文裡進一步研究了雙流網路里兩條分支該在哪一層融合資訊最好,提出了空間和時間特徵在網路中間層就開始交互融合的架構,而不是像原始雙流網路那樣等到最後一層才簡單加權合併,這個改進讓準確率進一步提升了幾個百分點。

2017 年,Carreira 和 Zisserman(沒錯,還是同一個 Zisserman)發表了 I3D 網路,把雙流網路里的二維卷積核直接擴展成三維卷積核,讓網路能夠在一個統一的架構里同時處理空間和時間維度,不再需要手工計算光流作為單獨輸入。他們還配套發布了一個大規模影片數據集 Kinetics,數據量是 UCF101 和 HMDB51 的幾十倍,徹底解決了當年數據稀缺逼著用多任務訓練這種曲線救國辦法的問題。I3D 在 Kinetics 上預訓練之後,遷移到小數據集上的表現遠遠超過了原始雙流網路。

從雙流網路到中間層融合,再到三維卷積加大規模數據集,這條技術演進路線清晰地展示了一件事:2014 年這篇論文提出的核心洞察,運動資訊需要被顯式建模而不能指望網路隱式學到,一直是後來所有改進版本共同遵循的原則,只是實現方式越來越自動化,越來越不依賴手工計算光流這種預處理步驟。

寫在後面

讀這篇論文的時候,最觸動我的不是雙流網路這個架構本身,而是那個 10 個百分點的對比數字,時間流單獨跑分數比空間流高出這麼多。這個結果在當時應該是讓很多人意外的,因為它暗示了一件事,人類判斷一個動作是什麼,靠的主要不是看清楚畫面里有什麼東西,而是看清楚東西怎麼動。

這跟我們平時形成的直覺不太一樣。我們總以為識別一個場景先要認清楚裡面有什麼,再去判斷發生了什麼。但這篇論文用數字說,運動模式本身攜帶的資訊量,可能比靜態外觀更接近問題的答案核心。

還有一點值得琢磨,這篇論文選擇用光流這種手工計算出來的中間表徵餵給網路,某種程度上是向手工特徵方法妥協了一部分,而不是追求端到端從原始像素直接學出一切。這在當年是個務實的折中方案,後來的 I3D 才真正把這一步也交給網路自己去學。方法演進的路徑往往不是一步到位的理想主義,而是先接受一個局部的手工輔助,把整體問題解決了,再慢慢把手工的部分一點點替換掉。這個漸進的過程本身,可能比任何一個單獨的架構設計更值得記住。

Q&A

Q1:雙流網路是什麼?

A:雙流網路是 Simonyan 和 Zisserman 在 2014 年提出的影片動作識別方法,把識別任務拆成兩個獨立的卷積網路分別處理,一個負責識別畫面里的物體和場景(空間流),另一個負責識別運動資訊(時間流,輸入是光流場),最後把兩者的判斷結果融合起來。

Q2:雙流網路為什麼要用光流而不是直接用原始影片幀?

A:因為原始影片幀里的運動資訊是隱含的,網路很難自己學會提取,而光流場把每個像素點的運動方向和大小直接可視化成圖片,相當於把運動資訊顯式地擺在網路面前,讓網路不用再費力去悟。實驗證明只用光流的時間流網路準確率能到 83.7%,比只用原始幀的空間流網路高出約 10 個百分點。

Q3:雙流網路的準確率打平手工方法了嗎?

A:打平了,甚至局部反超。雙流網路融合後的準確率約為 88%,和當時最強的手工特徵方法密集軌跡持平,這是深度學習方法第一次在影片動作識別任務上追上手工設計方法的表現,發生在 2014 年。

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