尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

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

发布时间:2026/9/1 2:13:41

资讯中心
01
ARTICLE

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

双流卷积网络:当深度学习第一次学会“看懂“视频里的动作
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网络,把双流的思路和三维卷积结合起来,直接用三维卷积核同时处理空间和时间维度,某种程度上是对双流网络分离处理这个基本假设的一次挑战和演进,证明了三维卷积也能捕捉到与光流类似的运动信息,而且效果更好。这也说明双流网络提出的运动信息需要显式处理这个核心洞察是对的,只是后来的研究找到了更高效的实现方式。写在后面读这篇论文最有意思的一点,是它解决问题的方式特别笨拙又特别管用。研究者没有指望神经网络凭空学会理解运动,而是先用传统算法算好光流,再喂给网络。这种不追求端到端优雅,先用已知有效的工具垒好地基的思路,在今天很多追求端到端训练的氛围里显得有点不合时宜,但恰恰是这种务实态度,让深度学习第一次在视频识别上站稳了脚。还有一点值得琢磨,实验里单独用时间流的效果比单独用空间流还好这说明我们平时理解看懂一个动作的方式,可能过于依赖画面内容,而低估了运动本身携带的信息量。这多少提醒我们,理解一件正在发生的事,有时候关注它怎么变化比关注它现在是什么样子更重要。三维卷积后来证明能不依赖显式光流也学到类似效果,这个事实留下一个问题网络到底是不是真正理解了运动,还是只是找到了另一种统计捷径去逼近光流能提供的信息这个问题现在依然没有特别确定的答案。QAQ1双流卷积网络是什么A双流卷积网络是Simonyan和Zisserman在2014年提出的视频动作识别模型,把网络拆成空间流和时间流两条独立通路,分别处理静态画面和光流运动信息,最后融合两边结果做出判断,是深度学习第一次在视频动作识别上超越传统手工特征方法。Q2为什么双流网络要分成两条通路,合并成一条不行吗A因为空间信息和运动信息是两种统计规律完全不同的数据,混在一条网络里训练容易互相干扰。实验显示分开训练再融合,准确率能达到88.0%,远高于只用一条流的72.6%或81.0%。Q3双流网络之后有哪些改进工作A2015年Feichtenhofer等人改进了两条流之间的融合方式2016年Wang等人提出时间片段网络,解决了长视频动作识别的问题2017年出现的I3D网络用三维卷积替代了显式光流计算,进一步提升了效果。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。