微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

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

首页 双流卷积网络:当深度学习第一次在视频动作识别上打败了手工特征

双流卷积网络:当深度学习第一次在视频动作识别上打败了手工特征

2026-08-20 17:39
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-08-20 17:39 科技行者

2014 年之前,如果你是一个研究视频动作识别的学者,你手里最好用的工具其实不是神经网络。

是一个叫做密集轨迹的方法。

它靠的是精心设计的手工特征:追踪视频里成千上万个点的运动轨迹,再统计这些轨迹周围的方向直方图。这套东西在几个标准数据集上跑出了 85% 以上的准确率,而当时所有试图用深度学习硬刚的方法,都被它甩在后面十几个百分点。

这事说出来有点反直觉。因为就在同一年,深度学习已经在图像识别上把传统方法打得溃不成军了。AlexNet 在 2012 年横扫 ImageNet 之后,图像领域的手工特征基本宣告退场。可是视频领域偏偏卡住了,深度学习模型死活学不过一套几年前设计出来的手工轨迹算法。

这就是 Karen Simonyan 和 Andrew Zisserman 在 2014 年发表《Two-Stream Convolutional Networks for Action Recognition in Videos》这篇论文时面对的局面。他们两个人都来自牛津大学同一个视觉几何组,几个月后这个组还发表了另一篇更加有名的论文,VGGNet。这两篇论文几乎是同期做出来的,背后是同一批人对卷积网络这套工具的深入理解。

视频比图片难在哪

先说清楚一件事:视频识别为什么这么难啃。

图片识别本质上是个静态问题,一张猫的照片,不管猫在跑还是在坐,长得都是猫的样子。卷积网络学的是空间上的纹理、边缘、轮廓这些东西,识别效果好是因为这些视觉特征天然适合被卷积层捕捉。

视频不一样。视频里的关键信息往往不在“这一帧长什么样”,而在“这一帧和下一帧之间发生了什么变化”。同样一个人站在那,可能是在准备跳远,也可能是在系鞋带,单看一张静止画面根本分不清,你必须看动作,看运动的轨迹。

这就是问题的核心矛盾:卷积网络天生擅长学空间纹理,但动作识别真正需要的是时间维度上的运动信息,而这恰恰是卷积网络最不擅长处理的东西。

早期研究者试过很多办法硬把时间信息塞进卷积网络,比如把多帧图像叠在一起当作一个多通道输入丢进网络,让网络自己去学怎么从这堆帧里提取运动信息。听起来合理,但实际效果很差,网络学不出稳定有用的运动模式,因为原始像素的变化里混杂了太多?光照、背景、摄像机抖动之类的干扰,运动信息被淹没了。

> 卷积网络*:一种专门处理图像和空间数据的神经网络,通过卷积核在图像上滑动提取局部特征,比如边缘、纹理,层层叠加后能识别更复杂的图案。

这时候 Simonyan 和 Zisserman 想到了一个关键的转折点。他们意识到,或许不该指望网络自己从原始像素堆里学出运动信息,而是应该先用一种成熟的技术把运动信息显式地计算出来,再交给网络去学习分类。

这个成熟技术叫光流。

光流:把运动这件事先算出来再交给网络

光流是计算机视觉里一个很老的概念,它描述的是视频里每一个像素点从一帧到下一帧移动的方向和速度。你可以把它想象成给画面里的每一个点都画一根箭头,箭头指向它接下来要往哪儿动、动多快。整张图所有箭头拼起来,就是一张光流场。

> 光流*:描述视频连续两帧之间像素运动方向和速度的一种表示方法,通常用一张“运动方向图”来呈现,横向和纵向的运动分别用两张图表示。

光流这个技术在 2014 年之前就已经很成熟了,前面提到的密集轨迹方法本质上也是在光流的基础上做进一步统计。Simonyan 和 Zisserman 的思路是,既然光流已经把运动信息干净地提取出来了,那为什么不直接把光流图喂给一个卷积网络,让网络专门学习“这种运动模式对应哪个动作”,而不是让网络同时操心画面长什么样和画面怎么动这两件事。

这就引出了这篇论文最核心的设计,双流架构。

双流架构:让两个网络各管一件事

具体来说,这篇论文搭了两个完全独立的卷积网络。

一个叫空间流,输入是普通的视频单帧图像,负责学习画面里的静态信息,比如场景是在游泳池还是篮球场,画面里有没有球拍这类物体线索。这一路网络结构和当时做图像分类的网络差不多,可以直接借用在 ImageNet 上预训练好的权重,省了很多训练成本。

另一个叫时间流,输入不是原始图像,而是连续多帧计算出来的光流图,通常是取相邻 10 帧算出的光流叠在一起当作输入。这一路网络专门学习运动模式,比如挥手的轨迹和挥拳的轨迹在光流场里长什么样。

两路网络各自独立跑完之后,再把两边输出的分类分数做一个加权融合,得到最终的预测结果。

> 双流网络*:由空间流和时间流两个独立卷积网络组成的架构,分别处理静态画面信息和运动信息,最后融合两边的预测结果。

这个设计乍一看简单粗暴,两个网络各干各的活,最后加个权重拼一下。但它背后的逻辑其实很讲究:研究者没有强迫一个网络同时学两种性质完全不同的信息,而是先把问题拆解开,再各自用最合适的工具去解决。

这就好比让一个人同时练钢琴和练拳击,如果你要求他每天在同一个时间段里,一边弹琴一边打拳,他大概什么都学不精。但如果你让他上午专心练拳击,下午专心练钢琴,两边都练到位之后,再看某个场合到底该用哪种技能,效果会好得多。如果不这样拆分,而是一股脑把原始视频帧堆起来扔给一个网络,会发生什么?论文里做过对比实验,效果明显更差,因为网络在原始像素的噪声里根本分不清哪些变化是真正的运动信息,哪些只是光照和背景抖动带来的干扰。

光流这一路网络单独拿出来测试,在标准数据集 UCF-101 上能跑到 83.7% 的准确率。这个数字放在当时已经相当惊人,因为它已经超过了很多同期的深度学习方法,证明了“先计算光流再喂给网络”这条路是走得通的。

两条流融合之后,分数才真正冲了上去

单靠时间流的 83.7% 已经不差,但真正让这篇论文成为里程碑的,是两条流融合之后的结果。

空间流单独跑,在 UCF-101 上的准确率大概是 72.6% 上下浮动,具体数字取决于用什么方式做多帧融合。这个数字其实不算高,因为很多动作光看画面长什么样根本判断不出来,比如“拉伸”和“弯曲”这两个动作画面构图可能很接近,区别全在动作的过程里。

如果只用空间流会怎样?答案已经摆在这里,72.6%,比最好的手工特征方法低了十几个百分点。这也说明了,单靠画面信息去做动作识别,天花板很低。

但当空间流和时间流融合起来,用加权平均的方式合并两边的分类分数,整体准确率一下子冲到了 88% 左右,在 UCF-101 上,而在另一个数据集 HMDB-51 上达到了 59.4%。

这两个数字第一次让深度学习方法在动作识别这个任务上超过了手工设计的密集轨迹特征。要知道,密集轨迹当时的准确率大概在 84% 到 87% 之间浮动,双流网络融合后的结果不仅追上了,还实实在在地超过了一截。

这是深度学习在视频动作识别上第一次赢过手工特征。这句话放在 2014 年的分量,不亚于两年前 AlexNet 在图像识别上掀起的那场革命,只是视频领域的这场翻身仗晚打了两年。

20 个百分点左右的提升是什么概念?意味着如果你让这两个系统各识别 100 段视频,原来只用空间流的系统会认错将近 30 段,而融合之后的双流系统只会认错大约 12 段,少犯了将近一半的错误。

> UCF-101 / HMDB-51*:两个视频动作识别领域常用的标准评测数据集,分别包含 101 类和 51 类人体动作视频,是当时衡量方法好坏的通用标尺。

为什么融合这么关键,而不是单靠一条流走到底

这里有个值得琢磨的地方。既然时间流单独已经能跑到 83.7%,比空间流的 72.6% 高出这么多,那是不是可以干脆放弃空间流,把所有资源都砸在时间流上?

论文的实验结果给出了否定的答案。两条流融合之后的效果明显好于单独任何一条流,这说明空间信息和时间信息不是互相替代的关系,而是互补的关系。有些动作靠画面内容就能分辨,比如“弹吉他”这个动作,只要看到画面里有吉他,基本就能猜对,不需要看运动轨迹。而有些动作画面内容完全一样,区别全在动作过程,比如各种不同的挥手动作。

这就像医生看病,有的病靠看片子就能确诊,有的病必须结合病人的症状描述和体检数据才能判断。如果只看片子不问症状,或者只问症状不看片子,漏诊率都会明显升高。两种信息来源各自覆盖了对方覆盖不到的盲区,只有结合起来才能把整体误判率压下去。

网络学到了什么:第一层卷积核的秘密

论文里还有一个挺有意思的细节,研究者把时间流网络第一层卷积核的参数拿出来可视化了一下。

结果发现,这些卷积核大多呈现出明显的方向性模式,就像一组方向不同的条纹滤波器。这不是人为设计进去的,是网络在训练过程中自己学出来的。

这说明网络确实抓住了光流场里最关键的信息:方向。因为光流本身描述的就是像素运动的方向和速度,网络学会用方向性滤波器去捕捉这些方向变化,恰好印证了这套“先计算光流再喂网络”的思路是对的。如果网络学出来的第一层滤波器完全是杂乱无规律的纹理,那反而说明这套输入设计有问题,网络没有抓住重点。

这篇论文之后发生了什么

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

3 年后,Feichtenhofer 等人在 2017 年提出了一种时空残差网络的改进方案,把双流之间原本只在最后阶段做简单加权融合的方式,改成了让空间流和时间流在网络中间层就开始互相传递信息,通过残差连接的方式让两条流提前“商量”,而不是等到最后一步才拼分数。这个改动进一步提升了融合效果,因为让两条流更早地互相校正,减少了各自单独判断时的误差积累。

还有一条更硬核的后续路线,是 Carreira 和 Zisserman(没错,还是同一位 Zisserman)在 2017 年提出的 I3D 网络,把双流架构里的 2D 卷积网络整体换成了 3D 卷积网络,直接在网络结构层面加入时间维度的卷积操作,而不再依赖单独计算光流这一步。这个方案在更大规模的视频数据集 Kinetics 上做了预训练,把动作识别的准确率又往上推了一大截,后来成为这个领域很长一段时间里的标准基准模型。

从双流网络到时空残差网络,再到 I3D,这条技术脉络清晰地展示了一个领域是怎么一步步从“借用图像识别的老工具硬凑”走到“为视频这个特殊问题量身定制新架构”的过程。而这一切的起点,正是 2014 年这篇论文第一次证明了深度学习在动作识别上是可以打过手工特征的,哪怕当时还需要靠光流这根“拐棍”才能走稳。

写在后面

这篇论文最打动我的地方,不是它的准确率数字,而是它体现出的一种工程智慧:承认工具的局限,而不是硬逼着工具去做它不擅长的事。

Simonyan 和 Zisserman 完全可以继续在“端到端从原始像素学习一切”这条路上死磕,毕竟这才是深度学习最诱人的承诺,不需要人工设计特征,一切交给网络自己学。但他们没有,他们选择先用光流这个成熟的传统技术把运动信息干净地抽取出来,再让卷积网络去做它真正擅长的事,分类。这是一种妥协,也是一种清醒。

这让我想到,很多领域的突破未必来自于把一个工具做得更强,而是来自于承认这个工具目前还不够强,然后找一个搭档暂时补上短板。光流在这里就是那个搭档,它撑到了 I3D 出现,3D 卷积网络才真正有能力自己把运动信息学出来,不再需要外部拐棍。

那个第一层卷积核学出方向性滤波器的细节,如果你去看那张可视化图,会觉得网络好像“自己发现”了光流的本质规律。这种网络在没人明确告诉它答案的情况下,自己摸索出符合物理直觉的模式,每次看到都觉得挺有意思。

Q&A

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

A:双流卷积网络是 Simonyan 和 Zisserman 在 2014 年提出的视频动作识别模型,由空间流和时间流两个独立的卷积网络组成,分别处理画面静态信息和运动光流信息,最后融合两边结果做出动作分类判断。

Q2:双流网络为什么要分成两条流,而不用一个网络搞定?

A:因为静态画面信息和运动信息性质完全不同,一个网络同时学两种信息效果很差。实验显示单用空间流只有 72.6% 准确率,单用时间流能到 83.7%,而两条流融合后能冲到 88% 左右,证明分开处理再融合明显优于混在一起学。

Q3:双流网络之后有哪些重要的改进工作?

A:2017 年 Feichtenhofer 等人提出时空残差网络,让两条流在中间层就开始互相传递信息;同年 Carreira 和 Zisserman 提出 I3D 网络,直接用 3D 卷积代替光流计算,在 Kinetics 数据集上进一步刷新了准确率,成为后续很长时间的标准基准模型。

分享至
0赞

好文章,需要你的鼓励

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