微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

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

首页 深度学习曾经打不过一个手工特征,直到这篇论文出现

深度学习曾经打不过一个手工特征,直到这篇论文出现

2026-10-14 14:03
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-10-14 14:03 • 科技行者

2014年之前,如果你去问任何一个做计算机视觉的研究者,怎么让机器认出视频里的人在跳舞还是在跑步,几乎没人会说用深度学习。

这听起来有点反常。要知道,就在两年前,AlexNet已经在图像识别上证明了卷积神经网络的实力,整个学界都在往深度学习转向。但视频动作识别是个例外,一个顽固的例外。

当时最强的方法叫做密集轨迹

密集轨迹*:一种手工设计的视频特征提取方法,通过跟踪视频里密集分布的像素点的运动轨迹,再结合梯度和光流信息统计出动作特征,不依赖神经网络学习。

密集轨迹在UCF101这样的动作识别数据集上能做到88%左右的准确率,而当时能找到的最好的深度学习方案,准确率只有可怜的63%左右。这中间差了20多个百分点。

20个百分点的差距意味着什么?意味着每5个动作视频里,深度学习方法就要比手工方法多认错1个还不止。这不是小差距,这是完全不在一个量级上的差距。放在今天,如果哪个新模型比现有最强方法差20个点,基本不会有人拿它当正经研究成果发表。

这就是Karen Simonyan和Andrew Zisserman在2014年面对的局面。他们俩来自牛津大学的VGG实验室,几个月后他们又发了另一篇让整个视觉圈震动的论文,就是提出VGGNet的那篇。这两篇论文几乎是同期完成的工作,一篇在解决图像分类的网络深度问题,另一篇在解决视频动作识别里深度学习为什么打不过手工特征的问题。

静止的一帧图看不出动作,那就别只看一帧

先说说这个问题到底难在哪。

你随便截取一段跑步视频里的一帧画面,让人来看,很可能猜不出这个人是在跑步还是刚站起来准备走路。人体的姿势在单帧图像里确实提供了一些线索,比如腿是抬着的还是着地的,但动作的本质是随时间变化的过程,不是某个瞬间的姿态。

之前的深度学习方法几乎都在犯同一个错误,就是把视频当成一堆独立的图片来处理,用卷积神经网络提取每一帧的特征,然后简单地把结果平均或者投票拼起来。这种做法完全没有捕捉到运动本身的信息,只是在做"连续的图像分类",而不是"动作识别"。

这就好比你想判断一个人是不是在跳绳,如果只给你看几张随机抽出来的照片,你可能看到的是"人站着""人跳起来""人落地"这样几个孤立瞬间,你很难从这几张静态照片里确认这到底是跳绳还是原地起跳还是被人推了一下。真正能让你确定答案的,是这些瞬间之间的连贯运动关系,是脚离地又落地的那个轨迹和节奏。如果不引入这种运动信息,无论单帧图片分析得多精细,都是隔着一层纱看世界。

两条流一起看,一条看长相一条看动作

Simonyan和Zisserman的解决思路说起来不复杂,复杂的是他们把这个思路做成了真正能落地生根的架构。

他们提出的方法叫做双流卷积网络

双流卷积网络*:由两个独立的卷积神经网络组成的架构,一条叫空间流负责处理单帧RGB图像来识别场景和物体外观,另一条叫时间流负责处理光流场来捕捉运动信息,最后把两条流的预测结果融合起来做最终判断。

空间流其实好理解,它处理的是普通的RGB图像,作用是识别画面里有什么,比如场地、器械、人的外观特征。这部分和普通的图像分类网络没有本质区别。

真正的巧思在时间流上。时间流不直接吃视频帧,而是吃光流场。

光流场*:描述视频中相邻两帧之间每个像素点运动方向和运动幅度的一种表示方法,通常用两张图分别表示水平方向和垂直方向的位移量。

也就是说,研究者提前用传统算法把视频里连续帧之间的像素运动计算出来,变成一种"运动地图",再把这张运动地图喂给一个独立的卷积网络去学习。这个网络看到的不是"这个人穿什么衣服在什么场景里",而是"这个像素往哪个方向动了多远"。

这个设计的高明之处在于,它把"识别是什么"和"识别怎么动"这两件事彻底拆开,分别用两个专门的网络去解决,最后再把两边的判断结果加权融合。

这就像你请两个专家一起看一段监控录像来判断可疑行为。一个专家专门看画面里出现了什么人、什么物品、什么场景,另一个专家什么都不看,只盯着一张由计算机生成的运动轨迹图,专门判断动作的节奏和方向是否可疑。两个人各自给出判断,最后综合两人的意见做决定。如果只让第一个专家单独判断,他可能会因为背景像案发现场就草率下结论,忽略了动作本身其实很正常;如果只让第二个专家判断,他完全不知道背景是商场还是仓库,可能把正常的挥手误判成异常行为。两个人配合,才能弥补各自的信息盲区。

论文里的实验数据直接验证了这个设计的价值。

如果只用空间流,也就是只看普通图像不看运动信息,在UCF101上的准确率是72.6%。这已经比之前很多深度学习方法好了不少,但离密集轨迹的88%还差了15个百分点。

如果只用时间流,也就是只看光流不看图像内容,准确率反而达到了83.7%,比单独用空间流还高出11个百分点。

这个结果本身就很说明问题。运动信息对动作识别的贡献比外观信息更大,这也解释了为什么之前那些只处理单帧图片的深度学习方法会那么差,它们其实是在用错误的信息源做一件需要运动信息才能做好的事。

而当两条流结合起来,准确率跳到了88.0%,第一次真正追平了密集轨迹这个手工特征方法的天花板。

数据太少怎么办,借别的数据集练手

除了双流架构本身,这篇论文还解决了另一个现实问题,就是训练数据不够用。

当时的动作识别数据集普遍偏小,UCF101虽然名字里带101个类别,但每类视频数量有限,用这么小的数据量去训练一个深层卷积网络,很容易出现过拟合

过拟合*:模型在训练数据上表现很好,但在没见过的新数据上表现很差的现象,通常是因为训练数据太少或模型记住了细节而没学到规律。

Simonyan和Zisserman的解决办法是引入多任务学习,让网络同时在两个数据集上训练,一个是UCF101,另一个是当时另一个规模更大的动作识别数据集HMDB51。网络共享大部分参数,只在最后针对不同数据集设置独立的分类输出层。

这个做法的逻辑是,尽管两个数据集的类别标签体系不完全一样,但它们背后需要识别的底层运动模式是相通的,跑步的光流特征在这个数据集和那个数据集里应该长得差不多。让网络同时从两份数据里学习,相当于变相扩大了训练数据的规模,减轻了单一数据集数据量不足带来的过拟合风险。

这有点像一个学厨师的学徒,如果只在一家川菜馆学徒,接触到的食材和手法有限,可能学得比较片面,容易在遇到没见过的菜时手忙脚乱。但如果让他同时在川菜馆和粤菜馆轮流学习,虽然两家馆子做的菜完全不同,但刀工、火候控制这些基本功是通用的,两边的训练会互相强化这些底层技能,最终无论去哪家馆子做菜,基本功都更扎实。如果不这样做,只靠一份小数据硬训,模型很容易学到一些数据集里的偶然噪声当成规律,遇到新视频就露馅。

多任务训练之后,在HMDB51上的准确率也提升到了59.4%,相比之前的方法有明显进步。

下面是论文里几个关键结果的对比:

| 方法 | UCF101准确率 |

|---|---|

| 密集轨迹(手工特征) | 88.0% |

| 单独空间流 | 72.6% |

| 单独时间流 | 83.7% |

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

这张表最直观地说明了一件事,深度学习不是靠单一网络硬碰硬打赢了手工特征,而是靠拆解问题、分而治之的架构设计追平了手工特征。这在当时是个标志性的时刻,某种意义上不亚于AlexNet在图像分类上的突破,因为它第一次证明了深度学习在视频领域也能不输给经过多年打磨的手工方法。

后来的人怎么接着往下做

这篇论文之后,双流的思路被无数后续工作继续发展。

2016年,Feichtenhofer等人发表的工作提出了更精细的时空融合方式,探索在网络的不同层就把空间流和时间流的信息融合起来,而不是等到最后一步才融合,这在多个数据集上把准确率又往上推了一截。

2017年,DeepMind团队提出的I3D模型把双流网络的思路和三维卷积结合起来,直接用能处理时间维度的三维卷积网络代替原来的二维卷积网络分别处理RGB和光流,同时借助Kinetics这个更大规模的视频数据集做预训练,把动作识别的准确率推到了新的高度,在UCF101上超过95%。这项工作也彻底证明了双流架构里"分别处理外观和运动信息"这个核心思想的持久生命力,即便主干网络从二维换成了三维,这个基本框架依然有效。

再往后,时间流依赖预先计算光流这件事本身也被质疑和改进,因为计算光流本身开销不小,而且限制了模型端到端训练的灵活性,一些后续研究开始尝试让网络自己学习运动表示,不再依赖传统光流算法作为中间步骤,这也是这篇论文留下的一个尚未彻底解决的问题。

写在后面

读这篇论文的时候,最触动我的其实不是双流架构本身的巧妙,而是那个83.7%和72.6%的对比。单独用光流的效果反而比单独用图像的效果好这么多,这在直觉上是有点反常的,我们平时判断一个动作,第一反应往往是"看这个人的姿势像不像跑步",而不是去想象一张抽象的运动矢量图。但数据摆在那里,运动信息确实比外观信息更本质地决定了这是什么动作。

这多少提醒我们一件事,有时候我们以为最重要的信息,其实只是最容易被观察到的信息,而不是最有效的信息。视觉上最显眼的东西未必是判断问题的关键变量,这个道理放在动作识别之外的很多场景里似乎也说得通。

另外一个值得留意的细节是,这篇论文没有去发明一种全新的更强的神经网络结构,用的还是当时比较标准的卷积网络设计,真正的创新完全落在了"怎么把问题拆开、怎么把不同来源的信息喂给合适的子网络"这个架构层面的思考上。有时候突破不来自更复杂的模型,而来自更清醒地想明白问题到底需要什么样的输入。

那么下一个问题是,如果运动信息比外观信息更重要,为什么后来的模型没有彻底抛弃RGB图像,只用运动信息去做动作识别?

Q&A

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

A:双流卷积网络是Simonyan和Zisserman在2014年提出的视频动作识别方法,用两个独立的卷积神经网络分别处理RGB图像和光流场,再融合两者的预测结果,第一次让深度学习在动作识别准确率上追平了手工特征方法密集轨迹。

Q2:为什么只看视频里的单帧图像识别不出动作?

A:因为动作的本质是随时间变化的运动过程,单张静态图片只能捕捉到某个瞬间的姿态,缺少连贯的运动信息,很容易把不同的动作混淆,比如很难区分跳绳和原地起跳。

Q3:双流网络里的时间流为什么比空间流效果更好?

A:论文实验显示,单独用时间流(处理光流场)的准确率是83.7%,比单独用空间流(处理RGB图像)的72.6%高出11个百分点,说明运动信息对判断动作类型的贡献比外观信息更大。

分享至
0赞

好文章,需要你的鼓励

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