当前位置| 热点 > > 列表>详情

视频里的动作,AI是怎么"看懂"的:双流网络的故事

2026-08-31 21:39:31 来源:科技行者

2014年,计算机视觉圈里流行着一个说法:深度学习在图片识别上已经赢了,但要让它看懂视频里的动作,还差得远。

这句话背后是个扎心的事实。AlexNet在2012年横空出世,把图片分类的准确率提升到了前所未有的高度,整个学术圈都在为深度学习欢呼。可是换到视频动作识别这个任务上,神经网络却一直打不过一种叫"密集轨迹"的老派手工特征方法。研究者们试过把卷积网络直接怼到视频帧上训练,结果准确率只有41.3%,而当时最好的手工特征方法能做到59.9%,足足差了将近19个百分点。

这个差距意味着什么?意味着每识别10个动作,神经网络就要比老方法多认错快2个。这在当年是相当难看的成绩单,深度学习的光环第一次在视频领域打了折扣。


【资料图】

问题出在哪儿?牛津大学的Karen Simonyan和Andrew Zisserman决定认真琢磨这件事,他们后来发表的论文提出了一个思路,让深度学习在视频动作识别上第一次实实在在地超过了手工特征。这篇论文叫《Two-Stream Convolutional Networks for Action Recognition in Videos》,后来被称为"双流网络"。

视频识别到底难在哪

要理解这篇论文的巧妙之处,得先搞清楚视频动作识别这件事本身有多棘手。

图片分类相对简单,一张照片,你要判断里面是猫还是狗,靠的是形状、纹理、颜色这些静态特征。可是动作是个动态的东西。你光看一张"人举起手臂"的静止照片,根本判断不出这个人是在挥手打招呼,还是在扔东西,还是刚做完一个跳跃动作正在下落。

**动作识别真正需要的信息,一部分藏在画面的内容里,另一部分藏在画面的变化里。**

这就好比你在猜一个人接下来要做什么。如果只给你一张照片,你只能靠这个人的姿势、穿着、周围环境来猜,信息量有限。但如果给你连续几张照片,你能看出这个人的手是从下往上移动,还是从上往下移动,这个"移动的方向和速度"本身就是极其重要的线索。

传统的手工特征方法,比如那个打赢了深度学习的"密集轨迹"(Dense Trajectories),做法是先在视频里追踪一堆特征点,然后沿着这些点的运动轨迹去描述局部的外观和运动信息。这种方法设计得很精细,考虑了轨迹的方向、形状、周围的梯度变化等等,效果确实好。但缺点也很明显:全靠人工设计的规则,泛化能力有限,遇到没见过的场景容易翻车。

而深度学习的强项本该是自动学习特征,不需要人来设计规则。问题是,当研究者简单地把视频的每一帧当成一张图片扔进卷积网络训练时,网络学到的更多是"这一帧里有什么东西",而不是"这个东西是怎么动的"。网络对时间维度上的变化几乎是麻木的。

**这就是双流网络要解决的核心矛盾:怎么让神经网络同时学到"画面里有什么"和"画面在怎么变"这两件事。**

拆成两条河来看

Simonyan和Zisserman给出的答案,说出来其实挺朴素:既然一个网络很难同时兼顾外观信息和运动信息,那就干脆用两个网络,一个专门看外观,一个专门看运动,最后把两边的判断结果加起来。

这就是"双流"(Two-Stream)这个名字的来源。

第一条流叫空间流(Spatial stream)

引用块:空间流:输入是视频中的单独一帧RGB图像,负责捕捉画面中的物体外观、场景背景这类静态信息。

空间流的输入很简单,就是视频里某一帧的彩色图片。它的任务是识别画面里有什么东西,比如一个人、一个球、一片草地。这部分工作和普通的图片分类任务几乎一样,所以可以直接借用在ImageNet大规模图片数据集上预训练好的网络结构,站在巨人的肩膀上。

第二条流叫时间流(Temporal stream)

引用块:时间流:输入是光流场,负责捕捉画面中物体的运动方向和速度信息。

引用块:光流(Optical flow):描述视频中相邻两帧之间,画面上每个像素点是往哪个方向、移动了多远的一种表示方法,本质上是给运动"拍了张地图"。

时间流不看原始图像,它看的是"光流场"。这是这篇论文最关键的设计。光流是计算机视觉里一个已经存在了几十年的经典概念,简单说就是拿相邻的两帧图像做对比,算出画面里每一个点从上一帧到下一帧移动了多少、往哪个方向移动。把这些移动信息画出来,就是一张"运动地图",亮的地方代表变化剧烈,箭头方向代表运动方向。

论文里把光流拆成了水平方向和垂直方向两张图,再叠加多帧,形成一个包含若干帧运动信息的输入,喂给一个和空间流结构类似但参数完全独立的卷积网络。

这两条流各自训练,各自输出一个"这个视频属于哪个动作类别"的预测分数,最后简单地把两边的分数加权平均,或者用一个小的分类器把两边结果融合一下,得出最终答案。

**如果不这样拆开会怎样?论文里做了实验对照。只用空间流,单独在UCF-101数据集上的准确率是72.6%,只用时间流是81.0%,但两者结合起来能达到88.0%。**

单独看空间流那72.6%,你会发现它和最后的88%之间差了整整15个百分点。这说明只看外观,网络确实能猜出一部分动作,比如看到游泳池大概率是"游泳"这个类,但这种猜测很大程度上是靠"场景"而不是靠"动作"本身,天花板很低。而时间流单独已经能到81%,说明运动信息本身包含的动作线索,比外观信息更直接、更关键。两者一结合,互相补足,才拿到接近九成的准确率。

这里可以做个类比。想象你在看一场无声的默剧表演,你不知道台词,只能靠演员的动作猜剧情。这时候,如果你只盯着演员穿的衣服和站的位置看(相当于空间流),你能猜出这大概是个古装戏还是现代戏,但具体在演什么剧情你猜不准。如果你干脆闭上眼睛,只靠耳朵听演员走路的脚步声、挥手带起的风声(相当于时间流的运动信息),你反而能更准确地判断出这个人是在打斗还是在拥抱。但最准确的判断方式,一定是同时睁眼看又用心感受动作节奏,两种信息合在一起给出判断。如果非要你只用一种感官,你的判断力都会打折扣,这正是论文用两条独立网络而不是硬塞进一个网络的原因,信息性质不同,分开处理反而更清楚。

为什么不用一个网络硬扛

看到这里你可能会问,为什么不能让一个网络同时接收原始图像和光流图,一起训练学出来?

论文里其实也考虑过把两条流的特征在网络中间层直接融合的方案,但实验发现效果不如分开训练、最后再合并分数的策略。这背后的原因,和这两种数据的"性格"差异有关。

原始RGB图像和光流图,虽然都是"图片"形式的数据,但它们编码的信息本质完全不同。RGB图像里,颜色、纹理这些低层次特征很重要,网络的卷积核往往会学出各种颜色和边缘检测器。而光流图不一样,它的数值代表的是运动方向和幅度,论文里提到,如果去看时间流网络第一层卷积核学出来的样子,会发现它们大多呈现出明显的方向性,像是一组专门检测"某个方向上的运动"的滤波器。这不是随手调出来的效果,是网络自己在训练过程中学出来的,说明光流场里最有价值的信息确实就是方向性的运动模式,和RGB图像那套颜色纹理的逻辑完全不搭。

**两种数据的统计特性差异这么大,硬塞进同一个网络从头学,反而会让网络在两种信号之间"打架",谁也学不精。分开训练,让每个网络专注一种信号的特性,是更稳妥的做法。**

这就好比让一个人同时学中文和阿拉伯语的书法。这两种文字的笔画逻辑、书写方向、审美标准完全不同,如果你逼着这个人在同一堂课上、用同一套练习方法去学,效果往往是两种字都写不好。但如果分成两门课,分别请专门的老师用适合各自文字特点的方法教,学的人反而能把两种字都练扎实,最后往一起对比参考的时候,收获反而更大。双流网络的设计逻辑正是如此,分开学、最后再融合判断。

数据不够怎么办

除了架构设计,这篇论文还面对了一个实际的大麻烦:训练数据太少。

当时用于动作识别的标准数据集,比如UCF-101,总共只有约13000个视频片段,而ImageNet那种图片数据集动辄上百万张标注图片。视频数据集小,神经网络又是那种"吃数据"的模型,训练很容易过拟合,也就是模型死记硬背了训练集里的样本,换成没见过的新视频就翻车。

论文采取了几个应对策略:

第一,空间流直接借用在ImageNet上预训练好的网络参数做初始化,再在动作识别数据上微调,相当于让网络先在图片识别这个"大池子"里学会基础的视觉常识,再拿小数据集做针对性调整。

第二,在训练时做大量的数据增强,比如对图像做随机裁剪、水平翻转、色彩抖动,人为制造出更多样化的训练样本,让网络见过更多变体,减少死记硬背的空间。

第三,论文还尝试了在多个数据集上联合训练,把不同来源的动作识别数据集合并起来一起训练网络,变相扩充了数据规模。

这几个策略叠加起来,让原本因为数据量不足而受限的深度网络,总算能训练出可用的效果。

这里的处理方式让人想到一个生活场景。假设你要教一个刚学做饭的新手炒十道特色菜,但你手头能提供练习的食材只够他每道菜炒两三次。这点练习量根本不够他真正掌握火候和调味。这时候比较聪明的做法是,先让他去跟着一个经验丰富的大厨学做菜的基本功,掌握下锅时机、翻炒力度这些通用技能,然后再针对这十道特定的菜做少量但精准的专项练习。同时,每次练习的时候故意换着用不同大小、不同新鲜度的食材,逼着他适应各种变化,而不是只在最理想的条件下练习。这样即便真正用于这十道菜的练习次数不多,他掌握的技能也会比闭门死练那两三次扎实得多。双流网络面对数据不足的处理逻辑,和这套"先打基础、再精准练习、加上刻意增加变化"的思路是一致的。

实验结果说了什么

论文在几个当时主流的动作识别数据集上做了测试,最关键的是UCF-101和HMDB-51这两个数据集。

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

| 仅空间流(RGB) | 72.6% | 40.5% |

| 仅时间流(光流) | 81.0% | 54.6% |

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

| 此前最好的手工特征方法 | 87.9% | 57.2% |

这张表格里最值得琢磨的,是双流网络88.0%这个数字和此前手工特征方法87.9%的对比。看起来只差0.1个百分点,似乎没什么了不起。但这个"打平略胜"背后的意义完全不一样。手工特征方法是几年时间里一代代研究者精心设计、反复调优出来的产物,而双流网络这套架构相对简单,主要靠的是让网络自己从数据里学习特征。这是深度学习第一次在视频动作识别这个战场上,靠自动学习的方式追平甚至反超了精心设计的手工方法。

**这个时刻的分量,不亚于两年前AlexNet在图片分类上证明深度学习可行的那次突破。**

在HMDB-51这个数据集上的优势更明显一些,59.4%对57.2%,领先了2.2个百分点。HMDB-51本身是个更难的数据集,动作类别更细碎、场景更复杂,双流网络在这上面的优势说明它学到的特征确实具备了一定的泛化能力,不是单纯针对某个数据集调出来的取巧结果。

值得一提的是,Simonyan和Zisserman当时都在牛津大学视觉几何组(VGG),几个月后,同一个组的另一篇论文提出了后来家喻户晓的VGGNet,那篇论文专注于研究卷积网络的深度对图片分类效果的影响。双流网络和VGGNet算是同期的姊妹工作,一个解决视频问题,一个解决图片问题,出自同一个组的思考脉络,某种程度上反映了那个组当时对卷积网络能力边界的系统性探索。

这篇论文之后发生了什么

双流网络提出之后,后续的研究者们围绕着它的思路做了大量延伸和改进,这个方向在接下来几年里持续升温。

2015年,Feichtenhofer等人的论文研究了如何在网络中间层就把空间流和时间流的特征做卷积层面的融合,而不是等到最后才简单相加分数,这个改进让准确率进一步提升,证明了两条流之间在中间层也存在可以利用的互补信息。

2016年,Wang等人提出了TSN(Temporal Segment Networks),这篇论文解决了双流网络的一个明显短板:原始双流网络在处理长视频时,只是从视频里稀疏采样几帧或者几个光流片段来代表整个视频,信息利用效率不高。TSN把整段视频切成若干个片段,每个片段里都跑一遍双流网络,再把这些片段的结果聚合起来,这样能捕捉到长视频里跨越更长时间跨度的动作模式,在多个数据集上的准确率相比原始双流网络又有了明显提升。

再往后,3D卷积网络路线(比如I3D)开始兴起,这类方法试图用三维卷积直接对时间和空间维度一起建模,不再需要单独计算光流这个额外步骤,训练和推理效率上更有优势,某种程度上是对双流网络"分两条路走"这个设计思路的一次反思和简化。但即便到了3D卷积逐渐成为主流的阶段,双流网络"显式建模运动信息和外观信息"这个核心思想,依然被后续很多工作借鉴和延续,只是实现方式从光流计算变成了让网络自己隐式地学习运动特征。

写在后面

读这篇论文时,最触动的地方是那个第一层卷积核的可视化图。时间流网络自己学出了一组方向性滤波器,没有人告诉它"运动有方向",它是从大量光流数据里自己总结出这条规律的。这说明深度学习真正厉害的不是算力堆出来的暴力美学,而是给它对的数据形式,它能自己发现物理世界里本该存在的规律。

这篇论文里最容易被忽略但其实很关键的一点是,双流网络的成功很大程度上依赖光流这个手工设计的预处理步骤。网络学的是运动特征,但"运动"这个概念本身,是靠传统算法算出来的光流场喂给网络的,不是网络从原始像素里自己发现的。某种意义上,这依然是手工特征和深度学习的一次合作,而不是深度学习完全独立的胜利。后来3D卷积网络想绕开这一步,直接让网络从原始帧序列里学运动信息,这条路走得通不通,以及能不能比显式计算光流做得更好,其实到今天依然是个值得追问的问题。

Q&A

Q1:双流网络是什么?

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

Q2:双流网络为什么要分成两条网络而不是一个?

A:因为静态画面和运动信息这两种数据的性质差异很大,原始图像靠颜色纹理判断,而光流图靠运动方向和幅度判断,把两者塞进同一个网络训练效果反而不如分开训练再融合,实验中融合后准确率达到88.0%,远高于单独任何一条流。

Q3:双流网络之后还有哪些改进方法?

A:2015年有研究提出在网络中间层融合两条流的特征,2016年Wang等人提出TSN方法通过切分视频片段来捕捉更长时间跨度的动作信息,再往后3D卷积网络(如I3D)尝试直接用三维卷积建模时空信息,不再依赖单独计算光流这一步骤。

标签: 动作 神经网络 双流网络