微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 深度学习靠视频里的"运动"识别动作,这件事在2014年是个大问题

深度学习靠视频里的"运动"识别动作,这件事在2014年是个大问题

2026-09-16 23:14
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-09-16 23:14 • 科技行者

2014年之前,如果你去问任何一个做计算机视觉的研究者:深度学习能不能用来识别视频里的动作?大概率会得到一个尴尬的回答。

不是因为没人试过。恰恰相反,很多人试了,结果都不太好看。当时最强的手工特征方法,一种叫做"密集轨迹"的技术,

> 密集轨迹(Dense Trajectories)*:一种手工设计的视频特征提取方法,通过跟踪视频里密集分布的采样点,捕捉它们随时间移动的轨迹来描述动作。

在权威的动作识别数据集UCF-101上能做到接近88%的准确率,而基于深度学习的方案却在70%左右徘徊,差了将近18个百分点。

这不是一个小差距。18个百分点意味着,每识别100个动作,深度学习方法要比手工特征多认错18次。这在图像分类领域是不可想象的差距,因为就在同一年,深度学习在ImageNet图像分类上已经把传统方法甩开了一大截。

为什么视频就这么难啃?

问题出在"时间"这个维度上。一张图片只有空间信息,一个物体的轮廓、颜色、纹理,卷积神经网络处理这些游刃有余。但视频多了一个维度,时间。一个人挥手的动作,不看运动轨迹,单看某一帧画面,可能跟挠头分不出来。深度网络要理解的不是"这一帧长什么样",而是"画面是怎么变化的"。

这正是Karen Simonyan和Andrew Zisserman在2014年发表的论文《Two-Stream Convolutional Networks for Action Recognition in Videos》要解决的问题。有意思的是,这两位学者来自牛津大学的VGG研究组,就是那个几个月后发布了VGGNet、彻底改变图像分类领域的团队。这篇动作识别论文和VGGNet几乎是同期的工作,某种程度上代表了同一批人在不同战场上的双线作战。

一个直觉:为什么不把运动信息直接喂给网络

Simonyan和Zisserman的出发点其实很朴素。

如果深度网络看单帧图片学不好动作,那是不是因为它压根没看到"动作"本身?一帧静止画面里根本不存在运动这个概念,网络能学到的只是背景、场景、物体这些静态线索。比如一个网络可能学会"游泳池背景=游泳"这种投机取巧的判断,而不是真正理解挥臂蹬腿的动作本身。

那么解法似乎显而易见:把运动信息也变成一张"图片",喂给另一个网络。

这就是论文提出的核心思路,双流网络。

> 双流卷积网络(Two-Stream ConvNet)*:由两个独立的卷积神经网络组成的架构,一个处理静止画面(空间流),一个处理运动信息(时间流),最后把两者的判断结果融合起来。

具体来说,空间流网络输入的是视频里的某一帧RGB图像,负责捕捉场景、物体、人物外观这些静态线索。时间流网络输入的则是光流场,专门负责捕捉运动模式。

这里要停下来解释一下"光流"是什么。

> 光流(Optical Flow)*:描述视频中相邻两帧之间,画面上每一个点是如何移动的,用一个个箭头(向量)表示运动的方向和幅度,本质上是一张记录了"谁往哪动了多少"的地图。

如果把一帧视频画面比作一张快照,光流场就是快照里每个像素点身上贴的一个小箭头,告诉你这个像素接下来要往哪个方向、以多快的速度移动。把连续几帧的光流叠在一起,就能形成一段能反映动作节奏和轨迹的信息序列,这段序列本身可以被当成"图像"一样送进卷积网络处理。

这里必须做一个类比才能说清楚为什么这个设计是必要的。

想象你在一个完全陌生的城市里,只给你一张某个瞬间的城市照片,你能看到街道、建筑、行人的位置,但你没法判断哪个行人是在走路、哪个是在等红灯站着不动。如果只给你这一张照片,你的判断只能靠猜,可能靠衣着、姿态去蒙。但如果再给你一段十秒的路口延时摄影,哪怕画质很糙,你立刻就能看出谁在走、谁在跑、谁站着不动,因为运动轨迹本身就是最直接的证据。空间流网络看到的就是那张单张照片,时间流网络看到的就是那段延时录像里提炼出的运动信息。如果不做这个区分,硬让一个网络同时兼顾"这是什么场景"和"东西在怎么动"这两件事,网络会很容易偷懒,只学会前一件更容易的事,毕竟场景分类比运动理解简单得多。

这也是为什么单纯依靠一个网络,效果始终上不去的根本原因。

论文里给出的对比数据很直接:如果只用空间流网络(只看RGB画面),在UCF-101上的准确率是72.6%。如果只用时间流网络(只看光流),准确率能到81.2%。而把两者结合起来,融合后的准确率跳到了88.0%。

这组数字信息量很大。首先,单独看运动信息(81.2%)比单独看静态画面(72.6%)效果好将近9个百分点,这说明对于动作识别这个任务,运动本身携带的信息量比外观信息更关键。其次,两者融合之后又比单独的时间流再提升近7个百分点,说明外观信息和运动信息并不是互相替代的关系,而是互补的,一个告诉你"在哪、是什么",一个告诉你"怎么动",两者合在一起才是完整的答案。

时间流网络具体怎么设计的

光流信息要变成网络能吃的输入,这中间也有讲究。

论文没有只用单帧之间的光流,而是把连续L帧(论文里用的是10帧)的光流场堆叠在一起,形成一个多通道的输入。每一帧的光流又拆成横向和纵向两个分量,这样10帧就变成了20个通道的输入体量。

为什么要堆叠多帧,而不是像空间流那样只看一帧?

因为单一时刻的运动信息噪声很大,而且很难反映一个完整动作的节奏。比如"挥拍"这个动作,只看某一瞬间的光流,可能只捕捉到手臂在某个方向上轻微移动,根本看不出这是挥拍还是伸手拿东西。但如果把连续十帧的光流串起来看,一个完整的挥拍弧线就显现出来了,动作的方向、速度变化、加速减速的节奏全都包含在里面。

这就像判断一个人是不是在写字,你不能只看他手指某一瞬间的位置,你得看他手腕连续画出来的那条轨迹,一笔一划连起来才能看出这是不是在写"字"这个动作,单独一帧只能看到一个孤立的点。

网络架构方面,两个流各自都是独立的卷积神经网络,结构上参考了当时经典的图像分类网络设计(类似AlexNet的思路),只是输入通道数不同。两个网络各自输出一个分类得分,最后通过简单的平均或者用一个支持向量机

> 支持向量机(SVM)*:一种经典的机器学习分类算法,通过寻找一个最优的分界线(或分界面)把不同类别的数据点分开。

来融合两路的预测结果,得到最终的动作类别判断。

数据不够怎么办:多任务学习的巧思

这篇论文还面临一个现实问题:训练深度网络需要大量标注数据,但在2014年,专门用于动作识别的标注视频数据集规模都不大,比如UCF-101只有101个类别、大约1.3万段视频,这个规模跟当时ImageNet动辄百万级图像的体量完全没法比。

数据不够,网络很容易过拟合,也就是在训练集上表现很好,但一到没见过的新视频上就露怯。

Simonyan和Zisserman给出的解法是多任务学习。

> 多任务学习(Multi-task Learning)*:让同一个网络同时在多个相关的数据集或任务上训练,共享大部分参数,只在最后输出层区分不同任务,这样网络能从更多样的数据里学到更普适的特征。

具体来说,他们让空间流网络同时在两个数据集上训练,UCF-101和另一个规模类似的数据集HMDB-51,网络的主体结构共享,只是在最后加了两个独立的分类输出层,分别对应两个数据集各自的类别标签。这样网络实际上见到的训练样本量翻倍了,学到的特征也就更稳健。

这个思路其实很像一个厨师同时给两家餐厅打工。如果厨师只在一家餐厅工作,见到的食材种类和顾客口味都有限,做菜的手法很容易固化,遇到没见过的新菜式就容易翻车。但如果他同时在两家风格不同的餐厅掌勺,他锻炼出来的刀工、火候把控这些底层技能会更扎实,因为两边的经验互相印证、互相补充。如果不这样做,只用UCF-101一个数据集从零训练,模型很可能因为见到的样本类型太单一,一到测试集就现出原形,表现明显下滑。

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

论文里公布的核心实验结果,可以整理成下面这张表格来看:

| 方法 | UCF-101 准确率 |

|---|---|

| 仅空间流网络 | 72.6% |

| 仅时间流网络 | 81.2% |

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

| 同期最强手工特征方法(改进版密集轨迹) | 87.9% |

这个结果在当时的意义不小。88.0%对87.9%,看起来只差0.1个百分点,几乎是打平。但这个"打平"背后的分量完全不同:这是深度学习方法第一次在视频动作识别这个任务上追平甚至略微超过精心设计多年的手工特征方法。要知道,在此之前深度学习在这个任务上一直被压着打,落后将近20个百分点。这次哪怕只是打平,也是一次真正的转折点,它证明了深度网络不是不能处理时间信息,而是之前的方法没有找到正确地喂入时间信息的方式。

如果没有双流架构,只靠空间流硬撑,72.6%的表现别说赶超手工特征,连及格线都摸不到,落后传统方法足足15个百分点以上。这15个百分点差距背后,正是"时间信息"这块拼图缺失所付出的代价。

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

双流网络提出之后,这个思路迅速成为视频动作识别领域接下来几年的主流范式,很多团队在这个基础上继续深挖。

2016年,Feichtenhofer、Pinz和Zisserman(同样有Zisserman参与)发表了论文,进一步研究了两个流之间应该在网络的哪个层次进行融合,而不是简单地在最后输出层才合并,这个改进让两路信息能更早地互相影响,识别准确率进一步提升。

2017年,Carreira和Zisserman(还是同一个人名反复出现)在论文《Quo Vadis, Action Recognition?》中提出了I3D网络

> I3D(Inflated 3D ConvNet)*:一种把二维卷积核"膨胀"为三维卷积核的网络结构,能够直接在视频的时空体块上做卷积运算,同时捕捉空间和时间信息,而不需要像双流网络那样把两者拆开处理。

I3D延续了双流的框架(依然有RGB流和光流流两路),但把每一路网络本身升级成了三维卷积结构,直接在时空立体数据上运算,进一步把准确率推高到95%以上,这个数字放在今天依然是很多后续工作对比的重要基准。

这两项后续工作说明一件事:双流网络提出的"分开处理外观和运动,再融合"这个核心思想具有很强的生命力,即便底层的网络结构一直在迭代进化,这个框架性的直觉一直被保留了下来。

Q&A

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

A:双流卷积网络是2014年由Simonyan和Zisserman提出的视频动作识别方法,由两个独立的卷积神经网络组成,一个处理单帧RGB图像捕捉外观信息,另一个处理光流场捕捉运动信息,最后把两路判断结果融合,在UCF-101数据集上达到88.0%的准确率。

Q2:光流在双流网络里起什么作用?

A:光流记录了视频里每个像素点在相邻帧之间的移动方向和幅度,相当于把"运动"这件事本身变成一张可以被卷积网络处理的图像。论文实验显示,只用光流的时间流网络准确率能达到81.2%,比只用RGB画面的空间流网络(72.6%)高出近9个百分点,说明运动信息对动作识别比静态外观信息更关键。

Q3:双流网络之后有哪些重要的后续研究?

A:2016年Feichtenhofer等人研究了两个流应该在网络中间层就开始融合而非等到最后,进一步提升了效果。2017年Carreira和Zisserman提出I3D网络,把双流框架里的二维卷积升级为三维卷积,直接处理时空数据,准确率提升到95%以上,成为后续研究的重要基准。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-