微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 视频里的动作,用两只眼睛才能看清

视频里的动作,用两只眼睛才能看清

2026-08-19 09:10
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-08-19 09:10 科技行者

2014 年,深度学习正在图像识别领域杀得盛。AlexNet 两年前横空出世,把 ImageNet 图像分类的错误率直接砍掉一大截,整个计算机视觉圈都在往卷积神经网络这条路上挤。

但有一个领域,神经网络一直打不过老办法。

那就是视频动作识别,给一段视频,让机器判断里面的人在做什么,跳舞、挥剑、骑马还是打网球。这件事听起来应该比图像分类更简单才对,因为视频比照片信息量更大,多了一个时间维度。可现实恰恰相反。

当时最强的方法不是神经网络,而是一种叫

密集轨迹*:一种手工设计的特征提取方法,通过跟踪视频中密集采样的点在多帧之间的运动轨迹,统计轨迹周围的图像纹理和运动模式来判断动作类别。

的传统算法。在 UCF-101 这个当时的标准动作识别数据集上,密集轨迹能做到 88% 左右的准确率,而已有的深度学习方法只能刷到 70% 出头,差了将近 20 个百分点。

20 个百分点的差距是什么概念。意味着每 5 段视频,深度学习方法就要比手工特征多认错 1 个。在图像识别领域,深度学习明明已经全面碾压了传统方法,怎么到了视频这里反而抬不起头。

这个问题困住了很多人,直到 Karen Simonyan 和 Andrew Zisserman 这两位牛津大学的研究者,发表了一篇叫《Two-Stream Convolutional Networks for Action Recognition in Videos》的论文,才第一次让深度学习在这个任务上追平甚至超过了手工特征。这两位后来几个月又发表了 VGGNet,也就是后来无数人入门深度学习都会用到的那个经典网络结构。两篇论文几乎是同期完成的工作,说明这个团队当时正在系统性地摸索卷积网络的各种可能性。

问题出在哪:网络看不懂"动"

要理解这篇论文的贡献,得先搞清楚,深度学习在视频上究竟卡在哪。

图像分类的核心是识别静态的形状、纹理、颜色。一张猫的照片,不管猫在不在动,网络都能通过学习到的边缘、轮廓、局部特征把它认出来。这套逻辑迁移到视频上,最直接的做法是把视频拆成一帧一帧的图片,对每一帧单独跑图像分类网络,最后把结果综合一下。

但动作识别的核心根本不是外观,而是运动本身。

同一个人站着不动是"站立",挥手是"打招呼",这两个动作在单帧画面上可能长得几乎一样,区别只在于连续帧之间的变化模式。如果网络只看单帧,它压根看不到这个变化。这就像给你一张运动员起跳瞬间的照片,你很难判断他是在跳远还是在跳高,因为关键信息藏在这一瞬间前后的运动轨迹里,不是这一帧本身。

早期尝试过直接把 3D 卷积用在视频上,让卷积核同时在空间和时间维度上滑动,理论上这样就能捕捉运动信息。但实际效果不理想,一个重要原因是当时的视频数据集规模太小,UCF-101 只有一万多段视频,根本训练不出一个同时学空间特征和时间特征的复杂 3D 网络,模型很容易过拟合。

所以问题变成了一个两难,用 2D 网络处理单帧图像,能学到扎实的外观特征,但完全丢失了运动信息;用 3D 网络硬学时空联合特征,数据又不够,学不出个好模型。

核心思路:让两个网络各管一件事

Simonyan 和 Zisserman 给出的解法非常巧妙,他们没有硬造一个更复杂的网络去同时学外观和运动,而是把这两件事彻底拆开,交给两个独立的卷积神经网络分别处理。

一个网络专门看"长什么样",输入是视频的单帧 RGB 图像,负责捕捉场景、物体、人物外观这些静态信息。这条路径叫

空间流*:Two-Stream 网络中的一条分支,输入单帧 RGB 图像,负责提取场景和物体外观等空间维度信息。

另一个网络专门看"怎么动的",输入不是图像,而是

光流*:描述视频中相邻两帧之间像素运动方向和速度的场,通常用两个通道分别表示水平和垂直方向的位移。

光流场直接编码了像素级的运动信息,水平方向挪了多少,垂直方向挪了多少,把这些堆叠起来输入到第二个网络,这条路径叫

时间流*:Two-Stream 网络中的另一条分支,输入连续帧计算出的光流场,负责提取运动信息。

两个网络结构相似,都是当时经典的卷积神经网络架构,但各自独立训练,最后把两边的分类结果做加权融合,得到最终判断。

这个设计的巧妙之处在于,它没有要求一个网络同时精通两门功课,而是承认了外观识别和运动识别是两种不同性质的模式识别任务,分开学,各自能学得更专精,数据需求也更低。

这就像一支球队里,你不会要求前锋既要能精准射门又要能死守后场,而是让前锋专注进攻,后卫专注防守,两人配合完成整场比赛。如果硬要培养一个全能选手,在数据和训练资源有限的情况下,大概率两头都学不精。分开训练两个专才,再把他们的判断结合起来,反而效果更好。

论文里有一张展示空间流第一层卷积核的图,你会发现这些卷积核学出来的大多是边缘和纹理方向的检测器,跟图像分类网络学到的东西很像。而时间流的第一层卷积核则呈现出明显的方向性模式,说明网络自己学会了识别光流场里不同方向的运动模式。这不是人为设计出来的,是网络在训练过程中自己发现的,光流数据里最重要的信息就是方向和幅度的组合。

时间流具体怎么处理运动信息

时间流的设计里有个细节值得展开讲讲,因为这直接决定了这个网络能不能真正学到有用的运动模式。

单靠两帧之间的光流,信息量太单薄,一个动作往往要持续几十帧才能完整呈现。所以论文的做法是把连续多帧的光流场堆叠在一起,作为时间流网络的输入。具体来说是取相邻的 L 帧计算出的水平和垂直光流,叠成一个 2L 通道的输入,这样网络一次性能看到一段时间窗口内的运动变化,而不只是某一瞬间的移动。

论文里做了个对比实验,测试不同的堆叠帧数对准确率的影响。结果显示,堆叠 10 帧光流的效果明显好于只用 1 帧,准确率能提升好几个百分点。这说明动作识别确实需要一定长度的时间窗口才能捕捉完整的运动模式,单帧光流就像只看一个动作的起始瞬间,信息不够。

除了简单堆叠相邻帧,论文还尝试了一种叫

轨迹叠加光流*:沿着密集轨迹方法中跟踪的运动轨迹方向来采样光流,而不是简单按固定的空间位置堆叠,目的是让光流的采样路径本身也贴合物体的实际运动方向。

的变体,想法是借鉴密集轨迹方法里跟踪运动轨迹的思路,让光流采样也沿着物体实际移动的路径走,而不是死板地按固定网格位置采样。这个变体在实验里带来了小幅提升,说明连采样方式本身都值得针对运动信息做定制化设计,不能照搬图像处理的老套路。

还有一个容易被忽略但很关键的处理是,光流本来是有方向的,一个人往左挥手和往右挥手在光流上是相反的信号。为了让网络对这种方向性更鲁棒,论文还测试了减去平均光流的做法,相当于去掉整体运动的偏移,让网络更专注于相对运动模式,这个小技巧同样带来了准确率提升。

这些细节合在一起说明一件事,时间流网络不是简单地把光流图片当成普通图片扔进卷积网络就完事了,研究者针对光流数据的特性做了一系列专门的适配,这也是为什么这条分支能学出真正有效的运动特征,而不是徒有其表。

数据不够怎么办:从图像识别里借力

前面提到,3D 卷积网络在视频上效果不好的一个重要原因是数据不够。Two-Stream 网络虽然巧妙地拆分了任务,但空间流和时间流各自依然是需要大量数据训练的深度网络,UCF-101 一万多段视频对训练一个深度卷积网络来说仍然偏少。

论文给出的解决办法是

多任务学习*:让一个网络同时在多个相关但不完全相同的数据集或任务上训练,共享底层特征表示,以此增加有效训练数据量并提升泛化能力。

具体做法是把空间流网络在 ImageNet 这个超大规模的图像分类数据集上先做预训练,借助 ImageNet 上已经学好的丰富视觉特征,再迁移到动作识别任务上微调。这个操作后来几乎成了深度学习的标准套路,但在当时,把图像分类学到的特征直接搬到视频动作识别上,还是一个相对新颖的尝试。

对于时间流,由于光流数据集本身规模有限,论文还尝试了把两个不同的动作识别数据集,UCF-101 和 HMDB-51,联合起来训练同一个网络,通过共享的卷积层学习通用的运动特征,再用各自数据集独有的最后一层来做具体分类。这个思路本质上就是用多个小数据集拼出一个相对更大的训练信号,弥补单一数据集规模不足的问题。

这套借力打力的思路,有点像一个刚毕业找工作的年轻人,如果只靠自己有限的实习经历去应聘,竞争力有限,但如果把之前在别的相关领域积累的通用技能拿出来,比如沟通能力、数据分析能力,再针对新岗位做一些补充学习,整体的竞争力就会大幅提升。直接从零开始训练,相当于要求这个年轻人完全没有过往经验,只靠一次性的岗位培训就要胜任工作,难度自然大得多。

两条流到底谁更重要,合起来又怎样

论文里做了一系列拆解实验,把空间流和时间流单独拿出来测试,再和融合后的结果对比,这组数据非常直观地说明了两条流各自的价值和合并的意义。

在 UCF-101 数据集上,单独用空间流,也就是只看单帧图像做分类,准确率大概在 73% 左右。这个数字本身已经不算差,说明外观信息确实能提供不少判断依据,比如打网球和游泳,场景和器械外观差异就很大,光看一帧画面也能猜个大概。

单独用时间流,也就是只看光流运动信息,准确率能达到 83% 左右,明显高于单独的空间流。这个结果挺说明问题的,证明运动信息对动作识别的贡献比外观信息更关键,毕竟"动作"这个词本身强调的就是动态变化,不是静态外观。

而把两条流融合起来之后,准确率能冲到 88% 左右,比单独任何一条流都要高出好几个百分点。这说明外观信息和运动信息不是互相替代的关系,而是互补的,空间流能提供场景和物体线索,时间流能提供动态变化线索,两者结合才能拼出一个更完整的判断依据。

反过来想,如果只用空间流,会发生什么。实验数据已经给出了答案,准确率会从 88% 掉到 73% 左右,足足少了 15 个百分点。这个差距足够说明,只看外观不看动作,对于动作识别这个任务来说是根本性的信息缺失,不是精调一下网络结构就能补回来的。

|方法|准确率(UCF-101)|

|---|---|

|仅空间流|73.0%|

|仅时间流|83.7%|

|**Two-Stream融合**|**88.0%**|

|同期密集轨迹方法|87.9%|

这张表格里最值得记住的一行,是 Two-Stream 融合之后的 88.0%,首次追平甚至略微超过了当时最强的手工特征方法密集轨迹的 87.9%。这一个百分点的差距看起来微小,但它标志着一个转折点,深度学习在视频动作识别这个此前被手工特征统治的领域,第一次证明了自己有能力打平传统方法,而不再是被压着打的那个。

这在 2014 年的分量不亚于两年前 AlexNet 在图像分类上的横空出世。区别在于,AlexNet 是碾压式的胜利,Two-Stream 网络更像是艰难地追平了一个此前遥不可及的对手,但这个追平本身,给整个领域指明了一条可行的路。

这篇论文之后发生了什么

Two-Stream 网络提出的双流拆分思路,后来成了视频理解领域一个持续被引用和改进的基础框架,很多后续工作都是在这个骨架上继续添砖加瓦。

2015 年,Feichtenhofer、Pinz 和 Zisserman(同一个 Zisserman)发表了一篇关于双流网络卷积融合方式的论文,探讨在网络的哪一层把空间流和时间流的特征图进行融合效果最好,而不是像原始 Two-Stream 那样只在最后的分类分数层面简单加权融合。这篇论文发现,在网络中间层就开始融合两条流的特征,能让准确率进一步提升,因为这样空间信息和运动信息可以更早地相互影响,而不是各自学完再简单拍板。

2016 年,Wang 等人提出的

时序分段网络*:Temporal Segment Network,简称 TSN,一种改进的双流网络结构,通过把整段视频划分成多个时间片段分别采样,再综合各片段的预测结果,来更好地建模长视频中的时间结构。

把双流网络从只关注短时间窗口的运动信息,扩展到能建模整段视频的长时间结构。原始 Two-Stream 网络在处理一段视频时,往往只是从中随机采样几帧或几个光流片段,对于时间较长、动作变化复杂的视频,这种采样方式容易丢失全局时间信息。TSN 把视频切成几个片段,每个片段单独用双流网络处理,再把各片段结果综合起来,这样既保留了双流网络的核心思路,又弥补了原始版本在长视频建模上的短板,在多个动作识别数据集上把准确率又往上推了一截。

再往后,像 I3D 这类把 2D 卷积核直接"膨胀"成 3D 卷积核的网络,以及后来基于 Transformer 架构的视频理解模型,虽然架构上已经和最初的 Two-Stream 网络相差很远,但双流分离外观和运动信息这个核心洞察,依然在很多设计里能看到影子,哪怕不再是两个物理上独立的网络,也常常会在网络内部单独设计处理时间维度信息的模块。

写在后面

读这篇论文最触动我的地方,是研究者面对一个"网络学不好"的问题时,没有第一反应去堆更多层、更大的网络,而是先去问,这个任务本身需要学什么信息,现有的输入方式有没有把这些信息暴露出来。光流场不是新发明,在这篇论文之前几十年就存在,真正的贡献是把它当成一种和 RGB 图像平等的输入模态,交给一个专门的网络去学。

这让我想到一个更大的问题,深度学习经常被理解成一种万能的黑箱,只要数据够多、网络够深就能学到一切。但 Two-Stream 网络恰恰证明了相反的事,有时候把任务拆解成更符合问题本质的子任务,反而比一个大而全的网络更有效。这种拆分的智慧,可能比网络架构本身更值得记住。

还有一个问题这篇论文没有回答,也是我读完之后一直在想的,如果光流本身计算不准,比如遇到快速运动或者遮挡,时间流会不会因此学到错误的信号?这个隐患后来确实推动了不少工作去探索不依赖显式光流计算的运动建模方式,这条线索本身也很有意思。

Q&A

Q1:Two-Stream卷积网络是什么?

A:Two-Stream 卷积网络是 Simonyan 和 Zisserman 在 2014 年提出的视频动作识别方法,用两个独立的卷积神经网络分别处理单帧图像和光流信息,再融合两者的判断结果,第一次让深度学习在动作识别任务上追平了传统手工特征方法。

Q2:空间流和时间流哪个更重要?

A:实验数据显示单独用时间流(光流)的准确率约为 83.7%,高于单独用空间流(RGB 图像)的 73.0%,说明运动信息对动作识别的贡献比外观信息更大,但两者融合后能达到 88.0%,说明二者是互补关系。

Q3:Two-Stream网络后来被怎么改进了?

A:2015 年 Feichtenhofer 等人探索了在网络中间层融合双流特征而非仅在分类层融合;2016 年 Wang 等人提出的时序分段网络(TSN)把双流网络扩展到能建模整段长视频的时间结构,进一步提升了准确率。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-