您的位置:财经 > 正文

2014年,两个学者用两张图片打败了整个视频识别领域-每日消息

来源:科技行者 时间:2026-08-17 17:31:09

2014年之前,如果你想让电脑看懂视频里的人在做什么,最好的办法不是深度学习。


(相关资料图)

这句话现在听起来有点奇怪。毕竟今天我们已经习惯了深度学习在图像识别、语音识别、机器翻译上全面碾压传统方法。但在2014年那个时间点上,情况完全不是这样。

当时视频动作识别领域最强的方法叫做密集轨迹

> 密集轨迹:一种手工设计的视频特征提取方法,通过跟踪视频中密集分布的像素点的运动轨迹,统计轨迹周围的图像和运动信息来判断动作类别。

这个方法在标准测试集上能达到88%左右的准确率,而当时所有尝试用深度学习做视频动作识别的论文,效果都不如它。深度学习在图片识别上已经靠AlexNet打出了名声,可是一到视频领域,就像是突然被打回了原形。

这事儿说起来挺讽刺的。图片是静止的,理解起来应该更难才对,视频多了时间维度的信息,理论上应该更容易判断动作。可现实恰恰相反,深度学习在图片上行,在视频上却不灵。问题出在哪儿?

问题出在“该怎么塞进时间信息”这件事上

图片分类的深度学习模型,说白了就是一个卷积神经网络

> 卷积神经网络:一种专门处理图像的神经网络结构,通过卷积核在图像上滑动来提取局部特征,逐层堆叠后能识别越来越复杂的图案。

吃进去一张图,吐出来一个类别标签。这个套路很成熟,AlexNet已经证明了它的威力。

但视频不是一张图,是一串图。你要怎么把时间维度塞进这个网络?直接把视频的每一帧都当成独立的图片来处理,识别每一帧里的物体,再把结果拼起来?这样做等于扔掉了动作里最重要的信息,动作是"变化"本身,不是某一帧的静止画面。一个人举手的照片和一个人放手的照片可能长得几乎一样,你得看这个动作是怎么"动"的,才知道到底是在举手还是放手。

之前的深度学习尝试大多是在这个环节栽了跟头。他们要么直接把多帧堆在一起卷积,要么用很粗糙的方式融合时间信息,效果始终打不过手工设计的轨迹特征。

这就是Karen Simonyan和Andrew Zisserman在2014年发表的这篇论文要解决的问题。他们两人来自牛津大学,同一个研究组,几个月后他们又发表了另一篇改变整个计算机视觉领域的论文,VGGNet。这两篇论文几乎是同期完成的工作,这个背景本身就很说明问题:这是一群对卷积网络结构设计极其敏感的研究者,他们既在琢磨怎么让网络更深更强,也在琢磨怎么让网络吃懂视频。

他们的答案不是设计一个更复杂的网络去啃原始视频帧,而是换一个思路:把视频拆成两条完全独立的信息流,一条专门看“这是什么”,一条专门看“它怎么动”。

两条流水线:空间流和光流

这篇论文的核心方法叫做双流卷积网络

> 双流卷积网络:由两个独立的卷积神经网络组成的架构,一个处理视频的静态画面(空间流),一个处理帧与帧之间的运动信息(时间流),最后把两者的预测结果融合起来。

具体来说,第一条流叫空间流,输入就是视频里挑出来的单张RGB图像,负责识别画面里有什么物体、什么场景,比如识别出这是一个游泳池,画面里有个人。

第二条流叫时间流,输入不是图像,是光流场。

> 光流场:描述视频中相邻两帧之间每个像素点运动方向和速度的场,可以理解为把“运动”这件事用一张图的形式表示出来。

光流场长什么样?想象你把两帧图像叠在一起,计算出画面里每一个点从上一帧移动到下一帧的方向和距离,然后把这些方向信息画成一张图,这就是光流场。它专门捕捉运动信息,几乎不含背景纹理、颜色这些跟“动作是什么”关系不大的干扰项。

这两条流各自训练一个卷积网络,各自给出一个动作类别的预测概率,最后把两个预测结果加权平均或者用另一个分类器融合起来,得出最终判断。

为什么要这么分开设计?这里藏着一个很朴素但很关键的判断:静态外观信息和动态运动信息,它们的统计规律完全不同,硬塞进同一个网络里学,网络很难同时学好两种东西。

这就好比让一个人同时干两件性质完全不同的活:一边要盯着一堆静态照片说出照片里有什么物品,一边要盯着一段快速闪烁的信号判断东西往哪个方向移动。如果你要求同一个人同时兼顾这两件事,还只给他一套注意力和一套判断标准,他大概率两头都做不好。但如果你把这两件事分给两个专门的人来做,一个只负责认物体,一个只负责看动向,最后再把两人的判断合起来参考,效果反而更好。如果不拆开做,会发生什么?论文里其实间接回答了这个问题:之前那些效果不好的深度学习尝试,很多就是想用一个网络硬啃所有信息,结果每一部分都学得不到位。

![双流架构图](placeholder)

论文里的架构图画得很直白,左边一条支路吃RGB图像,右边一条支路吃光流图像,两条线各自走完自己的卷积层和全连接层,最后在顶部汇合成一个融合的预测结果。这张图最重要的信息就是两条支路在中间完全没有交叉,一直到最后才合并,这种"晚融合"的设计意味着两个网络在特征提取阶段互不干扰,各自把自己的活干到极致。

时间流:怎么把“动作”变成一张能喂给CNN的图

单独说说时间流的设计,因为这是这篇论文最有创造力的地方。

卷积神经网络本来是给静态图像设计的,输入是一张有宽高和颜色通道的图。那怎么让它去处理“运动”这种本质上是时间序列的东西?

论文的做法是把光流场编码成一种类似图像的格式。对于一对相邻帧,计算出每个像素在水平方向和垂直方向的位移,这两个方向的位移分别构成一张图,就像图像的两个通道。作者进一步把这个思路扩展到多帧,堆叠若干帧连续的光流图,形成一个多通道的输入,让网络能看到一小段时间窗口内的运动轨迹,而不只是相邻两帧的瞬时运动。

这里还有个细节,作者尝试了两种光流的表示方式。一种是光流的绝对坐标形式,直接记录每个像素的位移向量。另一种是相对于轨迹的形式,作者称之为轨迹叠加,沿着一个点的运动轨迹把光流值累积起来。实验发现直接堆叠光流图的效果已经足够好,不需要更复杂的轨迹追踪。

这个设计透露出一个判断:运动信息本身其实可以被“图像化”处理,你不需要发明一套全新的网络结构去理解时间序列,只需要把时间信息巧妙地编码成卷积网络已经擅长处理的格式。这有点像你不需要为了运输液体专门造一种新的容器,只要把液体装进瓶子里,用现成的卡车就能运走。如果不做这层转换,直接把原始像素的时序变化丢给一个为静态图片设计的网络,网络很可能抓不住重点,毕竟原始像素里同时混杂着光照变化、背景纹理、物体形状等大量和运动本身无关的信息,光流场相当于先帮网络把这些无关信息过滤掉了。

数据不够怎么办:用图片数据集来救视频模型

深度学习出了名地吃数据,而在2014年,标准的视频动作识别数据集规模小得可怜,最常用的UCF-101数据集只有101个动作类别,一万多个视频片段。这个规模放在图片分类任务里都算小,何况视频数据本身信息量更大,理论上需要更多样本才能训练好。

数据不够,网络就容易过拟合

> 过拟合:模型在训练数据上表现很好,但因为记住了训练数据的细节而非学到真正的规律,导致在新数据上表现变差。

空间流的网络处理的是普通图像,这一点上作者想到了一个巧妙的办法:用ImageNet上预训练好的图像分类网络参数来初始化空间流,因为空间流本质上也是在识别静态画面里的物体和场景,这跟ImageNet的图像分类任务是相通的。这一步相当于蹭了图片识别领域已经积累多年的海量数据的红利。

时间流没法直接借用ImageNet的预训练参数,因为光流图和普通RGB图像的统计特性差异很大。作者转而采用多任务学习的策略,让网络同时在两个不同的视频数据集上训练,共享大部分网络参数,只在最后的分类层上区分不同数据集的类别体系。这样相当于把两个小数据集拼起来,变相扩充了可用的训练数据量。

这套组合拳背后的逻辑是:当你手头的数据不够训练一个从零开始的深度网络时,不代表你必须放弃深度学习,你可以想办法去借用其他相关任务里已经学到的知识。这跟一个刚毕业的新人进入陌生行业时的处境很像,如果完全靠自己在新岗位上试错积累经验,成长会很慢,但如果他能把之前在相关领域积累的经验迁移过来,哪怕不是完全对口,也能大大加快上手速度。如果不做这层迁移,直接用UCF-101那一万多个视频从头训练一个深度卷积网络,大概率会因为数据量太小而严重过拟合,根本达不到论文里报告的效果。

结果:深度学习第一次赢了

这篇论文最重要的数字是这样的:双流网络在UCF-101数据集上达到了88.0%的准确率,在另一个常用数据集HMDB-51上达到了59.4%。

这个数字意味着什么?意味着它第一次追平甚至略微超过了当时最好的手工特征方法。要知道,在这篇论文之前,深度学习在这个任务上的最好成绩普遍落后手工方法十几个百分点,20个百分点的差距,意味着什么?意味着每5个动作里,深度学习方法就要比手工方法多认错1个。这在一个已经被深度学习攻克了图像识别、正在攻克语音识别的年代,是个说不过去的短板。

双流网络把这个短板补上了。下面是论文里几个关键方法的对比结果:

| 方法 | UCF-101准确率 |

| 单独空间流 | 72.6% |

| 单独时间流 | 81.0% |

| 密集轨迹(当时最强手工特征) | 88.0% |

| **双流网络融合** | **88.0%** |

这张表格里藏着一个很值得说的细节:单独用空间流,也就是只看静态画面,准确率只有72.6%。单独用时间流,只看运动信息,反而达到81.0%,比空间流高了差不多8个百分点。这说明在动作识别这件事上,运动信息本身比静态画面更关键,毕竟“动作”这个词本身指的就是变化,不是某一帧的样子。但把两者融合起来,准确率进一步提升,说明两条流确实捕捉到了互补的信息,谁也代替不了谁。

如果只用空间流会发生什么?实验数据已经给出了答案,准确率从88%掉到72.6%,掉了整整15个百分点。这也从数据上验证了前面那个直觉判断:只看静态画面来判断动作,就像只看一张照片猜一个人接下来要做什么,很多时候是猜不准的。

这篇论文之后发生了什么

双流网络这个思路影响极大,后续很长一段时间里,视频动作识别领域的主流方法基本都是在双流框架上做改进。

2016年,Feichtenhofer等人发表的论文提出了时空双流网络的改进版本,重点研究了两条流之间应该在网络的哪一层进行融合,而不是像原始论文那样只在最后融合,他们发现在网络中间层就开始融合空间和时间信息,效果比只在最后融合更好,这个发现进一步说明空间和时间信息之间存在更深层的关联,值得更早地互相交流。

2017年,Carreira和Zisserman(没错,还是Zisserman)发表了I3D网络的论文,他们把双流网络里的2D卷积扩展成了3D卷积,直接对一小段视频立体块做卷积,同时提出了大规模视频数据集Kinetics来解决数据不足的问题。这篇论文进一步把动作识别的准确率推高了一大截,可以说是双流思路和更大数据规模结合之后的产物。

这条脉络说明双流网络提出的核心想法,把外观和运动分开处理、用光流显式编码运动信息,在后续几年里被反复验证、迭代和优化,一直到3D卷积和后来的视频Transformer出现之前,双流框架都是这个领域绕不开的基础范式。

写在后面

读这篇论文的时候,最触动我的一点是,作者没有执着于设计一个更精巧的网络结构去“硬啃”原始视频,而是先想清楚了问题的本质:动作识别需要外观和运动两种性质不同的信息,然后用一种笨拙但有效的方式,光流图,把运动信息转换成网络已经会处理的格式。

这种“先分解问题再对症下药”的思路,比单纯堆砌网络层数更接近科学研究该有的样子。很多后来被吹得很厉害的深度学习突破,回头看核心创新往往就是这种对问题本质的重新拆解,而不是纯粹的算力堆砌。

论文里还有个没细说但值得追问的地方:光流的计算本身依赖传统算法,并不是端到端可学习的。这意味着双流网络其实是深度学习和传统计算机视觉方法的一个混合产物,这个“缝合”会不会成为性能的天花板?后来3D卷积网络的兴起,某种程度上正是想甩掉这个依赖,让网络自己从原始像素里学会捕捉运动,这条路走得通吗,走到哪一步了,是个值得继续追的问题。

Q&A

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

A:双流卷积网络是2014年由Simonyan和Zisserman提出的视频动作识别方法,用两个独立的卷积神经网络分别处理视频的静态画面(空间流)和运动信息(时间流),最后融合两者的预测结果,是深度学习首次在这项任务上追平传统手工特征方法的成果。

Q2:双流网络里的光流是干什么用的?

A:光流用来表示视频相邻帧之间每个像素点的运动方向和速度,相当于把“运动”这件事画成一张图,专门喂给时间流网络,让网络能捕捉动作变化,而不受背景颜色纹理等无关信息干扰。

Q3:双流网络比传统方法好在哪里?

A:在UCF-101数据集上,双流网络达到88.0%的准确率,追平了当时最强的手工特征方法密集轨迹,而在此之前的深度学习方法普遍比手工方法低十几到二十个百分点,双流网络是深度学习在视频动作识别上第一次不落后于传统方法的成果。

精彩推送

公司

一系列金融支持民营经济、民营企业发展的政策举措正密集出台加速落地。

详细>>

9月份以来,人民币汇率持续走低。9月8日,离岸人民币对美元汇率盘中最

详细>>

国家统计局发布的数据显示,8月份,全国居民消费价格指数(CPI)同比上

详细>>

国家统计局9月9日发布的数据显示,8月全国居民消费价格指数(CPI)同比

详细>>

今年前8个月,郑州商品交易所累计成交量约25亿手,同比增长64%。这是记

详细>>

中国电影观众满意度调查2023年暑期档调查结果显示,暑期档电影观众满意

详细>>