微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

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

首页 双流卷积网络:当深度学习第一次学会"看"视频里的动作

双流卷积网络:当深度学习第一次学会"看"视频里的动作

2026-09-18 11:52
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-09-18 11:52 科技行者

2014 年夏天,如果你去问任何一个做计算机视觉的研究者,"深度学习能不能识别视频里的动作", 大概率会得到一个模糊的回答。

图片识别这边,卷积神经网络已经如日中天。前一年 AlexNet 横扫 ImageNet 比赛,把图像分类的错误率砍掉了一大块,整个学术圈都在往深度学习这条路上挤。但视频识别是另一个世界。

在动作识别这个任务上,当时最强的方法不是神经网络,而是一套叫做"密集轨迹"的手工特征方案。

密集轨迹*:一种传统计算机视觉方法,通过追踪视频中密集分布的点随时间的运动轨迹,再手工设计特征描述这些轨迹的形状和纹理,用于识别动作类别。

这套手工方案在标准测试集上能拿到 85% 以上的准确率,而当时所有尝试过的深度学习方法,最好成绩也就徘徊在 65% 到 70% 之间,足足差了将近 20 个百分点。

20 个百分点的差距意味着什么。意味着如果你随便抓 5 段动作视频交给深度学习模型判断,它比手工方法要多认错整整 1 个。这不是小差距,这是让整个深度学习阵营脸上挂不住的差距。

要知道,深度学习刚刚在图片识别上证明了自己的价值,视频不过是图片加上时间维度,为什么就啃不下来。

为什么视频比图片难啃

答案藏在一个直觉里,直觉往往是错的。

很多人第一反应是,视频就是一帧一帧的图片连起来,那我们把每一帧扔进卷积网络,再想办法把结果汇总一下不就行了。

问题就出在这个"想办法汇总"上。研究者们试过很多种时间维度的建模方式,比如把多帧图像叠在一起作为输入通道,让网络自己去学习帧与帧之间的关系。结果发现,网络学出来的东西效果并不好,甚至不如单帧图片分类直接拿来做投票。

这背后的根本矛盾是:卷积网络天生擅长学习空间上的模式,比如一张图里的边缘、纹理、形状,这些东西静止不动,规律性很强。但运动是另一种性质完全不同的信息,它藏在帧与帧之间的差异里,不是某一帧本身能看出来的。

打个比方,你给一个从没看过体育比赛的人一张定格照片,问他这个人是在打网球还是在挥棒球,单看这一张照片,他可能真答不上来,因为姿势看起来差不多。但如果给他看连续几秒的视频,他立刻就能分辨,因为动作的轨迹、速度、节奏这些信息只存在于"变化"里,不存在于任何单独一帧里。如果不专门去捕捉这种变化信息,只是简单堆叠图片帧塞给网络,网络学到的还是空间上的静态模式,对时间信息基本是睁眼瞎。

牛津大学的两位研究者 Karen Simonyan 和 Andrew Zisserman 在这个问题上想出了一个思路。有意思的是,这两人所在的实验室几个月后又发表了另一篇同样影响深远的论文,提出了 VGGNet,这个后来成为图像识别标准模型之一的网络结构。同一个组,同一年,一个专注在攻克视频,一个专注在把图片网络做得更深,两条线后来都成了深度学习history里绕不开的节点。

核心思路:光流场

Simonyan 和 Zisserman 的关键洞察是,如果网络学不好运动信息,那就不要指望它自己从原始像素里悟出运动,直接把运动信息喂给它。

具体做法是引入光流场。

光流场*:描述视频中每一个像素点从一帧到下一帧移动方向和速度的一种表示方式,本质上是一张标注了运动向量的图。

光流场这个概念听起来抽象,其实原理不复杂。假设视频里有一个人在挥手,光流场会计算出手部区域的每个像素点,在下一帧里往哪个方向移动了多远,然后把这些移动信息画成一张图。这张图里没有颜色、没有纹理,只有方向和速度的编码。

这就是论文最核心的设计决策:把一个网络拆成两条独立的流。

一条叫空间流,输入是普通的 RGB 图片,负责识别画面里有什么东西,比如场景是室内还是室外,画面里有没有球、有没有乐器。

另一条叫时间流,输入不是图片,而是提前计算好的光流场,负责识别动作本身是怎么运动的。

两条流各自训练一个独立的卷积网络,最后把两边的预测结果做加权融合,得到最终答案。

双流网络,而不是单一网络

为什么非要拆成两条流,而不是想办法设计一个更聪明的单一网络去同时处理空间和时间信息。

论文里有明确的态度:空间信息和运动信息的统计特性差异太大,硬塞进同一个网络框架里去学,效果反而不好。

这里可以做一个类比。你让一个人同时练习两件事,一件是记住每个路口有什么建筑,一件是记住走路时脚踝转动的角度节奏,这两件事所需要关注的细节完全不是一个体系。如果强迫他一边走路一边死记硬背两种信息交织在一起的笔记,他大概率两头都学不精。但如果分开练,一部分精力专门记路线,一部分精力专门练习步态,两边都能练到位,最后再把两种能力结合起来用,效果会好得多。双流网络的设计逻辑正是如此,让空间流专心学"这是什么场景",让时间流专心学"这东西怎么动",分开优化,再融合结果。

如果不这样拆分会发生什么,论文里其实间接给出了答案。只用单一网络直接处理原始帧序列的早期尝试,效果始终不如手工特征,这也是为什么在双流网络出现之前,深度学习一直卡在 65% 到 70% 的天花板附近。

那双流网络融合之后效果如何。论文在 UCF-101 和 HMDB-51 两个标准数据集上做了测试。

关键实验结果

先看单独一条流的表现。

如果只用空间流,也就是只看单帧图片不看运动信息,在 UCF-101 数据集上的准确率是 72.6%。

如果只用时间流,也就是只看光流场不看画面内容,准确率反而更高,达到 81.0%。

这个结果本身就很说明问题,运动信息对动作识别的重要性,甚至比画面内容还关键。回到前面打网球和打棒球的例子,如果你只能选一种信息去判断动作类型,运动轨迹显然比画面场景更有辨别力,这个实验数据印证了这一点。

而当两条流融合之后,准确率提升到 88.0%。

这意味着两条流不是简单的重复,它们各自捕捉到了对方遗漏的信息,合并起来产生了明显的增益。从只有空间流的 72.6% 到融合后的 88.0%,提升了超过 15 个百分点,这几乎追平甚至反超了当时最强的手工特征方法。

下面是论文中几组关键对比数据。

| 方法 | UCF-101 准确率 | HMDB-51 准确率 |

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

| 仅空间流 | 72.6% | 40.5% |

| 仅时间流 | 81.0% | 54.6% |

| **双流融合** | **88.0%** | **59.4%** |

| 当时最强手工特征方法 | 约 85-87% | 约 57% |

这张表格里最关键的一行是双流融合的结果。它第一次让深度学习方法在动作识别这个任务上,追上甚至超过了统治多年的手工特征方案。

这是深度学习在视频动作识别领域第一次真正打赢手工特征,这个历史节点的分量,放在 2014 年那个时间点上,和 AlexNet 在图片识别上掀起的震动是同一个级别的事件。之前深度学习在这个赛道上被压了两年多,这一次终于翻盘。

训练数据不够怎么办

论文还处理了一个很现实的问题:视频数据集比图片数据集小得多,直接训练容易过拟合。

过拟合*:模型在训练数据上表现很好,但在没见过的新数据上表现很差,相当于死记硬背而不是真正学会规律。

Simonyan 和 Zisserman 用了几个技巧来缓解这个问题,包括用图片分类任务预训练网络参数再迁移到视频任务上,以及对训练样本做多种随机裁剪和翻转的数据增强。

这些技巧听起来琐碎,但在深度学习实践里往往是决定成败的细节。一个网络架构再精妙,数据不够、训练方式不对,照样跑不出好结果。这也提醒我们,论文里那些漂亮的准确率数字背后,往往藏着大量工程上的精细打磨,不是单靠一个巧妙的想法就能凭空实现的。

后续的影响

双流网络这个思路提出之后,很快成为视频动作识别领域接下来几年的主流范式,大量后续工作都是在这个框架基础上做改进。

2016 年,Feichtenhofer 等人发表的论文提出了更好的双流融合策略,不再是简单地在最后一层加权平均两条流的输出,而是让空间流和时间流在网络中间层就开始交换信息,这个改进进一步提升了识别准确率。

2017 年,Carreira 和 Zisserman(同样是这个团队里的 Zisserman)提出了 I3D 网络,把双流网络里的二维卷积全部替换成三维卷积,直接在时间和空间两个维度上同时做卷积运算,并且引入了更大规模的 Kinetics 数据集进行预训练,把动作识别的准确率又往上推了一大截。这篇论文里依然保留了双流的结构,只是把每条流内部的网络换成了更强的三维卷积版本,说明双流这个大框架的生命力延续了下去。

这两项后续工作都没有抛弃双流网络的核心思想,而是在这个骨架上不断替换和升级具体的零件,这恰恰说明了 2014 年这篇论文提出的框架有多扎实。

写在后面

读这篇论文最触动我的地方,是它解决问题的方式特别朴素。没有炫技式的复杂架构,就是老老实实承认一件事:网络自己学不好运动信息,那就别硬逼着它学,直接把光流算好了喂给它。这种"绕过网络的弱点,而不是硬撑"的思路,在后来很多深度学习工程实践里都能看到影子。

还有一点值得一提,时间流单独的表现比空间流还好,这个结果当年应该也让不少人意外。大家直觉上会觉得画面内容才是识别动作的主要依据,结果运动轨迹本身的信息量反而更大。这提醒我们,有时候人类的直觉判断和数据说的话不是一回事。

这篇论文没有解决的问题是,光流的计算本身依赖传统算法,不是端到端学习出来的,这个环节始终是一个额外的计算负担和潜在的误差来源。后来的三维卷积网络某种程度上就是想绕开这个限制,让网络自己从原始像素里学到时间信息,不再依赖手工计算光流。这条路走通了没有,值得继续追问。

Q&A

Q1:双流卷积网络是什么?

A:双流卷积网络是 Simonyan 和 Zisserman 在 2014 年提出的视频动作识别方法,把动作识别拆成两条独立的卷积网络,一条处理普通图片捕捉画面内容,一条处理光流场捕捉运动信息,最后融合两者的预测结果。

Q2:双流卷积网络的准确率比传统手工特征方法好多少?

A:在 UCF-101 数据集上,双流融合后的准确率达到 88.0%,追平并略微超过了当时最强的手工特征方法密集轨迹的 85% 到 87%,这是深度学习第一次在视频动作识别上打赢手工特征。

Q3:为什么不用一个网络同时处理图片和运动信息?

A:因为空间信息和运动信息的统计特性差异太大,合在一起学效果反而不好。分成两条流分别专注学习"画面里有什么"和"东西怎么动",各自优化到位后再融合,效果明显更好,实验显示融合后比单用空间流提升了超过15个百分点。

分享至
0赞

好文章,需要你的鼓励

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