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

贊助商廣告

X

深度學習第一次打敗手工特徵:雙流網路如何解決影片動作識別的十年難題

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

2014年之前,如果你想讓機器認出一段影片裡的人在做什麼,比如是在揮拳還是在鼓掌,最可靠的方法居然不是深度學習。

這句話現在看起來有點奇怪。畢竟就在兩年前,2012年的AlexNet深度學習第一次打敗手工特徵雙流網路如何解決影片動作識別的十年難題已經在圖像識別上把所有傳統方法打得毫無還手之力,深度學習幾乎成了電腦視覺的代名詞。但影片動作識別是個例外。當時最強的方法叫密集軌跡深度學習第一次打敗手工特徵雙流網路如何解決影片動作識別的十年難題

密集軌跡:一種手工設計的特徵提取方法,通過追蹤影片中密集分布的點的運動軌跡來描述動作。

它靠人工設計的運動軌跡特徵,在UCF-101深度學習第一次打敗手工特徵雙流網路如何解決影片動作識別的十年難題等標準測試集上能拿到85%以上的準確率,而當時所有嘗試用深度學習做這件事的團隊,成績都要差上一截。深度學習的神經網路理論上應該能自動學出比人工設計更好的特徵,但現實是它連一個老式方法都打不過。這種落差持續了兩年,直到2014年,Karen Simonyan深度學習第一次打敗手工特徵雙流網路如何解決影片動作識別的十年難題和Andrew Zisserman深度學習第一次打敗手工特徵雙流網路如何解決影片動作識別的十年難題這兩位來自牛津大學的研究者,發表了一篇論文,第一次讓深度學習在這個任務上反超了手工特徵。

有意思的是,這兩位作者幾個月後又發表了另一篇更出名的論文,VGGNet深度學習第一次打敗手工特徵雙流網路如何解決影片動作識別的十年難題,也就是後來幾乎人人都用過的那個經典卷積網路結構。兩篇論文出自同一個課題組,同一段時間,這不是巧合,而是說明他們當時正在系統性地琢磨"卷積網路到底該怎麼用在各種視覺任務上"這個問題,動作識別只是其中一塊拼圖。

影片比圖片難在哪

要理解這篇論文的巧妙之處,得先明白影片識別和圖片識別到底差在哪裡。

圖片識別本質上是個靜態問題:給你一張照片,判斷上面有沒有貓。卷積神經網路在這方面已經證明了自己,通過一層一層的濾波器提取邊緣、紋理、形狀這些視覺特徵,最後拼出"這是貓"的判斷。

但影片不一樣,影片的核心資訊是運動。同樣一張"手舉起來"的照片,可能是在打招呼,也可能是要打人,區別不在這一幀的畫面里,而在於前後幀之間手是怎麼動的。

如果直接把卷積網路用在影片上,一個自然的想法是把很多幀堆在一起塞進網路,讓網路自己去學運動資訊。研究者確實試過這個思路,但效果並不理想。原因也不難猜:網路要同時學會"識別靜態物體"和"理解時間上的運動關係",這兩件事需要的濾波器形態差別很大,混在一起學,誰也學不精。

這就像讓一個人同時兼職廚師和會計。廚師需要的是對火候、口感的敏感度,會計需要的是對數字規則的嚴謹性,這兩種能力如果硬塞進同一套培訓流程里,大概率兩頭都學得半生不熟。如果不把這兩件事分開處理,網路就會在"認物體"和"認動作"之間反覆拉扯,學不到真正乾淨的運動特徵。

雙流網路:把問題拆成兩半

Simonyan和Zisserman給出的解法叫雙流卷積網路深度學習第一次打敗手工特徵雙流網路如何解決影片動作識別的十年難題

雙流卷積網路:將影片動作識別拆分成兩個獨立的卷積網路分支,一個處理靜態畫面,一個處理運動資訊,最後融合兩者結果的架構。

思路簡單粗暴,但極其有效:既然一個網路很難同時學好"認物體"和"認動作",那就乾脆分給兩個網路來做。

第一個分支叫空間流,輸入是影片裡單獨的一幀畫面,就像普通的圖片分類任務一樣,負責識別畫面里有什麼東西,比如一個球拍、一片草地、一個人的輪廓。這部分網路結構幾乎就是照搬當時圖片識別領域已經驗證過的卷積網路架構,因為這件事本來就是卷積網路的拿手好戲。

第二個分支叫時間流

光流深度學習第一次打敗手工特徵雙流網路如何解決影片動作識別的十年難題:描述圖像中每一個像素點從一幀到下一幀移動方向和速度的向量場,是一種直接編碼運動資訊的表示方式。

它的輸入不是原始畫面,而是光流場。光流這個東西本質上是給每個像素點標一個箭頭,告訴你這個點接下來會往哪個方向、以多快的速度移動。把連續幾幀的光流場疊在一起餵給一個卷積網路,這個網路就專門負責學"動作模式",完全不用操心畫面里到底有沒有草地或者球拍。

兩個網路各自輸出一個分類結果,最後把兩個結果加權融合,得到最終判斷。

這個設計的巧妙之處在於,它沒有讓網路自己去"發現"運動資訊,而是提前用光流算法把運動資訊提煉出來,直接餵給網路。這相當於省去了網路從零學習"什麼是運動"這一步,讓它可以直接站在一個已經被處理好的運動表示上繼續深挖。

這就像教一個學生做物理實驗,你可以讓他從頭搭建整套測量儀器,也可以直接給他一台校準好的傳感器,讓他專注在數據分析上。前者理論上更徹底,但耗時耗力還容易走偏;後者效率高得多,代價是你得先有一台可靠的傳感器。光流場就是這裡的傳感器,如果沒有它,時間流網路就得從原始像素的連續變化里自己摸索運動規律,那基本上等於重新發明輪子,而且效果大概率不會好。

論文裡還有個細節值得說一說。研究者對比了兩種光流計算方式,一種是逐幀計算光流,叫光流堆疊深度學習第一次打敗手工特徵雙流網路如何解決影片動作識別的十年難題,另一種是讓光流的計算軌跡跟著運動物體走,叫軌跡堆疊深度學習第一次打敗手工特徵雙流網路如何解決影片動作識別的十年難題。實驗發現光流堆疊的效果反而更好,這個結果多少有點反直覺,因為軌跡堆疊聽起來更"聰明",更貼合運動的物理直覺,但複雜的設計不一定帶來更好的效果,簡單直接的方案有時候更穩。

單獨看每條流,誰更重要

雙流網路的另一個價值在於,它讓研究者第一次能夠拆開來看,靜態資訊和運動資訊各自對識別動作貢獻了多少。

答案相當清楚:只用空間流,也就是只看畫面里有什麼東西,在UCF-101上的準確率是72.6%。只用時間流,也就是只看運動模式,準確率能到81%以上。兩者融合之後,準確率衝到88%左右。

這組數字挺說明問題的。72.6%和88%之間差了將近15個百分點,這意味著每識別7、8個動作,只靠畫面資訊的網路就會比融合網路多認錯一個。

單獨看時間流比單獨看空間流表現更好,這說明對動作識別這件事來說,運動資訊本身攜帶的判別力,比畫面里的場景和物體資訊更強。這也符合直覺:如果你去猜一個人在做什麼動作,光看一張靜止照片,經常會猜錯,但如果給你看一段連續的運動軌跡,哪怕看不清背景,大概率能猜對。

不過運動資訊不是萬能的。有些動作光靠運動軌跡本身也不好區分,比如"喝水"和"刷牙"這兩個動作,手部動作模式可能高度相似,這時候畫面里到底有沒有杯子或者牙刷,就成了決定性的線索。這正是為什麼兩條流缺一不可,如果去掉空間流,那些依賴場景和物體線索的動作就會大量識別出錯。

小數據集下的補救辦法

這篇論文還面臨一個現實困境:當時能用來訓練影片識別網路的標註數據集,規模遠遠比不上ImageNet那種上百萬張圖片的量級。UCF-101總共才1萬3千多個影片片段,這種規模想訓出一個可靠的深度網路,非常容易過擬合。

過擬合:模型在訓練數據上表現很好,但換到沒見過的新數據上表現急劇下降,本質是模型記住了訓練數據的細節而不是學到了普遍規律。

研究者的解法是多任務學習

多任務學習:讓同一個網路同時在多個相關任務的數據集上訓練,共享底層特徵表示,以此增加有效訓練數據量。

具體來說,他們把網路的最後一層拆成兩支,一支對應UCF-101的類別,另一支對應另一個動作識別數據集HMDB-51的類別,兩個數據集的樣本混在一起訓練,共享前面所有層的參數。這樣等於是把兩個小數據集拼成了一個更大的訓練集,雖然任務標籤不完全一樣,但底層的運動和視覺特徵是可以共用的。

這個做法背後的邏輯,有點像一個廚師同時在兩家餐廳積累經驗。這兩家餐廳的菜單不完全一樣,但刀工、火候這些基本功是通用的,在任何一家餐廳練出來的手藝,都能帶到另一家去用。如果只死磕一家餐廳的菜單,練習機會有限,手藝很容易停滯不前,但同時接觸兩份不同菜單的實踐,反而能讓基本功漲得更快。多任務學習的效果證實了這一點,加入這個策略之後,兩個數據集上的準確率都有明顯提升。

數據說話:雙流網路到底強在哪

| 方法 | UCF-101準確率 |

|---|---|

| 密集軌跡(手工特徵,此前最優) | 85.9% |

| 僅空間流 | 72.6% |

| 僅時間流 | 81.0% |

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

這張表格里最關鍵的一行是最後一行。88%這個數字第一次超過了此前統治這個領域的手工特徵方法,差距雖然只有兩個百分點,但意義不小,這是深度學習在影片動作識別任務上第一次真正意義上打贏手工方法。在這之前,深度學習在這個賽道上試了兩年都沒跑贏,這次終於翻身。

後來的故事

雙流網路這個思路影響相當深遠,後面幾年,好幾個重要工作都是在這個框架基礎上繼續往前推。

2016年,Christoph Feichtenhofer等人發表了時間片段網路

時間片段網路:將一個影片切成若干個時間片段,分別提取特徵後再融合,用來捕捉更長時間跨度的動作資訊的網路結構。

這個方法解決了雙流網路的一個明顯短板:原始雙流網路每次只看一小段連續幀,很難捕捉一個動作從頭到尾的完整過程。時間片段網路把整段影片切成幾段分別處理再融合,識別準確率進一步提升到94%左右。

2017年,Joao Carreira和Andrew Zisserman(還是同一個Zisserman)發表了I3D網路

I3D網路:把二維卷積網路直接擴展成三維卷積網路,讓網路能夠同時在空間和時間維度上做卷積操作的架構。

這個方法某種程度上是對雙流網路思路的升級,它不再依賴單獨計算光流,而是用三維卷積直接從原始影片幀里學習時空特徵,同時保留了雙流的框架,一條流處理RGB畫面,一條流處理光流,兩者依然融合。I3D在Kinetics這個更大規模的數據集上預訓練之後,遷移到UCF-101上能拿到98%左右的準確率。

這兩個後續工作有個共同點,它們都沒有徹底拋棄雙流網路提出的"分離處理空間資訊和時間資訊"這個核心想法,而是在這個框架上做加法,加長時間跨度、加更強的時空建模能力。這也說明雙流網路當年提出的這個拆分思路,抓住了影片理解問題里一個相當根本的矛盾,後來的工作解決的是"怎麼拆得更細、融合得更好",而不是推翻這個拆分本身。

寫在後面

重新看這篇論文,最讓我意外的一點是,深度學習在這個任務上落後了整整兩年,而追上來的方式不是造一個更大更深的網路,而是換了一種"餵數據"的方式。光流場這個中間表示的引入,本質上是承認了一件事:end-to-end不是萬能的,有些先驗知識提前算好餵給網路,比讓網路自己從零學更划算。

這跟後來大模型時代很多人默認"數據量夠大、模型夠大就能學會一切"的信念,其實是有點矛盾的。雙流網路提醒我們,在數據有限的情況下,把問題拆解、把已知的先驗結構提前編碼進輸入表示里,可能比死磕端到端更實際。

一個沒細想過的問題是:如果光流算法本身出錯了怎麼辦?雙流網路的效果本質上是綁在光流質量上的,這個依賴關係在論文裡沒有被充分討論。

Q&A

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

A:雙流卷積網路是2014年由Karen Simonyan和Andrew Zisserman提出的影片動作識別方法,它把識別任務拆成兩個獨立的卷積網路分支,一個分析單幀畫面識別場景和物體,一個分析光流場識別運動模式,最後融合兩者結果做出判斷。

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

A:因為光流場直接編碼了每個像素點的運動方向和速度,相當於把運動資訊提前提煉出來餵給網路,省去了網路從原始像素變化中自己摸索運動規律的過程,這樣學出來的運動特徵更乾淨,效果也更好。

Q3:雙流網路的識別準確率比之前的方法提高了多少?

A:在UCF-101數據集上,雙流網路融合後的準確率達到88%,超過了此前統治該領域兩年的手工特徵方法密集軌跡的85.9%,這是深度學習首次在影片動作識別任務上超過手工方法。

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