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

贊助商廣告

X

影片裡的動作,AI是怎麼「看懂」的:雙流網路的故事

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

2014年,電腦視覺圈裡流行著一個說法:深度學習在圖片識別上已經贏了,但要讓它看懂影片裡的動作,還差得遠。

這句話背後是個扎心的事實。AlexNet在2012年橫空出世,把圖片分類的準確率提升到了前所未有的高度,整個學術圈都在為深度學習歡呼。可是換到影片動作識別這個任務上,神經網路卻一直打不過一種叫"密集軌跡影片裡的動作AI是怎麼看懂的雙流網路的故事"的老派手工特徵方法。研究者們試過把卷積網路直接懟到影片幀上訓練,結果準確率只有41.3%,而當時最好的手工特徵方法能做到59.9%,足足差了將近19個百分點。

這個差距意味著什麼?意味著每識別10個動作,神經網路就要比老方法多認錯快2個。這在當年是相當難看的成績單,深度學習的光環第一次在影片領域打了折扣。

問題出在哪兒?牛津大學的Karen Simonyan影片裡的動作AI是怎麼看懂的雙流網路的故事和Andrew Zisserman影片裡的動作AI是怎麼看懂的雙流網路的故事決定認真琢磨這件事,他們後來發表的論文提出了一個思路,讓深度學習在影片動作識別上第一次實實在在地超過了手工特徵。這篇論文叫《Two-Stream Convolutional Networks for Action Recognition in Videos》,後來被稱為"雙流網路影片裡的動作AI是怎麼看懂的雙流網路的故事"。

影片識別到底難在哪

要理解這篇論文的巧妙之處,得先搞清楚影片動作識別這件事本身有多棘手。

圖片分類相對簡單,一張照片,你要判斷裡面是貓還是狗,靠的是形狀、紋理、顏色這些靜態特徵。可是動作是個動態的東西。你光看一張"人舉起手臂"的靜止照片,根本判斷不出這個人是在揮手打招呼,還是在扔東西,還是剛做完一個跳躍動作正在下落。

**動作識別真正需要的資訊,一部分藏在畫面的內容里,另一部分藏在畫面的變化里。**

這就好比你在猜一個人接下來要做什麼。如果只給你一張照片,你只能靠這個人的姿勢、穿著、周圍環境來猜,資訊量有限。但如果給你連續幾張照片,你能看出這個人的手是從下往上移動,還是從上往下移動,這個"移動的方向和速度"本身就是極其重要的線索。

傳統的手工特徵方法,比如那個打贏了深度學習的"密集軌跡"(Dense Trajectories),做法是先在影片裡追蹤一堆特徵點,然後沿著這些點的運動軌跡去描述局部的外觀和運動資訊。這種方法設計得很精細,考慮了軌跡的方向、形狀、周圍的梯度變化等等,效果確實好。但缺點也很明顯:全靠人工設計的規則,泛化能力有限,遇到沒見過的場景容易翻車。

而深度學習的強項本該是自動學習特徵,不需要人來設計規則。問題是,當研究者簡單地把影片的每一幀當成一張圖片扔進卷積網路訓練時,網路學到的更多是"這一幀里有什麼東西",而不是"這個東西是怎麼動的"。網路對時間維度上的變化幾乎是麻木的。

**這就是雙流網路要解決的核心矛盾:怎麼讓神經網路同時學到"畫面里有什麼"和"畫面在怎麼變"這兩件事。**

拆成兩條河來看

Simonyan和Zisserman給出的答案,說出來其實挺樸素:既然一個網路很難同時兼顧外觀資訊和運動資訊,那就乾脆用兩個網路,一個專門看外觀,一個專門看運動,最後把兩邊的判斷結果加起來。

這就是"雙流"(Two-Stream)這個名字的來源。

第一條流叫空間流影片裡的動作AI是怎麼看懂的雙流網路的故事(Spatial stream)

引用塊:空間流:輸入是影片中的單獨一幀RGB圖像,負責捕捉畫面中的物體外觀、場景背景這類靜態資訊。

空間流的輸入很簡單,就是影片裡某一幀的彩色圖片。它的任務是識別畫面里有什麼東西,比如一個人、一個球、一片草地。這部分工作和普通的圖片分類任務幾乎一樣,所以可以直接借用在ImageNet大規模圖片數據集上預訓練好的網路結構,站在巨人的肩膀上。

第二條流叫時間流影片裡的動作AI是怎麼看懂的雙流網路的故事(Temporal stream)

引用塊:時間流:輸入是光流影片裡的動作AI是怎麼看懂的雙流網路的故事場,負責捕捉畫面中物體的運動方向和速度資訊。

引用塊:光流(Optical flow):描述影片中相鄰兩幀之間,畫面上每個像素點是往哪個方向、移動了多遠的一種表示方法,本質上是給運動"拍了張地圖"。

時間流不看原始圖像,它看的是"光流場"。這是這篇論文最關鍵的設計。光流是電腦視覺里一個已經存在了幾十年的經典概念,簡單說就是拿相鄰的兩幀圖像做對比,算出畫面里每一個點從上一幀到下一幀移動了多少、往哪個方向移動。把這些移動資訊畫出來,就是一張"運動地圖",亮的地方代表變化劇烈,箭頭方向代表運動方向。

論文裡把光流拆成了水平方向和垂直方向兩張圖,再疊加多幀,形成一個包含若干幀運動資訊的輸入,餵給一個和空間流結構類似但參數完全獨立的卷積網路。

這兩條流各自訓練,各自輸出一個"這個影片屬於哪個動作類別"的預測分數,最後簡單地把兩邊的分數加權平均,或者用一個小的分類器把兩邊結果融合一下,得出最終答案。

**如果不這樣拆開會怎樣?論文裡做了實驗對照。只用空間流,單獨在UCF-101影片裡的動作AI是怎麼看懂的雙流網路的故事數據集上的準確率是72.6%,只用時間流是81.0%,但兩者結合起來能達到88.0%。**

單獨看空間流那72.6%,你會發現它和最後的88%之間差了整整15個百分點。這說明只看外觀,網路確實能猜出一部分動作,比如看到游泳池大概率是"游泳"這個類,但這種猜測很大程度上是靠"場景"而不是靠"動作"本身,天花板很低。而時間流單獨已經能到81%,說明運動資訊本身包含的動作線索,比外觀資訊更直接、更關鍵。兩者一結合,互相補足,才拿到接近九成的準確率。

這裡可以做個類比。想像你在看一場無聲的默劇表演,你不知道台詞,只能靠演員的動作猜劇情。這時候,如果你只盯著演員穿的衣服和站的位置看(相當於空間流),你能猜出這大概是個古裝戲還是現代戲,但具體在演什麼劇情你猜不准。如果你乾脆閉上眼睛,只靠耳朵聽演員走路的腳步聲、揮手帶起的風聲(相當於時間流的運動資訊),你反而能更準確地判斷出這個人是在打鬥還是在擁抱。但最準確的判斷方式,一定是同時睜眼看又用心感受動作節奏,兩種資訊合在一起給出判斷。如果非要你只用一種感官,你的判斷力都會打折扣,這正是論文用兩條獨立網路而不是硬塞進一個網路的原因,資訊性質不同,分開處理反而更清楚。

為什麼不用一個網路硬扛

看到這裡你可能會問,為什麼不能讓一個網路同時接收原始圖像和光流圖,一起訓練學出來?

論文裡其實也考慮過把兩條流的特徵在網路中間層直接融合的方案,但實驗發現效果不如分開訓練、最後再合併分數的策略。這背後的原因,和這兩種數據的"性格"差異有關。

原始RGB圖像和光流圖,雖然都是"圖片"形式的數據,但它們編碼的資訊本質完全不同。RGB圖像里,顏色、紋理這些低層次特徵很重要,網路的卷積核往往會學出各種顏色和邊緣檢測器。而光流圖不一樣,它的數值代表的是運動方向和幅度,論文裡提到,如果去看時間流網路第一層卷積核學出來的樣子,會發現它們大多呈現出明顯的方向性,像是一組專門檢測"某個方向上的運動"的濾波器。這不是隨手調出來的效果,是網路自己在訓練過程中學出來的,說明光流場裡最有價值的資訊確實就是方向性的運動模式,和RGB圖像那套顏色紋理的邏輯完全不搭。

**兩種數據的統計特性差異這麼大,硬塞進同一個網路從頭學,反而會讓網路在兩種信號之間"打架",誰也學不精。分開訓練,讓每個網路專注一種信號的特性,是更穩妥的做法。**

這就好比讓一個人同時學中文和阿拉伯語的書法。這兩種文字的筆畫邏輯、書寫方向、審美標準完全不同,如果你逼著這個人在同一堂課上、用同一套練習方法去學,效果往往是兩種字都寫不好。但如果分成兩門課,分別請專門的老師用適合各自文字特點的方法教,學的人反而能把兩種字都練紮實,最後往一起對比參考的時候,收穫反而更大。雙流網路的設計邏輯正是如此,分開學、最後再融合判斷。

數據不夠怎麼辦

除了架構設計,這篇論文還面對了一個實際的大麻煩:訓練數據太少。

當時用於動作識別的標準數據集,比如UCF-101,總共只有約13000個影片片段,而ImageNet那種圖片數據集動輒上百萬張標註圖片。影片數據集小,神經網路又是那種"吃數據"的模型,訓練很容易過擬合,也就是模型死記硬背了訓練集裡的樣本,換成沒見過的新影片就翻車。

論文採取了幾個應對策略:

第一,空間流直接借用在ImageNet上預訓練好的網路參數做初始化,再在動作識別數據上微調,相當於讓網路先在圖片識別這個"大池子"里學會基礎的視覺常識,再拿小數據集做針對性調整。

第二,在訓練時做大量的數據增強,比如對圖像做隨機裁剪、水平翻轉、色彩抖動,人為製造出更多樣化的訓練樣本,讓網路見過更多變體,減少死記硬背的空間。

第三,論文還嘗試了在多個數據集上聯合訓練,把不同來源的動作識別數據集合併起來一起訓練網路,變相擴充了數據規模。

這幾個策略疊加起來,讓原本因為數據量不足而受限的深度網路,總算能訓練出可用的效果。

這裡的處理方式讓人想到一個生活場景。假設你要教一個剛學做飯的新手炒十道特色菜,但你手頭能提供練習的食材只夠他每道菜炒兩三次。這點練習量根本不夠他真正掌握火候和調味。這時候比較聰明的做法是,先讓他去跟著一個經驗豐富的大廚學做菜的基本功,掌握下鍋時機、翻炒力度這些通用技能,然後再針對這十道特定的菜做少量但精準的專項練習。同時,每次練習的時候故意換著用不同大小、不同新鮮度的食材,逼著他適應各種變化,而不是只在最理想的條件下練習。這樣即便真正用於這十道菜的練習次數不多,他掌握的技能也會比閉門死練那兩三次紮實得多。雙流網路面對數據不足的處理邏輯,和這套"先打基礎、再精準練習、加上刻意增加變化"的思路是一致的。

實驗結果說了什麼

論文在幾個當時主流的動作識別數據集上做了測試,最關鍵的是UCF-101和HMDB-51影片裡的動作AI是怎麼看懂的雙流網路的故事這兩個數據集。

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

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

| 僅空間流(RGB) | 72.6% | 40.5% |

| 僅時間流(光流) | 81.0% | 54.6% |

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

| 此前最好的手工特徵方法 | 87.9% | 57.2% |

這張表格里最值得琢磨的,是雙流網路88.0%這個數字和此前手工特徵方法87.9%的對比。看起來只差0.1個百分點,似乎沒什麼了不起。但這個"打平略勝"背後的意義完全不一樣。手工特徵方法是幾年時間裡一代代研究者精心設計、反覆調優出來的產物,而雙流網路這套架構相對簡單,主要靠的是讓網路自己從數據里學習特徵。這是深度學習第一次在影片動作識別這個戰場上,靠自動學習的方式追平甚至反超了精心設計的手工方法。

**這個時刻的分量,不亞於兩年前AlexNet在圖片分類上證明深度學習可行的那次突破。**

在HMDB-51這個數據集上的優勢更明顯一些,59.4%對57.2%,領先了2.2個百分點。HMDB-51本身是個更難的數據集,動作類別更細碎、場景更複雜,雙流網路在這上面的優勢說明它學到的特徵確實具備了一定的泛化能力,不是單純針對某個數據集調出來的取巧結果。

值得一提的是,Simonyan和Zisserman當時都在牛津大學視覺幾何組(VGG影片裡的動作AI是怎麼看懂的雙流網路的故事),幾個月後,同一個組的另一篇論文提出了後來家喻戶曉的VGGNet,那篇論文專注於研究卷積網路的深度對圖片分類效果的影響。雙流網路和VGGNet算是同期的姊妹工作,一個解決影片問題,一個解決圖片問題,出自同一個組的思考脈絡,某種程度上反映了那個組當時對卷積網路能力邊界的系統性探索。

這篇論文之後發生了什麼

雙流網路提出之後,後續的研究者們圍繞著它的思路做了大量延伸和改進,這個方向在接下來幾年裡持續升溫。

2015年,Feichtenhofer等人的論文研究了如何在網路中間層就把空間流和時間流的特徵做卷積層面的融合,而不是等到最後才簡單相加分數,這個改進讓準確率進一步提升,證明了兩條流之間在中間層也存在可以利用的互補資訊。

2016年,Wang等人提出了TSN(Temporal Segment Networks),這篇論文解決了雙流網路的一個明顯短板:原始雙流網路在處理長影片時,只是從影片裡稀疏採樣幾幀或者幾個光流片段來代表整個影片,資訊利用效率不高。TSN把整段影片切成若干個片段,每個片段里都跑一遍雙流網路,再把這些片段的結果聚合起來,這樣能捕捉到長影片裡跨越更長時間跨度的動作模式,在多個數據集上的準確率相比原始雙流網路又有了明顯提升。

再往後,3D卷積網路路線(比如I3D)開始興起,這類方法試圖用三維卷積直接對時間和空間維度一起建模,不再需要單獨計算光流這個額外步驟,訓練和推理效率上更有優勢,某種程度上是對雙流網路"分兩條路走"這個設計思路的一次反思和簡化。但即便到了3D卷積逐漸成為主流的階段,雙流網路"顯式建模運動資訊和外觀資訊"這個核心思想,依然被後續很多工作借鑑和延續,只是實現方式從光流計算變成了讓網路自己隱式地學習運動特徵。

寫在後面

讀這篇論文時,最觸動的地方是那個第一層卷積核的可視化圖。時間流網路自己學出了一組方向性濾波器,沒有人告訴它"運動有方向",它是從大量光流數據里自己總結出這條規律的。這說明深度學習真正厲害的不是算力堆出來的暴力美學,而是給它對的數據形式,它能自己發現物理世界裡本該存在的規律。

這篇論文裡最容易被忽略但其實很關鍵的一點是,雙流網路的成功很大程度上依賴光流這個手工設計的預處理步驟。網路學的是運動特徵,但"運動"這個概念本身,是靠傳統算法算出來的光流場餵給網路的,不是網路從原始像素里自己發現的。某種意義上,這依然是手工特徵和深度學習的一次合作,而不是深度學習完全獨立的勝利。後來3D卷積網路想繞開這一步,直接讓網路從原始幀序列里學運動資訊,這條路走得通不通,以及能不能比顯式計算光流做得更好,其實到今天依然是個值得追問的問題。

Q&A

Q1:雙流網路是什麼?

A:雙流網路是2014年由牛津大學Simonyan和Zisserman提出的影片動作識別方法,用兩個獨立的卷積神經網路分別處理影片的靜態畫面(空間流)和運動資訊(時間流),再把兩邊的預測結果融合,首次讓深度學習在影片動作識別任務上超過了傳統手工特徵方法。

Q2:雙流網路為什麼要分成兩條網路而不是一個?

A:因為靜態畫面和運動資訊這兩種數據的性質差異很大,原始圖像靠顏色紋理判斷,而光流圖靠運動方向和幅度判斷,把兩者塞進同一個網路訓練效果反而不如分開訓練再融合,實驗中融合後準確率達到88.0%,遠高於單獨任何一條流。

Q3:雙流網路之後還有哪些改進方法?

A:2015年有研究提出在網路中間層融合兩條流的特徵,2016年Wang等人提出TSN方法通過切分影片片段來捕捉更長時間跨度的動作資訊,再往後3D卷積網路(如I3D)嘗試直接用三維卷積建模時空資訊,不再依賴單獨計算光流這一步驟。

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