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

贊助商廣告

X

2014年,一段影片裡藏著兩條完全不同的線索

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

你有沒有想過,一段影片裡到底藏著多少種資訊?

一種是畫面里的樣子:一個人的臉,一個杯子的形狀,背景是客廳還是操場。另一種是動作本身的樣子:手臂揮動的軌跡,腿部擺動的節奏,這些東西跟畫面里"有什麼"沒關係,只跟"怎麼動"有關。

2014年之前,幾乎所有做動作識別的深度學習方法,都在犯同一個錯誤。它們把影片當成一堆圖片的堆疊,一張張地餵給卷積網路,指望網路自己從這堆圖片裡學出"動作"這個概念。

結果呢?

打不過手工特徵。

這句話放在2014年,分量很重。那一年,AlexNet在圖像識別上已經把手工特徵打得潰不成軍,深度學習看起來要統治整個電腦視覺領域了。但在影片動作識別這個子領域,情況完全反過來。

當時最強的手工特徵方法叫做

> 密集軌跡*:一種手工設計的動作識別算法,通過追蹤影片中密集採樣的點的運動軌跡,並結合方向梯度直方圖等描述子,來捕捉動作特徵。

密集軌跡在UCF-101數據集上能做到88%左右的準確率,而當時最好的深度學習方法,普通的3D卷積網路,只能做到65%上下。

差了20多個百分點。

這不是小差距。20個百分點意味著什麼?意味著每5個動作,深度學習方法就要比手工方法多認錯1個還不止。放在實際應用里,這種錯誤率的方法幾乎沒法用。

問題出在哪?為什麼深度學習在圖像上碾壓一切,到了影片動作識別這裡卻抬不起頭?

單流網路的死胡同:網路學不會"動"這件事

先說說當時的深度學習方法到底是怎麼做的。

最直接的思路是把影片的每一幀當成一張獨立的圖片,用卷積網路提取特徵,然後把這些特徵在時間上做個平均或者投票,得出最終的動作類別。這種方法完全依賴卷積網路自己去發現幀與幀之間的關聯。

問題就出在這裡。卷積網路擅長的是空間模式識別,比如這是不是一隻貓,這是不是一輛車。但"動作"這個概念本質上是時間上的變化,是這一幀到下一幀發生了什麼位移。讓一個只看靜態畫面的網路,自己去推斷運動資訊,相當於讓一個只會看照片的人去猜照片拍攝前後發生了什麼。

Karen Simonyan和Andrew Zisserman,兩位來自牛津大學VGG研究組的研究者,意識到這條路可能從根上就走歪了。

有意思的是,這兩位幾個月後又發表了另一篇論文,提出了後來家喻戶曉的VGGNet。也就是說,他們同一時期同時在推進兩條戰線:一條是把卷積網路做得更深更強,另一條是重新思考卷積網路該怎麼用在影片這種帶時間維度的數據上。這兩條線其實是同一個問題的兩個側面,都是在問"網路的結構該怎麼匹配數據的本質"。

回到影片識別的問題上,他們的判斷是:如果運動資訊對判斷動作這麼關鍵,那為什麼要讓網路自己去猜,直接把運動資訊餵給它不就行了?

這個想法聽起來簡單,但簡單背後是一次思路上的轉彎。此前的研究者默認"深度學習應該端到端地從原始像素學習一切",而Simonyan和Zisserman的做法帶著一點"妥協"的味頭,先用傳統方法把運動資訊提取出來,再讓深度學習去處理這個提取好的資訊。

這就帶來了這篇論文最核心的設計:雙流網路。

雙流網路:讓兩條網路各管一段

這篇論文的核心貢獻,是提出了一種叫做

> 雙流卷積網路*:Two-Stream Convolutional Networks,一種同時使用兩個獨立卷積網路分別處理影片的空間資訊和時間資訊,再融合兩者結果的動作識別架構。

的架構。聽名字就能猜到,這個網路有兩條流水線,一條專門處理"畫面里有什麼",另一條專門處理"畫面在怎麼變"。

具體來說,第一條叫

> 空間流*:Spatial stream,輸入單幀RGB圖像,負責識別影片中出現的物體、場景、人物外觀等靜態視覺資訊。

它的輸入很簡單,就是影片裡隨便抽出來的一幀圖像,跟普通的圖像分類網路沒什麼本質區別。它學的是"這個場景大概是什麼樣子",比如看到游泳池,看到球拍,這些靜態線索本身就能幫著猜出一部分動作類別。

第二條叫

> 時間流*:Temporal stream,輸入連續多幀計算出的光流場,負責捕捉影片中的運動資訊,即物體和人體各部分的運動方向與速度。

它的輸入不是原始畫面,而是

> 光流*:Optical flow,描述圖像序列中像素點在連續幀之間的運動方向和速度的向量場,常用箭頭圖表示,每個箭頭指向該點接下來的運動方向。

光流場記錄的是每一個像素點從這一幀到下一幀移動到了哪裡,方向是什麼,速度有多快。把這些光流資訊疊在一起送進另一個卷積網路,這個網路學的完全是運動本身的模式,跟畫面里到底是什麼東西沒有直接關係。

這兩條網路分別訓練,分別得出對動作類別的判斷,最後用一種簡單的方式把兩邊的判斷結果融合起來,可以是直接平均,也可以再訓練一個小分類器來學習怎麼加權。

這個設計好在哪?

好在它把一個複雜的問題拆成了兩個相對簡單的問題。讓網路同時學會"認物體"和"辨運動",相當於讓它一邊處理空間模式一邊處理時間模式,這對當時的網路結構和訓練數據量來說負擔太重。拆開之後,每條網路只需要專注一件事,學習難度直接降下來了。

這就像讓一個新手司機同時練習"看路標"和"控制方向盤力度",兩件事都不是特別難,但同時練很容易手忙腳亂。如果分成兩個階段,先專心練熟看路標反應,再專心練手感,最後把兩種技能組合起來開車,效果反而更好。如果不這麼拆分,繼續讓一個網路同時兼顧兩件事,後果就是論文裡提到的那種情況:準確率卡在65%左右,漲不上去,因為網路的注意力被兩種完全不同性質的模式來回拉扯,誰都學不精。

光流場:把"動"這件事翻譯成網路能懂的語言

光流這個概念值得多說兩句,因為它是這篇論文能成功的關鍵前提。

光流場本質上是一張跟原圖大小一樣的圖,但每個位置存的不是顏色,而是一個方向和一個大小,表示這個點接下來會往哪兒動,動得多快。如果你把它畫出來,會看到密密麻麻的箭頭,箭頭的方向和長度就是運動資訊的可視化。

論文裡給時間流網路的具體輸入,是連續多幀計算出來的光流場堆疊在一起,通常是10幀,每幀有橫向和縱向兩個方向的光流分量,所以輸入通道數是20。

這個設計的巧妙之處在於,它相當於幫網路提前完成了最難的那一步。原始像素里其實也包含運動資訊,但這種資訊是隱藏的,需要網路自己去對比前後幀才能發現。而光流場已經把這種對比做完了,直接把"運動"這個抽象概念翻譯成了具體的數字。

網路看到光流場,就像一個人看到了別人標好的路線圖,而不是自己去猜路怎麼走。如果沒有這一步預處理,網路要自己從像素里挖出運動模式,難度會陡增,這也正是之前那些直接堆疊RGB幀的方法效果不好的原因之一,它們指望網路自己去挖,但網路沒挖出來。

論文還專門做了個實驗,看看這個光流到底該怎麼算才最好。

他們試了兩種方式,一種是普通的光流,另一種叫做

> 雙向光流*:同時計算影片正向播放和反向播放時的光流場,讓網路能看到運動在兩個時間方向上的資訊。

結果發現雙向光流效果更好一點,這也符合直覺,因為一個動作往前看和往後看包含的資訊其實是互補的,比如一個人揮手的動作,正著看是手臂展開的過程,反著看則強調了手臂收回的過程,兩種視角合在一起,網路能捕捉到更完整的運動模式。

融合兩條流:1加1為什麼大於2

兩條網路各自訓練完,分別對影片的類別做出預測,這時候就要面對一個問題:怎麼把兩邊的意見綜合起來?

論文裡試了幾種融合方式,最簡單的是直接把兩邊的預測概率取平均,複雜一點的是拿一個小型的支持向量機分類器去學習該怎麼給兩邊加權。

實驗結果顯示,融合之後的效果明顯好於單獨用任何一條流。這個結果本身並不讓人意外,畢竟兩條網路學的是互補的資訊,合在一起理應更強。但真正值得琢磨的是這個提升的幅度。

只用空間流,也就是只靠畫面里的物體和場景資訊,在UCF-101上大概能到73%左右的準確率。只用時間流,也就是只靠運動資訊,能到83%左右。而兩者融合之後,能衝到88%左右。

這個數字對比很能說明問題。單獨看,時間流比空間流強了整整10個百分點,這說明對於動作識別這件事,運動資訊本身就比畫面內容更重要。你想想看,同樣是在球場上,一個人站著不動和一個人在揮拍,畫面里的場景和物體幾乎一樣,能區分開這兩種情況的,只能是動作本身的運動模式。如果只看空間流,網路其實是在靠"這是網球場,所以大概率是打網球"這種間接線索猜答案,而不是真正理解了動作。

但空間流也不是沒用的。加上它之後,準確率還能再漲5個百分點,說明畫面資訊確實提供了運動資訊之外的補充,比如某些動作發生的場景本身就有很強的區分度,看到泳池基本可以排除掉一大半陸地運動的可能性。

這裡有個很樸素的類比。判斷一個人在做什麼運動,單看他的動作軌跡已經能猜出七八成,但如果再看一眼周圍環境,準確率還能再往上提一提。這兩種資訊不是互相替代的關係,是互相搭台的關係,少了任何一個,判斷都會打折扣。如果兩條流的資訊完全重疊,融合之後應該不會有提升,但事實是融合帶來了明顯的提升,這恰好證明了兩條流學到的東西確實是兩種不同性質的資訊,不是同一件事說了兩遍。

數據不夠怎麼辦:借來的手,補上的力

深度學習一個繞不開的問題是數據量。影片數據集在當時遠遠沒有圖像數據集那麼龐大,UCF-101這類數據集只有一萬多個影片片段,對於訓練一個深層卷積網路來說,這個規模其實是偏小的,容易導致過擬合。

論文用了兩個辦法來緩解這個問題。

第一個辦法是

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

具體來說,他們讓時間流網路同時在UCF-101和另一個動作數據集HMDB-51上訓練,兩個數據集的類別體系不完全一樣,但網路的底層特徵是共享的,只是最後分類的那一層是分開的。這樣一來,網路能從兩個數據集裡一起吸收運動模式的共性,相當於變相擴充了訓練數據。

第二個辦法更直接,就是借用圖像識別領域已經訓練好的網路參數,用來初始化空間流網路。這在當時是個已經被驗證過的思路,叫做預訓練遷移。空間流網路本質上做的事情跟普通圖像分類沒有本質區別,所以完全可以借用在ImageNet這種超大規模圖像數據集上訓練出來的經驗,不用從零開始摸索該怎麼識別物體和場景。

這兩個辦法背後是同一個邏輯,數據不夠的時候,想辦法從別的地方借力,而不是硬扛著用不夠的數據硬訓練一個大網路。這跟人學習新技能有點像。如果你要學一門新語言,但接觸這門語言的材料很有限,一個辦法是找到跟這門語言相近的另一門語言,先靠著已經掌握的知識搭個框架,再往裡填新內容,這樣比完全從零開始要快得多。如果不借這個力,直接拿著有限的數據死磕,大概率會學出一個只會照搬訓練樣本、遇到新情況就懵的模型,這正是過擬合的本質。

實驗結果:一次實打實的翻身

說了這麼多設計細節,最終結果到底怎麼樣?

論文在三個數據集上做了測試,UCF-101、HMDB-51,以及後來又補充測試的其他動作數據集。核心對比對象是當時最強的手工特徵方法密集軌跡,以及此前的深度學習方法。

| 方法 | UCF-101準確率 | 說明 |

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

| 密集軌跡(手工特徵) | 約88% | 當時最強手工方法 |

| 單純3D卷積網路 | 約65% | 此前深度學習方法代表 |

| 僅空間流 | 約73% | 本論文,只用畫面資訊 |

| 僅時間流 | 約83% | 本論文,只用運動資訊 |

| **雙流網路融合** | **約88%** | 本論文,兩流融合結果 |

雙流網路的最終結果,追平甚至略微超過了密集軌跡這個手工特徵的天花板。

這句話放在2014年,分量不亞於AlexNet在圖像識別上的橫空出世。那之前,深度學習在動作識別這個子領域一直被認為是"暫時打不過"的,這篇論文第一次證明,只要網路結構設計得合理,深度學習完全有能力在這個任務上追平甚至超越幾十年積累出來的手工特徵方法。

在HMDB-51數據集上,雙流網路的表現同樣明顯優於此前的深度學習方法,而且跟密集軌跡的差距也大幅縮小。

這篇論文之後發生了什麼

雙流網路這個思路一旦被驗證有效,後續研究幾乎是沿著它的框架繼續深挖。

2016年,Feichtenhofer等人發表了一篇論文,專門研究雙流網路里兩條流該在哪個層次上融合效果最好。他們發現,如果讓兩條網路在更早的卷積層就開始資訊交換,而不是等到最後一層才融合,效果能進一步提升。這篇論文相當於把雙流網路這個大框架里"怎麼融合"這個細節問題做得更精細了。

2017年,Carreira和Zisserman,注意這裡又出現了Zisserman的名字,發表了I3D網路,把雙流網路的思路和3D卷積結合起來,同時提出了一個規模更大的動作識別數據集Kinetics。這篇論文相當於把雙流網路的想法從"兩個2D網路"升級成了"兩個3D網路",讓時間維度上的建模能力進一步增強,在多個數據集上把準確率又往上推了一截。

這兩篇後續工作有個共同點,它們都沒有推翻雙流網路的核心思想,都認可"空間資訊和時間資訊應該分開建模再融合"這個基本判斷,只是在具體怎麼融合、怎麼建模上做了改進。這說明雙流網路提出的這個框架性判斷,在當時是抓住了問題本質的。

寫在後面

讀這篇論文時,最觸動我的地方不是準確率數字,而是那個看起來"倒退"的決定,先用傳統方法算光流,再讓深度學習去處理光流。這跟當時深度學習圈子裡"端到端學習才是正道"的主流敘事是有點擰著的。

後來的研究其實也一直在糾結這一點,有人試著讓網路自己從原始像素里學出光流,想徹底擺脫這個手工步驟,但很長一段時間裡,效果都不如直接用現成光流算法算出來的結果好用。這說明有些先驗知識,哪怪它是"手工"的,只要真的抓住了問題本質,直接餵給網路,可能比逼著網路自己重新發明一遍更划算。

這跟"萬物皆可端到端"這種信仰之間,到底該怎麼權衡,我覺得這篇論文留下的這個張力,比它給出的88%這個數字更值得琢磨。

Q&A

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

A:雙流卷積網路是2014年由Simonyan和Zisserman提出的影片動作識別架構,用兩個獨立的卷積網路分別處理畫面內容(空間流)和運動資訊(時間流),再把兩者的判斷結果融合起來,最終在UCF-101數據集上達到約88%的準確率,追平了當時最強的手工特徵方法密集軌跡。

Q2:雙流網路里的空間流和時間流分別是幹什麼的?

A:空間流輸入單幀RGB圖像,負責識別畫面里的物體、場景等靜態資訊;時間流輸入連續多幀計算出的光流場,專門捕捉動作的運動方向和速度。兩者單獨使用準確率分別約73%和83%,融合後能提升到約88%。

Q3:雙流網路之後有哪些重要的後續研究?

A:2016年Feichtenhofer等人研究了兩條流該在哪一層融合效果最好;2017年Carreira和Zisserman提出I3D網路,把雙流思路和3D卷積結合,並推出更大規模的Kinetics數據集,進一步提升了動作識別準確率。

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