
你可能不知道,在2014年之前,深度学习在视频动作识别这个领域几乎是抬不起头的。
那时候如果你去看学术会议上的动作识别排行榜,占据榜首的不是神经网络,而是一种叫做"密集轨迹"的手工特征方法。
> 密集轨迹:一种传统计算机视觉方法,通过跟踪视频画面中密集分布的点随时间的运动轨迹,手工设计特征来描述动作。
这事儿放在今天听起来有点不可思议。毕竟同一年,AlexNet已经在图像识别上把传统方法打得溃不成军。可是一旦把静止的图片换成动起来的视频,卷积神经网络就突然变得笨手笨脚,怎么调都追不上那些老老实实统计像素轨迹的手工方法。
问题出在哪儿?这就是本文要讲的这篇论文真正要解决的事。它是由Karen Simonyan和Andrew Zisserman在2014年发表的《Two-Stream Convolutional Networks for Action Recognition in Videos》,翻译过来就是"用于视频动作识别的双流卷积网络"。这两位作者你可能没听过名字,但他们几个月后又发了另一篇论文,叫VGGNet,后来成了图像识别领域的经典架构之一。也就是说,这篇论文和VGGNet几乎是同一批人、同一个时间段搞出来的姊妹作。
核心问题:视频比图片难在哪
先说说当时的成绩单。
在UCF-101这个当时主流的动作识别数据集上,手工特征方法比如改进型密集轨迹能做到87%左右的准确率。而单纯把卷积神经网络套到视频帧上,效果差得离谱,准确率只能到70%出头,有的甚至更低。
**差了将近20个百分点,这在当时被很多人认为是深度学习在视频领域的天花板。**
20个百分点意味着什么?意味着每5段视频里,神经网络就要比手工方法多认错1个。这不是"差一点",这是"差一大截"。
问题的根源在于,图片识别和视频识别本质上不是一回事。一张静态图片,信息全都摆在那儿,猫就是猫,狗就是狗,靠形状、颜色、纹理就能判断。可动作是什么?动作是"跑"和"走"之间的区别,是"挥手告别"和"挥手打招呼"之间的区别。这种区别很多时候根本不在单帧画面里,而在画面随时间怎么变化。
早期研究者的思路很直接:把视频切成一帧一帧的图片,用卷积网络分别处理每一帧,再把结果汇总。这个思路听起来合理,但效果很差。为什么?
因为这么做等于把"动作"这个概念硬生生拆解成了一堆静止的画面快照,丢掉了最关键的时间信息。这就好比你想判断一个人是在挥手打招呼还是在挥手告别,如果只给你看其中一张静止的照片,你根本分不清,因为两者在单张画面上可能长得一模一样。区分它们的唯一线索,是手部运动的方向和轨迹,而这恰恰是单帧图片里没有的东西。
如果不引入时间维度的信息,神经网络就永远只是在做"图片分类的简单叠加",而不是真正的"动作识别"。这也解释了为什么早期深度学习方法一直卡在70%多,怎么加深网络、怎么调参数都没用,因为问题不在网络深度,而在于喂给网络的数据本身就缺了一大块信息。
双流架构:一条看画面,一条看运动
Simonyan和Zisserman的解法,说出来其实挺朴素的。
**他们把一个网络拆成了两个,一个专门看静止画面,一个专门看运动信息,最后把两条网络的判断结果融合起来。**
第一条叫空间流。
> 空间流:一个标准的卷积神经网络,输入是视频里的单帧RGB图像,负责识别画面里的物体、场景、人物姿态等静态视觉信息。
这条流干的事情跟普通图片分类没什么区别,输入一张视频截图,输出这张图里可能包含什么物体和场景。比如画面里有游泳池,那这个动作很可能和"游泳"有关。
第二条叫时间流,这才是这篇论文真正的巧思所在。
> 时间流:另一个卷积神经网络,输入不是原始图像,而是光流场,专门捕捉画面中物体的运动方向和速度信息。
那什么是光流?
> 光流:描述视频连续两帧之间,画面中每个像素点是往哪个方向、以多快速度移动的一种表示方法,本质上是一张记录了运动矢量的图。
光流场看起来不像正常的照片,它更像是一张用颜色或箭头标注了"这里往左动、那里往右动"的运动地图。把光流场喂给一个卷积网络,网络就能专门学习运动模式,而不会被画面里的颜色、纹理这些和动作本身无关的信息干扰。
这两条网络各自训练,各自输出一个分类概率,最后简单地把两个概率做加权平均,得到最终判断。
这个设计为什么重要?因为它相当于把一个混合在一起、很难直接学习的复杂问题,拆解成了两个各自更简单的子问题。空间流只用操心"这是什么场景、有什么物体",时间流只用操心"这里在往哪个方向动"。两边互不干扰,各自把自己的活干好,最后再合并结果。
这就跟一个乐队里鼓手和贝斯手的分工有点像。如果让一个人同时兼顾节奏和低音旋律,顾此失彼是常态,弹好了贝斯可能就忘了跟上鼓点。但如果分成两个人,鼓手专心打节奏,贝斯手专心弹旋律,两人各自练熟了自己的部分,合奏出来的效果反而比一个人硬撑要好得多。如果不拆分,让一个网络同时学会识别场景和识别运动,网络就要在训练时同时兼顾两种截然不同的模式,学习难度陡增,这也正是早期单流方法效果差的关键原因之一。
论文里还有一个细节很有意思。作者们观察了时间流网络第一层卷积核学到的样子,发现这些卷积核大多呈现出明显的方向性,像是专门用来捕捉某个方向上的运动模式的滤波器。这不是人为设计出来的,是网络自己从光流数据里学出来的规律。这说明网络确实理解到了"方向"是运动信息里最核心的线索,这也从侧面证明了光流这个输入选择是对的路子。
为什么要用光流,而不是直接看连续帧
这里有个问题值得多想一层:为什么不能让时间流网络直接看几张连续的原始图像,自己去学习里面的运动信息,非要费劲先计算出光流场?
答案跟"信息提炼"有关。
原始的连续视频帧里,包含了大量和动作无关的信息,比如背景颜色、光照变化、无关物体的纹理。如果直接把好几帧原始图像堆在一起喂给网络,网络得自己从这堆像素里"提炼"出哪些变化是有意义的运动,哪些只是噪声,这个学习难度非常大,尤其是在当时训练数据量还不算特别充裕的情况下。
而光流场已经提前把"运动"这个信息单独抽取出来了,把颜色、纹理这些干扰项全部过滤掉,只留下"这里往哪个方向动、动得多快"这个纯粹的信号。相当于有人先帮网络做了一遍预处理,把最有用的那部分信息挑出来,网络只需要专注学习这部分就够了。
这就好比你想教一个人判断音乐节拍,如果直接给他一整首带人声、伴奏、混音效果的完整歌曲,他得先学会从一堆声音里分离出鼓点在哪儿,这很难。但如果你提前把鼓的音轨单独提取出来,只给他听纯鼓点,他学节拍就容易多了。光流场干的就是这个"提前分离"的工作。如果不做这一步分离,直接把原始帧堆叠起来训练,论文里对比实验显示效果确实会打折扣,证明这种提前处理是有实际收益的,不是画蛇添足。
融合两条流,效果如何
单独看空间流的表现,在UCF-101上大概能做到72.6%的准确率。这个数字和早期那些单纯堆叠视频帧的方法差不多,说明只看静态画面确实吃亏很多。
单独看时间流,效果要好不少,能达到83%以上。这说明运动信息本身就是判断动作类别的强力线索,甚至比静态画面更重要。
而把两条流的结果融合起来之后,准确率跳到了88%左右,直接超过了当时最好的手工特征方法。
下面这张表大致反映了论文里的核心对比数据。
| 方法 | UCF-101准确率 |
|---|---|
| 早期单流卷积网络 | 约70%-73% |
| 改进型密集轨迹(手工特征) | 约87% |
| 空间流单独 | 72.6% |
| 时间流单独 | 约83%-84% |
| **双流融合** | **约88%** |
这个结果的历史分量不小。这是深度学习方法第一次在视频动作识别这个具体任务上,正面超过了统治多年的手工特征方法。要知道AlexNet在2012年横空出世,靠的是在图像分类上碾压传统方法,而这篇论文相当于把同样的剧情在视频领域重演了一遍,只不过晚了两年,而且靠的不是简单加深网络,而是靠重新设计了整个信息输入的方式。
意义追问:这个设计到底解决了什么根本矛盾
如果只从表面看,双流架构好像就是"多加一个网络"这么简单的事。但往深了想,它真正解决的是一个更根本的矛盾:**卷积神经网络天生擅长处理空间结构的信息,却不擅长处理时间维度上的动态变化。**
图片分类之所以让卷积网络大放异彩,是因为图片本身就是纯空间信息,卷积操作的局部感知、平移不变性这些特性天生适配这类数据。可视频里的"动作"这个概念,核心恰恰是时间维度上的变化,是卷积网络原本的设计里没有直接照顾到的部分。
双流架构没有去改造卷积网络的内部结构来适应时间信息,而是换了一个更聪明的思路:既然网络不擅长直接从原始像素序列里挖掘运动信息,那就提前把运动信息用光流场的形式计算好,变成一张"看起来也像图片"的东西,再喂给网络。相当于把一个网络不擅长的问题,转化成了网络擅长的问题的形式。
这个思路后来影响深远。3年后,Feichtenhofer等人在2016年提出了一种时空融合的双流架构改进版,让空间流和时间流在网络内部更早地进行特征交互,而不是等到最后才简单加权平均,进一步提升了准确率。又过了一段时间,Carreira和Zisserman(同一个Zisserman)在2017年提出了I3D模型,把二维卷积核直接扩展成三维卷积核,让网络能够直接从连续视频帧里学习时空特征,某种程度上是想验证"能不能不依赖光流预处理,直接让网络自己学会捕捉运动信息"。这一系列后续工作,都是在双流架构打开的这条路上继续往前走。
回头看,双流网络的思路能不能再往前推一步,让网络自己学会计算类似光流的运动表示,而不依赖传统光流算法的预处理?这正是后续研究者们持续探索的方向,也从另一个角度说明了这篇论文提出的问题比它给出的答案更持久。
写在后面
读这篇论文时最触动我的一点是,双流网络的空间流单独跑出来的准确率是72.6%,和当时那些效果很差的早期视频深度学习方法几乎一样。这说明问题从来不在于"深度学习不适合视频",而在于"喂给深度学习的数据本身缺了关键信息"。这是个容易被忽略的教训,很多时候方法本身没问题,问题出在输入表示的设计上。
另一个值得琢磨的细节是,两条流最后只是简单加权平均,没有做什么复杂的融合设计,效果却已经能超过手工特征。这说明有时候把问题拆解对了,后续的整合反而可以很朴素。复杂的融合技巧是后来者的工作,而这篇论文最大的贡献恰恰是提出了"该往哪个方向拆"这个判断。
如果网络最终能自己学会从原始像素序列里提炼出等效于光流的运动信号,那光流这个中间步骤是不是终将被淘汰?这个问题现在有了部分答案,但完全的答案还没写完。
Q&A
Q1:双流卷积网络是什么?
A:双流卷积网络是Simonyan和Zisserman在2014年提出的视频动作识别模型,由两个独立的卷积神经网络组成,一条处理静态画面(空间流),一条处理运动信息(时间流),最后融合两者结果做出动作分类判断。
Q2:双流网络为什么要用光流而不是直接输入连续视频帧?
A:因为光流场提前把画面中的运动方向和速度信息单独提取出来,过滤掉了颜色纹理等无关干扰,让网络能专注学习运动模式,这比让网络直接从原始像素序列里自己挖掘运动信息要容易得多,效果也更好。
Q3:双流网络在当时的效果超过手工特征方法了吗?
A:超过了。双流网络融合后在UCF-101数据集上达到约88%的准确率,超过了当时最强的手工特征方法改进型密集轨迹的87%左右,这是深度学习首次在视频动作识别任务上正面胜过手工特征方法。
好文章,需要你的鼓励
ARCHead是一种专门压缩大语言模型输出层的方法,通过量化低秩核心与激活度量修正,将LM-head存储压缩至BF16的约25%,质量损失极小。
这项研究发现AI投票推理在多答案问题上会系统性失效,提出用因果数学规则直接验证候选答案的CALVER方法,准确率比投票提升约11至19个百分点,且差距随尝试次数持续扩大。
这项来自港科大与腾讯视频的研究提出WorldCycle框架,通过可逆动作循环构造无标注自验证奖励,将视频世界模型的长程漂移误差降低最高44%,复合动作准确率提升约四倍。
哥本哈根大学团队构建了首个同时覆盖三种引用粒度、屏蔽信息泄露、包含全量段落候选库的法律信息检索数据集LegalPincite,用于评估法律判决段落精确检索任务。