微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

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

首页 双流卷积网络:当深度学习第一次在视频动作识别上打败了手工特征

双流卷积网络:当深度学习第一次在视频动作识别上打败了手工特征

2026-09-17 21:07
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-09-17 21:07 科技行者

2014年之前,如果你去问计算机视觉领域的研究者,深度学习能不能识别视频里的动作,很多人会摇头。

不是因为没人试过。而是试过的人,都被结果劝退了。

当时视频动作识别领域最强的选手,是一种叫做密集轨迹的手工特征方法。

密集轨迹*:一种手工设计的视频特征提取方法,通过跟踪视频中密集采样的点的运动轨迹,统计轨迹周围的图像和运动信息来识别动作。

这种方法在标准测试集UCF-101上能达到87%左右的准确率。而当时最好的深度学习方法,表现只有65%上下,差了整整20个百分点。

20个百分点的差距意味着什么。意味着每5个动作里,深度学习就要比手工方法多认错1个。这在学术界不是小差距,这是"这条路走不通"级别的差距。

要知道,就在这之前一年,深度学习刚刚在图像识别上靠AlexNet一战封神,把传统方法按在地上摩擦。为什么同样是深度学习,换到视频上就突然不灵了?

这正是2014年,牛津大学的Karen Simonyan和Andrew Zisserman要回答的问题。他们发表的论文《用于视频动作识别的双流卷积网络》,第一次让深度学习在视频动作识别上超过了手工特征方法。

这不是一次容易的胜利,而是找准了问题出在哪里。

视频比图片难在哪里

图像识别为什么好做?因为一张照片给你的是空间信息:这个像素是什么颜色,那个区域是什么形状,猫的耳朵长什么样。卷积网络天生擅长这种事,它一层一层地从像素里提炼出边缘、纹理、部件,最后拼出"这是一只猫"。

视频的麻烦在于,它不只有空间信息,还有时间信息。

一个人在挥手和一个人举着手不动,如果你只看某一帧画面,两者可能长得几乎一样。区分这两个动作的关键,根本不在某一帧长什么样,而在于画面是怎么变化的。

这就是问题所在。当时的深度学习方法,几乎都是把视频简单地当成一堆图片,扔进一个用于图像的网络里,然后指望网络自己从像素的时间序列里学出运动模式。

这就像让一个只会看照片的人去判断一段舞蹈跳得好不好,你给他一张张单独的静止照片,让他自己脑补中间发生了什么。他也许能猜到几个大概的姿势,但动作的节奏、速度、连贯性,这些恰恰是运动最关键的部分,从静态照片里根本看不出来。如果不给他哪怕一点点关于"变化"的信息,他能做的只是瞎猜。

Simonyan和Zisserman的洞察是:与其指望网络自己从像素堆里学出运动信息,为什么不直接把运动信息喂给它?

双流网络:把空间和时间分开处理

他们的方案听起来简单得让人意外:搭两个卷积网络,一个专门看"长什么样",一个专门看"怎么动的"。

第一个网络叫空间流,输入是视频里的单帧图像,负责识别画面里有什么物体、什么场景。这部分和普通的图像分类网络没什么本质区别,它能告诉你这是一个游泳池还是一个篮球场,画面里有没有人。

第二个网络叫时间流,这才是这篇论文真正的创新所在。它的输入不是图像,而是光流场。

光流*:描述视频中相邻两帧之间每个像素点的运动方向和运动幅度的一种表示方式,可以理解为把"谁在往哪个方向移动"用图像的形式画出来。

具体来说,研究者会先用传统算法从连续的视频帧里计算出光流,把水平方向的运动和垂直方向的运动分别存成两张"图像"(其实是位移场,但可以当图像处理),然后把连续多帧的光流叠在一起,作为时间流网络的输入。

这个网络看到的不是画面里有什么,而是画面里的每一点在往哪个方向、以多大幅度移动。它看不出这是个人还是个球,但它能看出"这一片区域正在向左快速移动"。

两个网络各自独立训练,各自输出一个动作分类的预测,最后把两个预测结果加权融合,得到最终答案。

![双流网络结构图]

论文里的结构图画得很直白:左边一路是空间卷积网络,吃单帧图像;右边一路是时间卷积网络,吃光流堆叠图;两边分别跑出一个softmax分类结果,最后融合。整个结构没有花里胡哨的设计,两条线几乎是对称的,唯一的区别就是输入不同。

这种"分而治之"的思路,其实很像医生看病时用的两种检查手段。CT扫描能看清你身体内部的结构,哪里有阴影、哪里有异常形状,这对应的是"长什么样"的空间信息。而心电图完全不关心你心脏的形状,它只记录电信号随时间的起伏变化,这对应的是"怎么变化"的时间信息。你不会指望一台CT机顺便测出心律不齐,因为CT压根不是为捕捉"变化"设计的。如果把两种检查硬塞进同一台机器,期望它既能看清结构又能捕捉动态,很可能两件事都做不好。分开设计、分开优化,再综合诊断,这才是靠谱的做法。

为什么光流是关键

这里有个问题:如果空间流已经能看到每一帧画面了,为什么还需要专门去算光流,而不是直接把好几帧原始图像堆在一起,让网络自己去找规律?

研究者们确实做过对比实验。结果是,直接把多帧原始图像堆叠起来输入网络,效果远不如显式计算光流后再输入。

原因在于,原始像素里的运动信息被大量无关内容掩盖了。一个像素的颜色值从这一帧到下一帧变了,可能是因为物体在动,也可能只是因为光照变化、摄像机轻微晃动,或者背景里一只无关的小鸟飞过。网络要从这堆混杂信号里,自己学会分离出"真正有意义的运动",这个任务比直接给它运动信息难得多。

光流算法虽然是传统计算机视觉的老技术,但它已经把这个"提炼运动"的脏活累活做完了。它经过几十年的打磨,专门解决了怎么从像素变化里剔除噪声、精确估计运动方向这个问题。深度学习网络拿到这份"提炼好的运动信息",只需要在这个基础上学会识别不同动作对应的运动模式就行了,不用从零开始摸索什么是运动。

这就像你要判断一杯水的温度,你可以拿起杯子摸一摸间接感受,也可以直接插一根温度计进去读数字。摸杯子这个方式看似直接,但受手的敏感度、杯壁厚度、外部环境温度的影响,判断出来的结果很粗糙。温度计则是专门为测温度这件事设计的工具,直接给你一个精确数字。深度学习网络如果直接吃原始像素去猜运动,就像用手摸杯子猜温度;而喂给它光流,就是直接把温度计的读数交给它。如果不用温度计,非要靠手感去估算,那你得练很久才能估得准,而且永远比不上专业仪器的精度。

论文里还提到一个细节:他们尝试了减去背景运动的光流(也就是先估计摄像机自身的运动,然后从光流里减掉这部分,只留下物体相对于背景的运动),这种处理方式在某些数据集上带来了进一步的提升。这说明网络确实是在利用运动信息做判断,而且越纯净的运动信息,效果越好。

数据不够怎么办:用图片数据来救视频任务

另一个现实问题是,训练一个深度网络需要海量数据,但当时的视频动作识别数据集小得可怜。像UCF-101这样的数据集,总共才1万多个视频片段,分成101类,平均每类只有100多个样本。

对比一下,图像识别领域的ImageNet有超过100万张标注图片,1000个类别。视频数据集的规模连图像数据集的百分之一都够不上。

数据量不够,直接从头训练一个深度网络,很容易过拟合,也就是网络记住了训练集里的样本细节,却没有学到真正有用的通用规律,遇到没见过的新视频就表现很差。

研究者们的解法是迁移学习。

迁移学习*:先在数据量充足的任务上训练模型,再把训练好的模型参数迁移到数据量不足的目标任务上继续训练,从而缓解目标任务数据不足的问题。

具体来说,空间流网络的参数,先用ImageNet上训练好的图像分类模型做初始化,因为空间流本质上就是在识别画面内容,这和普通图像分类是相通的任务。而对于数据集本身规模小的问题,他们还采用了多种数据增强手段,比如随机裁剪、水平翻转等方式,人为制造出更多训练样本的变体。

这个思路其实特别朴素:如果你没办法直接获得足够多的视频数据,那就想办法借用已经存在的、大量的图片数据里蕴含的知识。一个已经在上百万张图片上学会了识别猫、狗、汽车、人脸的网络,它对"什么是一个物体的边缘"、"什么是一种纹理"这些基础视觉规律已经有了扎实的理解,这些理解在视频的单帧图像上同样适用,没必要从零开始重新学一遍。

这就好比你要培养一个新员工去做视频剪辑,如果公司完全没有视频剪辑的培训资料,但有大量的摄影构图培训资料,你会先让他学摄影构图打基础,再上手视频剪辑,而不是让他对着空白从零摸索。摄影和视频剪辑不是同一件事,但底层的审美和构图能力是通用的。如果不这样做,非要等视频剪辑培训资料攒够了才开始培养,可能等资料攒够了,市场机会都过去了。

结果说话:数字上的胜利

那么这套方案最终表现如何?

论文在两个标准数据集上做了测试,UCF-101和HMDB-51,这是当时动作识别领域最常用的两个基准测试集。

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

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

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

| 仅时间流 | 81.0% | 55.4% |

| **双流融合** | **88.0%** | **59.4%** |

| 同期最好的手工特征方法 | 87.9% | 57.2% |

这个表格里最值得琢磨的是前两行。

单独看空间流,也就是只靠画面内容识别动作,准确率是72.6%。这个数字不算差,但也说明只看画面长什么样,确实抓不住动作的本质。

单独看时间流,也就是只靠光流信息,准确率反而更高,达到81%。这说明相比于"看到了什么","怎么动的"这个信息对判断动作类型更重要。这也验证了研究者最初的判断:运动信息才是动作识别里被忽视的关键。

而把两者结合起来,准确率跳到88%,比单独任何一路都高出不少。这说明两条流学到的信息确实是互补的,画面内容告诉你"在哪里、和什么有关",运动信息告诉你"具体在做什么动作",两者合在一起才是完整的判断依据。

更关键的一行是最后的对比:双流网络88.0%,对上同期最好的手工特征方法87.9%。

差距只有0.1个百分点,看起来微不足道,但这个0.1的意义,远超过它的数值本身。这是深度学习第一次在这个任务上追平并略微超过精心设计了十几年的手工特征方法。在HMDB-51数据集上,双流网络的优势更明显,59.4%对57.2%,领先了2.2个百分点。

这就是2014年那一刻的分量。就像AlexNet在2012年让深度学习在图像分类上一举超越传统方法一样,双流网络证明了同样的故事可以在视频领域重演,只是需要先想清楚视频和图片的本质区别在哪里,再针对性地设计网络结构,而不是简单粗暴地照搬图像方法。

这篇论文之后发生了什么

双流网络提出的分离空间和时间信息的思路,后来被证明是极其有生命力的一个方向。

2015年,Feichtenhofer等人的论文进一步研究了双流网络中两条流应该在哪个层级进行融合,而不是等到最后才合并结果,这个思路被称为卷积融合网络,让两条流可以在中间层就开始交换信息,进一步提升了识别精度。

更有影响力的后续工作来自2016年,Wang等人提出的时序分段网络。这个工作解决了双流网络的一个明显短板:原始双流网络在处理一整段视频时,往往只是简单地对视频中采样出的少数帧分别做预测,然后取平均,这种方式对长视频里动作的时序结构建模能力很弱。时序分段网络把一段视频切成若干个时间段,在每个段里都用双流网络做预测,再把各段结果整合起来,这让模型能够捕捉到动作在更长时间跨度上的变化模式,在多个数据集上把准确率进一步推高了几个百分点。

再往后,光流本身的计算方式也发生了变化。早期双流网络里用的光流是靠传统算法(比如TV-L1)预先计算好的,这个步骤运算量很大,拖慢了整个系统的速度。后续的研究者们开始尝试用神经网络直接学习光流估计,甚至尝试完全抛弃显式光流计算,用3D卷积网络直接在原始视频帧上进行时空联合建模,比较有代表性的是2017年出现的I3D网络,它把双流网络里的2D卷积换成了3D卷积,同时借鉴了双流的双分支设计,在动作识别的公开数据集上又刷新了一轮成绩。

回头看,双流网络最重要的贡献不只是它当时那个88%的数字,而是它明确指出了一件事:视频理解任务里,运动信息和内容信息是两种性质不同的东西,值得用不同的方式去建模。这个判断影响了后面至少五六年内这个领域的主流研究思路。

写在后面

读这篇论文时,最触动我的其实不是双流网络本身有多精巧,而是研究者解决问题的方式:他们没有执着于"深度学习应该自己学会一切"这种理想主义,反而很务实地借用了传统算法(光流计算)已经解决得很好的部分,把力气花在深度学习真正擅长的地方,也就是从提炼好的运动信息里学习分类模式。

这种"承认工具的边界,然后把不同工具组合起来"的思路,其实比一味追求端到端的纯粹性更接地气,也更容易在数据不足、算力有限的现实条件下先把问题解决掉。

论文里那个0.1个百分点的胜利也让我想到一件事:很多领域的转折点,一开始看起来并不惊天动地,甚至可能被当时的人低估。真正的意义要等后来的人接着往下做,才能看出这一步走对了。

那时候没人能预料到,几年后3D卷积网络会把双流网络里那个费时费力的光流计算步骤直接跳过。如果传统光流算法当年再快一点、再好用一点,深度学习会不会走一条完全不同的路?

Q&A

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

A:双流卷积网络是2014年由Simonyan和Zisserman提出的视频动作识别方法,用两个独立的卷积网络分别处理视频的画面内容(空间流)和运动信息(时间流),再融合两者的预测结果来判断视频里的动作类别。

Q2:双流网络为什么要用光流而不是直接用原始视频帧?

A:因为原始像素的变化里混杂了大量和运动无关的噪声,比如光照变化、镜头晃动,网络很难自己分离出真正有意义的运动信息。而光流是传统算法专门提炼出的运动方向和幅度信息,相当于把"怎么动"这个问题提前解决好了再交给网络学习,效果比直接堆叠原始帧好得多。

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

A:在UCF-101数据集上,双流网络达到88.0%的准确率,比同期最好的手工特征方法(密集轨迹)87.9%高出0.1个百分点;在HMDB-51数据集上领先2.2个百分点,达到59.4%对57.2%。这是深度学习第一次在视频动作识别任务上追平并超越手工特征方法。

分享至
0赞

好文章,需要你的鼓励

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