光流和RGB两腿走路:双流网络如何让深度学习第一次赢过手工特征
创始人
2026-08-25 22:24:40

  炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会!

(来源:科技行者)

2014年秋天,计算机视觉圈子里有一件事挺尴尬的。

图像识别领域,深度学习已经把传统方法按在地上摩擦了两年多。2012年AlexNet一出来,大家都以为视频识别很快也会被卷积神经网络攻下。

结果没有。

一连两年,最好的深度学习方法在动作识别数据集上的表现,都打不过一个叫"密集轨迹"的手工特征算法。

密集轨迹*:一种传统的视频特征提取方法,通过追踪视频中密集分布的像素点的运动轨迹,再结合方向梯度直方图等手工设计的特征描述子来识别动作,不需要神经网络。

这事儿放在2014年的语境里,分量很重。要知道那时候深度学习刚刚在图像分类上把ImageNet的错误率从26%打到15%,声势正盛。可一旦换成视频,神经网络突然就不好用了。这种反差,足够让整个领域的人挠头。

牛津大学的Karen Simonyan和Andrew Zisserman就是在这个背景下,拿出了一个后来被称为"双流网络"的方案。这篇论文发在2014年的NeurIPS上,题目直白得很:《用于视频动作识别的双流卷积网络》。

有意思的是,Simonyan和Zisserman同一年还发表了另一篇更出名的论文,VGGNet。两篇论文几乎是同期的工作,出自同一个实验室。这个巧合本身就说明,那一年牛津的这个组,在琢磨怎么把卷积网络这套东西用得更彻底。

视频识别到底难在哪

要理解双流网络的巧妙,得先明白视频比图片难在哪。

一张图片,你看一眼就知道里面有什么东西,猫、狗、椅子,这些都是静态的外观信息。可动作是什么?动作是"变化"。同一张"人举起手臂"的静态截图,可能是在打招呼,可能是在扔东西,也可能是在伸懒腰。

单张图片能告诉你"这是谁、在哪、长什么样",却没法告诉你"正在发生什么"。

这就好比你走进一个房间,看见桌上有一杯打翻的水。你能判断出"水被打翻了"这件事发生过,但你判断不出是谁打翻的、什么时候、用了多大力气,因为你错过了这件事发生的过程,只看到了结果的一帧画面。

在2014年之前,研究者试过直接把视频的帧一张张喂给卷积神经网络,或者把三维时空的卷积核直接用在视频上,指望网络自己学会"运动"这个概念。

效果都不理想。当时最好的深度学习方法,在UCF-101这个动作识别数据集上,准确率停留在65%左右。而密集轨迹这种传统手工方法,能做到接近88%。

差了20多个百分点。这意味着什么?意味着深度学习每识别5个动作,就要比手工方法多认错1个以上。这个差距在当年,足以让很多人觉得"深度学习在视频领域可能真的不行"。

问题出在哪儿?Simonyan和Zisserman的判断是:卷积网络太贪心了,它想让一个网络同时学会"这是什么东西"和"这个东西怎么在动",而这两件事其实是完全不同性质的信息,硬塞进一个网络里,谁都学不好。

拆开来学:空间流和时间流

双流网络的核心思路,说穿了就一句话:既然外观和运动是两种不同的信息,那就用两个网络分别学,最后再把结果合起来。

这两个网络,一个叫空间流,一个叫时间流。

空间流*:处理单帧RGB图像的卷积网络分支,负责学习画面里的静态外观信息,比如人物、场景、物体的样子。

空间流干的事情,其实和一般的图像分类网络没什么区别。它拿到视频里的某一帧画面,去判断画面里有什么、场景是什么样的。比如篮球场的背景、球的形状,这些线索能帮它猜到"这可能是投篮动作"。

时间流则完全不同,它根本不看原始画面,它看的是光流场。

光流*:描述视频中相邻两帧之间,每个像素点的运动方向和运动速度的一种表示方法,本质上是一张"运动地图"。

光流场把"谁在哪儿"这个问题完全剥离了,它只关心"什么东西往哪个方向动了、动得多快"。你可以把光流想象成一张只画箭头的地图,每个箭头代表画面上某一点接下来会往哪儿移动。手臂挥动的方向、腿部跑动的节奏,这些信息全部藏在光流场的箭头分布里。

论文里放了一张第一层卷积核的可视化图。看那张图,你会发现时间流学出来的滤波器,大多是清一色的方向性条纹,横的、斜的、竖的。这不是随便学出来的,这恰恰说明网络自己发现了,光流场里最有用的信息就是运动的方向,它没有去关心颜色或者纹理,因为光流图本来就没有这些东西,它天生就是为了捕捉"动"而存在的。

这里必须打个类比才能说清楚为什么要分成两条流。

想象你在辨认一段监控录像里发生了什么。如果只给你一张截图,你可能连人是站着还是蹲着都分不清动作性质,但你能看清这人穿什么衣服、周围环境是什么。如果反过来,只给你一段"运动轨迹动画",没有任何颜色和物体轮廓,只有一堆箭头在移动,你反而能很清楚地看出这是"挥拍"还是"踢腿"的动作模式,却完全认不出这人是谁、在哪儿。

这两种信息谁也替代不了谁。如果你坚持只用一种方式去判断,必然会漏掉另一种方式独有的线索。双流网络的设计,本质上就是承认了这个事实:外观信息和运动信息该分开处理,不要指望一个网络两头都讨好。

那如果不这么做,会怎样?论文里做了对比实验。只用空间流单独跑,UCF-101上的准确率是72.6%。只用时间流单独跑,能到81%左右。把两条流结合起来,准确率跳到88%以上,直接追平甚至超过了当时最强的手工特征方法。

单独看空间流的72.6%和最终结合后的88%,中间差了15个百分点还多。这说明只靠画面外观去判断动作,天花板很低,运动信息才是识别动作的关键增量。

光流怎么喂给网络:多帧堆叠

这里还有一个技术细节值得展开,就是时间流具体是怎么处理光流数据的。

网络不是只看一帧光流图,而是把连续多帧的光流叠在一起,作为一个多通道的输入,一次性喂给卷积网络。论文里用的是连续10帧的光流,水平方向和垂直方向的位移各占一个通道,叠起来就是20个通道的输入。

多帧堆叠*:将连续多个时间步的光流图像按通道方向叠加,形成一个信息更丰富的多通道输入,让网络能感知一段时间内的运动趋势,而不只是某一瞬间的运动。

为什么要叠多帧,而不是只用相邻两帧的光流?

单看两帧之间的运动,信息量太单薄。一个人挥手的动作,可能持续十几帧,如果你只截取其中相邻的两帧算光流,得到的只是这个动作中极小的一段位移,很难判断这到底是挥手的开始、中间还是结束,更判断不出这是挥手还是别的动作的某一瞬间。

这就好比你想知道一个人在跳绳还是在做深蹲,如果只给你连续两张照片之间0.03秒的位移信息,你大概只能看出他"往下动了一点",完全判断不出这是跳绳落地的瞬间还是深蹲下蹲的瞬间。可如果给你连续十几张照片叠加起来的运动轨迹,一个上下往复的周期性动作模式就清楚地显现出来了,跳绳和深蹲的区别立刻就能分辨。

时间上的堆叠,给了网络"看一段过程"的能力,而不是只"看一瞬间"的能力。这也解释了为什么单独的时间流能达到81%这么高的准确率,比空间流的72.6%还高出不少,运动的持续模式本身就是动作识别里信息量很大的线索。

数据不够怎么办:预训练和多任务技巧

双流网络还有一个不那么起眼但很关键的设计,就是怎么应对训练数据不足的问题。

2014年那会儿,视频动作识别的数据集规模都不大,UCF-101一共才1万3千多个视频片段,这个规模对于训练一个深层卷积网络来说是远远不够的,容易过拟合。

空间流这条分支解决得比较简单粗暴,直接借用在ImageNet上预训练好的图像分类网络参数来初始化,因为静态图像的特征本来就通用性强,猫狗汽车的特征和人体动作画面的底层特征有相通之处。

时间流这边没有现成的大规模光流数据集可以预训练,Simonyan和Zisserman用了另一个办法,叫多任务学习。

多任务学习*:让同一个网络同时在多个不同的数据集或任务上进行训练,通过共享底层参数,弥补单个数据集数据量不足的问题。

具体做法是,把UCF-101和另一个动作识别数据集HMDB-51放在一起训练,共享网络的大部分层,只在最后的分类层上分开,各自对应各自数据集的类别标签。这样网络在学习过程中能看到更多样化的运动样本,不容易死记硬背某个小数据集里的特定模式。

这个思路你可以理解成,一个学生要备考两场不同学校的考试,虽然题型不完全一样,但复习的知识点大部分是重合的。与其分别刷两套小题库,不如把两套题库合起来一起刷,复习的知识面反而更广,遇到新题型也更从容。如果不这样做,只用UCF-101一个数据集单独训练时间流网络,模型很容易在这1万多个样本上过拟合,泛化能力会明显下降。

数据说话:双流网络到底强在哪儿

论文给出的核心实验结果,放在两个当时主流的动作识别数据集上,UCF-101和HMDB-51。

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

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

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

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

| 同期最强手工特征方法 | 87.9% | 61.1% |

这张表格里最值得琢磨的是,双流网络在UCF-101上以88.0%对87.9%的微弱优势,第一次追平甚至反超了手工特征方法。而在HMDB-51上,双流网络的59.4%还略低于手工方法的61.1%,但差距已经缩小到只有不到2个百分点,不再是当年那种20多个点的悬殊差距。

这是深度学习在视频动作识别领域第一次拿出能和手工特征掰手腕的成绩。放在2014年的坐标系里,这句话的分量,不亚于两年前AlexNet在ImageNet图像分类上横空出世那次冲击。

后来的故事:双流思路走了多远

双流网络这个"分开学、再融合"的思路,后来被无数工作继承和改造。

2016年,牛津组自己的后续工作,Feichtenhofer等人发表了《卷积双流网络融合用于视频动作识别》,进一步研究了空间流和时间流应该在网络的哪一层进行融合效果最好,而不是像原始双流网络那样只在最后的分类分数上简单相加,这一改动把UCF-101上的准确率进一步推高到了92%以上。

2017年,DeepMind团队的Carreira和Zisserman发表了《Quo Vadis动作识别》,提出了I3D网络,把双流网络里的2D卷积扩展成了3D卷积,并且引入了一个规模远大于UCF-101的新数据集Kinetics用于预训练。这篇论文本质上延续了双流的框架,一个RGB流加一个光流流,但把每条流内部的卷积方式做了升级,让网络能直接在时空维度上提取特征,最终把准确率又往上推了一大截。

这两个后续工作有个共同点,它们都没有推翻双流网络"外观信息和运动信息分开处理"这个核心判断,而是在这个框架内部继续打磨融合方式和特征提取方式。这从某种角度说明,双流网络当年那个判断,抓住了视频识别问题里一个相当本质的矛盾。

写在后面

读这篇论文最触动我的一点,是它解决问题的方式特别朴素。没有炫技式的复杂结构,就是老老实实地承认,一个网络同时学两种性质不同的信息,学不好,那就拆成两个网络,一人学一样。

这种"分而治之"的思路,在很多领域都能看到影子,比如后来的多模态模型处理文本和图像时,也倾向于先分开编码再融合,而不是一股脑塞进同一个网络。

还有一个细节值得单独说一下,时间流单独跑的效果比空间流好不少,这说明在动作识别这个具体任务里,运动信息的信息量本身就比静态外观更重要,这跟很多人的直觉可能是相反的,大家往往下意识觉得"看清楚是什么东西"比"看清楚它怎么动"更重要,但至少在这个任务上,数据不支持这个直觉。

双流网络没有解决的问题也很明显,它依赖预先计算好的光流,这个计算本身很耗时,没办法做到端到端训练。后来的3D卷积方法某种程度上就是想绕开这个限制。如果运动信息真的比外观信息更关键,那有没有可能存在一种更高效的方式,不需要显式计算光流,就能让网络自己学会捕捉运动的本质?

Q&A

Q1:双流网络是什么?

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

Q2:双流网络为什么要分成空间流和时间流两条分支?

A:因为外观信息(画面里有什么)和运动信息(东西怎么动)是两种性质完全不同的信息,硬塞进一个网络学习效果不好。实验显示只用空间流准确率只有72.6%,加上时间流融合后能提升到88%。

Q3:双流网络的效果比传统手工特征方法好吗?

A:在UCF-101数据集上,双流网络达到88.0%准确率,首次追平并略微超过当时最强的手工特征方法(87.9%),这是深度学习第一次在视频动作识别上打赢传统方法。

相关内容

热门资讯

金博股份上半年营收4.56亿元... 8月25日,金博股份发布2026年半年报。报告显示,公司上半年营业收入为4.56亿元,同比增长11....
中国南海新收复的岛礁大盘点 中...  中国南海新收复的岛礁大盘点:  南海诸岛  南海诸岛位于中国海南岛东面和南面海域,包括西沙群岛、东...
中国租下澳港口99年 中国为何... 中国租下澳港口99年:日前,北领地行政长官Adam Giles宣布,将澳洲北部最大港口达尔文港99年...
清华大学博士后工资解密 博士后...  博士后(Postdoctoral),是指在获得博士学位后,在高等院校或研究机构从事科学研究的工作职...
刘强东前妻龚小京曝光 龚小京资...  刘强东前妻龚小京曝光:  刘强东前妻龚小京曝光,传闻刘强东有一个儿子。刘强东跟奶茶妹妹领证结婚了,...