news 2026/9/1 2:13:35

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
双流卷积网络:当深度学习第一次学会“看懂“视频里的动作

2014年之前,如果你问一个计算机视觉研究者"深度学习能不能识别视频里的动作",大概率会得到一个尴尬的沉默。

不是因为没人试过。恰恰相反,大家试了很多次,结果都不太理想。当时最好的手工设计特征方法,叫做密集轨迹

**密集轨迹**:一种通过追踪视频中密集采样点的运动轨迹来描述动作的传统方法,不依赖神经网络,完全靠人工设计的规则提取特征。

在UCF-101这个动作识别数据集上能做到87.9%的准确率。而深度学习方法呢,最好的成绩只有65.4%,差了整整22.5个百分点。

这个差距说明什么?说明每5个动作里,深度学习就要比手工方法多认错1个还不止。这在当时的视觉领域是一件挺尴尬的事情,因为就在同一时期,深度学习在静态图片分类上已经把传统方法打得落花流水了。AlexNet横空出世之后,图像识别这个领域几乎被卷积神经网络统治,可视频动作识别这块阵地,深度学习就是攻不下来。

这篇论文要讲的,就是Karen Simonyan和Andrew Zisserman这两位牛津大学的研究者,在2014年怎么把这块硬骨头啃下来的。顺便说一句,这两人几个月后还发表了VGGNet,现在深度学习教材里几乎人人都学过的经典网络结构。这两篇论文是同一时期的工作,出自同一个实验室,这个背景本身就很有意思:一群人同时在攻克静态图像和动态视频两条战线。

问题出在哪:视频比图片难在哪里

要理解这篇论文的贡献,得先搞清楚视频识别到底难在哪。

图片分类,神经网络要处理的就是一张静态画面里的空间信息,颜色、形状、纹理、物体之间的相对位置。这套逻辑,卷积神经网络已经玩得很熟了。

但视频不一样。视频除了空间信息,还多了一个维度:时间。一个动作能不能被识别,往往不取决于某一帧画面长什么样,而取决于画面是怎么随时间变化的。

举个例子,一张"手臂抬起"的静态照片,你很难判断这是在打招呼、扔东西,还是准备打人。但如果你能看到手臂运动的轨迹和速度,答案就一目了然了。

早期直接把卷积神经网络套用到视频上的做法,基本上是把视频当成一堆连续的图片,让网络自己去学习帧与帧之间的时间关系。这个想法听起来合理,但实际效果并不好。网络很难自己从原始像素里悟出"运动"这个概念,就像让一个只会看照片的人去猜一段哑剧在表演什么,单张截图给的信息实在太有限。

核心思路:把运动信息直接喂给网络,而不是让它自己猜

Simonyan和Zisserman的洞察其实挺朴素:如果网络自己学不好运动信息,那就别让它自己学了,直接把运动信息计算好,喂给它。

这就是双流网络的核心设计。整个网络分成两条独立的通路。

第一条叫空间流

**空间流**:处理单帧静止画面的卷积网络分支,负责识别画面里有什么物体、什么场景,相当于回答"这是什么"的问题。

空间流的输入就是视频里挑出来的一帧图像,和普通的图片分类网络没什么区别。它负责捕捉场景和物体信息,比如识别出画面里有一个游泳池,那这个动作很可能和游泳有关。

第二条叫时间流

**时间流**:专门处理光流场的卷积网络分支,负责捕捉画面中物体的运动方向和速度,相当于回答"发生了什么运动"的问题。

时间流的输入不是原始图像,而是光流

**光流**:描述图像中每个像素点在连续两帧之间移动方向和速度的向量场,通常用一张彩色图或者两张灰度图来表示水平和垂直方向的位移。

光流图本质上是一种预先计算好的运动地图。你可以把它理解成,把"这个像素点往右移动了3个单位,往上移动了1个单位"这种信息,画成一张图,颜色和亮度代表运动的方向和幅度。

这里就得说说那个必须出现的类比了。

想象你要向一个从没看过足球比赛的人解释什么叫"传球"。你有两种办法。第一种,给他看一张球场的静态照片,让他自己去猜球是怎么飞过去的。第二种,直接给他一张标注了球的运动轨迹和速度的示意图,箭头清清楚楚画着球从哪飞到哪,速度多快。第二种方法显然更直接,也更容易让人一眼看懂发生了什么。如果不这样做,只靠静态照片,他可能得看上几十张连续照片,自己在脑子里拼凑运动轨迹,而且很可能拼错,这正是早期把视频直接扔给卷积网络训练时遇到的困境,网络花了大量的参数和训练时间,试图从像素变化中自己领悟运动模式,效果却不理想。而双流网络的做法,相当于直接把那张运动示意图递给了网络,省去了它自己摸索的过程。

这两条流各自训练自己的卷积神经网络,最后再把两边的预测结果融合起来,得出最终的动作判断。

为什么要分成两条流,而不是一条流搞定所有事

这里有个自然会冒出来的疑问:为什么非要分成两条独立的网络?直接把图像和光流一起塞进一个网络里,让它自己去学着综合这两种信息,不行吗?

论文的答案是,行不通,或者说效果会打折扣。原因和视频数据本身的特性有关。

空间信息和时间信息其实是两种性质完全不同的数据。静态图像的统计规律,比如物体的轮廓、颜色分布,和光流场的统计规律,比如运动的连续性、方向的聚集性,是两套截然不同的模式。让同一个网络同时学习两种性质迥异的信号,往往会造成互相干扰,顾此失彼。

而分成两条独立的流,让每条流专注学习自己那一类信号的规律,反而能学得更精更透。这就好比让一个人同时精通两门完全不相关的手艺,比如又要做顶级的木匠又要做顶级的裁缝,通常不如让两个专业人士分别把各自的手艺做到极致,最后再合作完成一件作品。如果强行让一个人同时兼顾两门手艺,大概率两门手艺都做不到顶尖水准。

实验结果也验证了这个设计的价值。论文做了对照实验,如果只用空间流,不管时间流,准确率是72.6%。如果只用时间流,不看图像内容,准确率反而更高,达到81.0%。这个结果本身就很有意思,说明运动信息对识别动作的重要性,甚至超过了单纯看画面内容。而当把两条流结合起来,准确率一下跳到88.0%。

这组数字说明了两件事。第一,时间信息对动作识别极其关键,甚至比空间信息更关键,这点或许有点反直觉,毕竟直觉上我们会觉得"看清楚画面里是什么"应该是识别的基础,但数据告诉我们,"看清楚东西怎么动"反而更重要。第二,两条流结合之后的效果,远超单独任何一条流,说明这两种信息确实是互补的,不是重复的。

光流该怎么算:一个容易被忽略但很关键的细节

这里还有个技术细节值得展开讲讲,那就是光流具体怎么计算和输入到网络里。

论文里用的是密集光流

**密集光流**:为图像中的每一个像素点都计算出运动向量,而不是只计算稀疏的关键点,能够提供更细致完整的运动描述。

具体做法是,取相邻的两帧图像,用传统的光流算法计算出每个像素在水平方向和垂直方向上的位移,分别得到两张位移图。然后把连续多帧的位移图堆叠在一起,作为时间流网络的输入。

这里有个设计选择很值得说,那就是到底堆叠多少帧。论文测试了不同的帧数,发现堆叠10帧左右的光流效果最好。堆叠的帧数太少,网络看到的运动信息片段太短,判断不准;堆叠太多,又会引入冗余甚至噪声,反而拖累效果。

这就像看一段监控录像判断一个人是在走路还是在跑步。只给你看两帧,信息太少,很难判断;但如果给你看几百帧,又显得啰嗦,而且中间可能夹杂了一些无关的晃动干扰你的判断。取一个恰到好处的时间窗口,比如两三秒钟的动作片段,往往是判断动作最有效率的方式。10帧左右的光流堆叠,本质上就是找到了这样一个恰到好处的时间窗口。

论文还测试了另一种方案,叫做轨迹光流

**轨迹光流**:不是简单堆叠固定位置的光流,而是沿着运动轨迹去采样光流信息,试图更精确地跟踪同一个点在不同时刻的位移。

结果发现,轨迹光流并没有比普通的堆叠光流带来明显提升,这个结果对研究者来说估计有点出乎意料,毕竟轨迹光流听起来是更精细、更"聪明"的方案,理论上应该更准。但深度学习这个领域,经常会出现"听起来更精巧的设计,实际效果未必更好"的情况,这也是为什么实验验证永远比直觉推理更重要。

训练技巧:数据不够怎么办

深度学习一个绕不开的问题是,它非常吃数据。视频数据集当年的规模比图片数据集小得多,像UCF-101只有约1.3万段视频,这个规模对训练一个深层卷积网络来说,是远远不够的,很容易出现过拟合

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

为了解决这个问题,论文用了两个办法。

第一个办法是多任务学习

**多任务学习**:让同一个网络同时在多个相关但不完全相同的数据集上训练,共享网络的大部分参数,只是在最后输出层区分不同任务,以此扩充有效的训练数据量。

具体来说,论文把UCF-101和另一个动作识别数据集HMDB-51放在一起训练,共享网络主干,只在最后加两个不同的分类输出层,分别对应两个数据集的类别。这样相当于用两份数据共同训练同一套特征提取能力,缓解了单一数据集数据量不足的问题。

第二个办法是用ImageNet预训练

**ImageNet预训练**:先在包含上百万张图片的ImageNet数据集上训练网络的空间流部分,让它先学会识别物体和场景等通用视觉特征,再把这些学到的参数迁移到动作识别任务上继续微调。

这个思路现在已经是深度学习的标准操作了,但在当时,把图片识别学到的知识迁移到视频识别任务上,还是个挺巧妙的做法。毕竟空间流本质上就是在看单帧画面,这和普通的图片分类任务是相通的,没理由不利用现成的、已经在海量图片上训练好的知识。

这就好比一个人要去学做中餐,如果他之前已经在西餐厨房里练过多年刀功、掌握了火候的基本感觉,那这些底层技能是完全可以带过去用的,不需要从零开始学怎么拿刀怎么开火。如果非要从零练起,不去借用已有的基础技能,那学习效率会低很多,而且在数据量不够的情况下,很可能练不出扎实的功底。

最终成绩单:数字说话

说了这么多设计细节,最后来看实际效果。

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

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

| 密集轨迹(手工特征,此前最优) | 87.9% | 57.2% |

| 之前最好的深度学习方法 | 65.4% | 约23% |

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

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

| **双流网络(融合)** | **88.0%** | **59.4%** |

这张表格里最重要的信息是最后一行。双流网络在UCF-101上的88.0%,首次超过了此前统治了这个领域多年的手工特征方法密集轨迹的87.9%。在HMDB-51上更是从57.2%提升到59.4%。

这个数字差距看起来不算夸张,只有零点几到两个百分点,但它的历史意义完全不在于差距有多大,而在于这是第一次,深度学习方法在视频动作识别这个任务上,真正打赢了手工设计特征方法。这个时刻对视频理解领域的意义,不亚于AlexNet在图片分类上打赢传统方法的那一刻。

这篇论文之后发生了什么

双流网络提出之后,后续的研究基本上都是在这个框架上做加法和优化。

2015年,Feichtenhofer等人在论文里探索了如何更好地融合空间流和时间流,提出了更精细的融合策略,让两条流在网络的中间层就开始交换信息,而不是等到最后才简单相加,进一步提升了识别准确率。

2016年,Wang等人提出了时间片段网络

**时间片段网络(TSN)**:把一段长视频切成若干片段,分别抽取每个片段的特征再汇总,解决了双流网络原本只能处理短时间窗口、难以捕捉长视频里完整动作节奏的问题。

这个改进直接针对双流网络的一个局限,那就是原始双流网络每次只看一个很短的时间窗口,比如10帧光流,对于时间跨度较长、节奏变化复杂的动作,信息覆盖不够。时间片段网络把整段视频拆成几个片段分别处理再综合,大大提升了长视频动作识别的效果,在当年的多个数据集上都刷新了纪录。

再往后,2017年出现的I3D网络,把双流的思路和三维卷积结合起来,直接用三维卷积核同时处理空间和时间维度,某种程度上是对双流网络"分离处理"这个基本假设的一次挑战和演进,证明了三维卷积也能捕捉到与光流类似的运动信息,而且效果更好。这也说明双流网络提出的"运动信息需要显式处理"这个核心洞察是对的,只是后来的研究找到了更高效的实现方式。

写在后面

读这篇论文最有意思的一点,是它解决问题的方式特别"笨拙"又特别管用。研究者没有指望神经网络凭空学会理解运动,而是先用传统算法算好光流,再喂给网络。这种"不追求端到端优雅,先用已知有效的工具垒好地基"的思路,在今天很多追求端到端训练的氛围里显得有点不合时宜,但恰恰是这种务实态度,让深度学习第一次在视频识别上站稳了脚。

还有一点值得琢磨,实验里单独用时间流的效果比单独用空间流还好,这说明我们平时理解"看懂一个动作"的方式,可能过于依赖画面内容,而低估了运动本身携带的信息量。这多少提醒我们,理解一件正在发生的事,有时候关注"它怎么变化"比关注"它现在是什么样子"更重要。

三维卷积后来证明能不依赖显式光流也学到类似效果,这个事实留下一个问题:网络到底是不是真正"理解"了运动,还是只是找到了另一种统计捷径去逼近光流能提供的信息?这个问题现在依然没有特别确定的答案。

Q&A

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

A:双流卷积网络是Simonyan和Zisserman在2014年提出的视频动作识别模型,把网络拆成空间流和时间流两条独立通路,分别处理静态画面和光流运动信息,最后融合两边结果做出判断,是深度学习第一次在视频动作识别上超越传统手工特征方法。

Q2:为什么双流网络要分成两条通路,合并成一条不行吗?

A:因为空间信息和运动信息是两种统计规律完全不同的数据,混在一条网络里训练容易互相干扰。实验显示分开训练再融合,准确率能达到88.0%,远高于只用一条流的72.6%或81.0%。

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

A:2015年Feichtenhofer等人改进了两条流之间的融合方式;2016年Wang等人提出时间片段网络,解决了长视频动作识别的问题;2017年出现的I3D网络用三维卷积替代了显式光流计算,进一步提升了效果。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 2:13:27

贝壳找房春招测试开发笔试卷解析:从考点到能力模型

拿到贝壳找房春招测试开发笔试卷后,我重新梳理了一遍测试开发的知识体系每年三到五月是春招高峰期,贝壳找房作为房产交易赛道的头部玩家,技术面试的含金量一直不低。最近我翻到了一份2023年贝壳找房春招测试开发工程师笔试卷,整套…

作者头像 李华
网站建设 2026/9/1 2:08:50

做了四年手工测试,是继续内卷还是转行网络安全?

​ 前言 测试四年,没有积累编程脚本能力和自动化经验,找工作时都要求语言能力,自动化框架。下一步,想办法转岗还是继续测试??? 正常情况下,有了四年的测试工程师经历,应该…

作者头像 李华
网站建设 2026/9/1 2:07:24

网约车低价内卷治理:从抽成透明到司机收入重构的行业变局

网约车低价内卷的问题,确实已经到了需要认真整理的时候。作为一个长期关注出行行业、也经常打车和跟司机聊天的写作者,我的判断是:这轮从监管到平台再到司机端的调整,不会简单喊一句口号就结束,它会逐步改变定价逻辑、…

作者头像 李华
网站建设 2026/9/1 2:02:52

Python图像识别自动化:用OpenCV和pywin32替代固定坐标点击

简介:本资源是一套面向Python初学者与游戏自动化爱好者的技术实践项目,聚焦于利用计算机视觉技术优化《梦幻西游》中重复性定点点击操作的低效问题。方案融合PIL图像识别、pywin32窗口控制与Windows底层交互能力,实现目标元素动态定位与精准模…

作者头像 李华
网站建设 2026/9/1 2:02:07

AI Agent工具调用优化:三层策略解决误调用难题

上周面试一个候选人,聊到他们团队在落地 AI Agent 时遇到的一个典型问题:工具调用准确率上不去,经常“答非所问”或者“乱用工具”。候选人说,他们试过调 prompt、加示例、换模型,但效果时好时坏,最后只能靠…

作者头像 李华
网站建设 2026/9/1 2:01:53

高校科研团队如何实现科技成果的有效识别与精准匹配?

观点作者:科易网-国家科技成果转化(厦门)示范基地 在新一轮科技革命和产业变革的大背景下,科技创新已成为驱动经济社会高质量发展的核心动力。高校科研团队作为科技创新的重要源头,承担着基础研究、前沿探索和技术突破…

作者头像 李华