你以为AI只能靠画面认人,直到有人教它靠“走路的样子“识别动作
2014年的深度学习圈子里有件事挺让人下不来台的。那一年AlexNet已经红了两年卷积神经网络在图像分类上把传统方法打得几乎没有还手之力。可换到视频动作识别这个任务上情况完全反过来了。当时最强的深度学习方法准确率只有65%左右而一个叫密集轨迹的手工特征方法能做到88%左右。差了23个百分点。这不是小差距。23个百分点意味着什么呢意味着如果你让深度学习方法和手工特征方法各看100个动作视频去分类深度学习会比手工特征多认错23次。这在当时几乎成了一个尴尬的常识深度学习能看懂图片里是猫是狗,但一到动作这种带时间维度的东西,就完全不灵光了。这篇论文的两位作者Karen Simonyan和Andrew Zisserman就是在这个背景下动手的。有意思的是这两人同一年还发表了另一篇后来大名鼎鼎的论文,VGGNet。也就是说他们一边在琢磨怎么把卷积网络做得更深更准一边在琢磨怎么让卷积网络理解视频里的动作。这两条线其实是同一个问题的两个侧面网络到底该怎么看。问题出在哪网络看得到画面看不到动作要理解这篇论文的巧思,得先搞清楚为什么当时的深度学习方法在动作识别上会输得这么惨。早期的做法很直接把视频拆成一帧一帧的图片然后扔进卷积神经网络让网络学着从图片里认出这是在打网球还是这是在游泳。问题是一张静止的图片能告诉你多少关于动作的信息一个人举着球拍站在网球场上这张照片可能是准备发球也可能是刚打完一拍也可能只是在摆拍。单张图片里挤满了背景、衣服颜色、场地信息这些东西对分类是有帮助的但它们帮的是识别场景不是识别动作。动作的本质是变化是一个东西从一个状态移动到另一个状态的过程而单张静态图片根本不包含移动这件事。**卷积网络在这个任务上表现差不是因为网络不够深而是因为喂给它的信息里根本没有运动这个维度。**这就好比你想判断一个人是不是在跑步,但只给你看他某一帧的定妆照。哪怕这张照片拍得再清楚你也很难确定他是在原地站定,还是正在冲刺。你需要看到他连续几个瞬间的姿态变化才能判断出跑这个动作。如果不给网络看运动信息网络就只能靠猜场景蒙对答案蒙对了是走运蒙错了才是常态。核心思路把运动本身单独抽出来,喂给一个专门的网络Simonyan和Zisserman的解法说出来其实挺朴素的既然单张图片里没有运动信息那就别指望网络自己从图片里学出运动直接把运动信息算出来,喂给网络。具体怎么算答案是光流。 光流*指的是视频里像素点从一帧到下一帧的移动方向和移动速度本质上是一张运动地图每个像素都带着一个箭头告诉你这个点往哪个方向动了多远。光流场不是靠网络学出来的而是靠传统的计算机视觉算法预先算好的算出来之后这张运动地图看起来就像一张彩色的、布满箭头方向信息的图片可以直接喂给卷积神经网络去学习。这个思路带来的直接后果是网络不再需要自己去猜什么叫动因为运动信息已经被显式地摆在了它面前。它只需要学习什么样的运动模式对应什么样的动作就够了。论文把这套结构叫做双流网络。 双流网络*Two-Stream Network指用两个独立的卷积神经网络一个专门处理静态画面叫空间流一个专门处理运动信息叫时间流最后把两边的判断结果加权融合得出最终答案。空间流和时间流各自训练、各自预测最后把两个网络给出的分类概率做个加权平均谁的置信度高就多听谁的意见。这个设计像什么呢想象你去看一场篮球比赛,身边坐着两个朋友,一个从来不看球只看场馆的装修风格,另一个眼睛死死盯着球员的跑动路线不看别的。散场后你问他们刚才那个进球是投篮还是扣篮看装修的朋友说不清楚因为他压根没在看动作,但他能告诉你这是在哪个体育馆,是主队还是客队的比赛。看跑动的朋友能准确说出球员起跳、出手的整个过程,但要是问他球衣颜色他可能都没注意。如果你只信一个人的判断你会经常出错但如果把两人的观察结合起来你得到的信息远比任何一个人单独给你的更完整。如果没有这种分工硬让一个网络同时兼顾场景识别和动作识别结果就是两头都学不精,这正是早期方法失败的原因。![双流网络结构图]论文里那张结构图画得很直白左边一路输入是原始的视频帧右边一路输入是提前算好的光流场两条路径完全独立地跑完各自的卷积网络最后在顶部汇合给出一个融合后的分类结果。这张图本身就在说一句话识别动作这件事得靠看画面和看运动两条腿一起走,少一条腿都走不稳。时间流具体怎么设计:光流该往前看还是往后看时间流网络的输入不是一张光流图而是连续多帧光流叠在一起的一个立体数据块。论文里试验了几种不同的输入方式。一种是直接用光流的横向和纵向分量叠成若干帧的堆栈直接喂给网络。另一种更巧妙叫做双向光流就是不仅算这一帧往后面帧的运动也算这一帧往前面帧的运动两个方向都算进去让网络看到的运动信息更完整。为什么要费这个劲算两个方向因为一个动作往往不是单向的。举个例子一次挥拍击球的动作球拍往前挥出去是一半挥出去之后的回收动作又是另一半如果光流只算未来会往哪儿动就漏掉了这个动作是怎么从哪儿来的这部分历史信息。双向光流相当于给网络补齐了运动的前因和后果而不只是当下这一瞬的趋势。实验结果证实了这个设计是有效的双向光流的版本比单向的表现更好。这不是设计者的直觉臆想而是有数据支撑的选择。这里还有一个技术细节值得说一下光流场本身是有噪声的尤其是摄像机自己在晃动或者平移的时候整张画面都会产生一种虚假的运动这种运动跟人物真正做的动作没有关系,纯粹是相机在移动导致的假象。 均值消除*论文中处理光流噪声的一个技巧做法是从光流场里减去整张图片的平均运动值相当于先把镜头晃动这个大背景的干扰减掉,剩下的才是画面里物体相对于背景真正发生的运动。这个处理有点像你在一辆行驶的火车上录视频,想拍窗外一只飞过的鸟。整个画面都在往后移动因为火车在往前开但鸟相对于火车之外的世界可能是往另一个方向飞的。如果你不把火车本身的移动减掉算法会把整块背景的移动也当成运动信息塞给网络,网络学到的可能压根不是鸟怎么飞的,而是火车开得多快。做了均值消除之后,这种背景干扰被过滤掉了留下的才是真正有意义的、相对运动的信号。如果没做这一步网络很可能在学习一堆和动作本身无关的相机抖动模式,那样训练出来的模型看着数据不错实际部署到手持拍摄的视频上就容易翻车。数据不够怎么办借用图片数据集来预训练深度学习一个绕不开的老问题是,训练数据从哪儿来。当时的视频动作识别数据集普遍偏小比如UCF-101大约有1万3千段视频覆盖101种动作类别HMDB-51则更小只有大约7000段视频、51种动作。跟同期图像分类动辄上百万张图片的规模比,这个数据量对于训练一个深层卷积网络来说是相当吃紧的,很容易过拟合,也就是网络把训练集背得很熟但换到没见过的新视频上就表现很差。 过拟合*指模型在训练数据上表现很好但因为训练数据太少或模型太复杂导致模型学到了很多训练集里的特殊细节而不是具有普遍意义的规律一旦换成新数据表现就大幅下降。论文的应对策略是先用ImageNet这个超大规模的图片分类数据集把空间流网络预先训练一遍让网络先学会基础的视觉特征识别能力然后再拿动作识别的视频数据去微调这个已经训练好的网络。这个做法背后的逻辑是识别这是一只狗和识别这个人在打网球这两件事在最底层的视觉处理上是有共通之处的,比如识别边缘、颜色、纹理这些基础视觉特征是通用的不需要为每个任务从零学起。这就像你想培养一个能看懂足球比赛战术的解说员如果你直接找一个完全没看过体育比赛的人,让他光靠看几十场足球赛的录像就总结出战术门道效果大概不会太好,因为样本量太小。但如果这个人本来就是资深体育迷,看过成千上万场各种球类比赛积累了大量关于跑位、配合、节奏这些通用体育概念的理解那么只需要再看几十场足球赛他很快就能领悟足球特有的战术细节。预训练干的就是这件事先在海量的通用视觉数据上打好基础再用相对少量的目标数据做针对性调整。如果没有预训练这一步直接用视频数据集从零训练模型很容易因为数据量不足而学得很差这也是论文里空间流网络单独测试时准确率明显偏低的一个原因。融合的方式不是简单相加,而是加权甚至用支持向量机来决定怎么融合两条流各自算出一个分类概率之后,怎么把它们合并成一个最终答案论文里试了两种方式。一种是直接对两条流的输出概率取平均另一种更精细,是把两条流的输出结果作为特征另外训练一个支持向量机分类器来学习该怎样加权融合。 支持向量机*一种经典的机器学习分类算法简单说就是找一个最优的分界线或分界面把不同类别的数据尽可能清晰地分开。结果是用支持向量机做融合的效果比简单平均更好。这说明两条流对不同类型动作的判断可靠程度是不一样的有些动作光靠画面就能猜得八九不离十,比如识别游泳泳池和泳衣这些场景线索就很有用,但有些动作比如区分扔飞盘和扔棒球光靠背景画面很难分辨,这时候运动轨迹的信息就更关键。让一个额外的分类器去学习什么情况下该多信空间流,什么情况下该多信时间流比死板地各打五十分要聪明得多。实验结果说话双流网络到底提升了多少论文在两个主流数据集上做了测试UCF-101和HMDB-51。| 方法 | UCF-101准确率 | HMDB-51准确率 ||---|---|---|| 单独空间流仅用静态画面 | 73.0% | 40.5% || 单独时间流仅用光流 | 83.7% | 54.6% || **双流网络融合后** | **88.0%** | **59.4%** || 同期最强手工特征方法 | 87.9% | 61.1% |这组数字讲了一个很清楚的故事。单独看空间流UCF-101上只有73%这跟前面说的单张图片信息不够的判断完全吻合。单独看时间流直接跳到83.7%说明运动信息本身对识别动作的贡献比单纯的画面信息大得多。两者融合之后到88%比单独任何一条流都高证明这两种信息确实是互补的,不是重复的。而更关键的一点是双流网络在UCF-101上的88%第一次让深度学习方法追平甚至反超了手工设计的特征方法。这是一个历史节点,深度学习在视频动作识别这个具体任务上,第一次不再是那个被传统方法按在地上打的角色。这句话放在2014年的语境里,分量不亚于两年前AlexNet在图像分类上掀起的那场风暴。区别是,这次深度学习没有靠更深的网络、更多的数据硬碰硬地取胜,而是靠一个更聪明的输入设计,让网络看到了它之前压根看不到的信息维度。后续影响这条思路怎么被一步步接着往前推双流网络这个框架发表之后,很快成了视频理解领域好几年里的标准范式,后续一大批工作都是在这个基础上做改进。2016年Feichtenhofer等人发表了一篇论文提出了更好的时空融合方式让空间流和时间流不再是训练完之后简单相加,而是在网络中间层就开始交互融合这个方法进一步把UCF-101上的准确率往上推了几个点。2017年DeepMind的Carreira和Zisserman对还是同一个Zisserman发表了I3D网络的论文把双流网络里的2D卷积换成了3D卷积直接在时间维度上做卷积运算同时提出了一个规模远超以往的动作识别数据集Kinetics用这个更大规模的数据集做预训练之后模型的表现又有了明显提升。这篇论文可以看作双流思路的一次升级,它保留了两条流处理不同信息的核心框架但把光流这种手工计算的运动特征,换成了让网络自己通过3D卷积直接从视频里学运动模式。这两个后续工作说明了一件事双流网络提出的分开处理静态信息和运动信息再融合这个思路本身经受住了时间的考验,后来者不断在优化的是怎么算运动信息怎么融合这两个具体环节但骨架没有变。写在后面读这篇论文的时候我一直在想一个问题为什么把光流单独算出来喂给网络这个想法在当时算是巧思,而不是显而易见的做法。后来想明白了深度学习那几年的主流信仰是让网络自己从原始数据里学一切人工去设计特征输入某种程度上是和这个信仰唱反调的。双流网络的成功其实是一次务实的妥协,先承认端到端学习在数据不够、任务特殊的情况下有短板,再用传统方法的强项去补这个短板。这种先认输再想办法的态度,可能比死磕纯端到端更值得学。论文里还有一个细节我觉得值得单独提一句,双向光流比单向光流效果好这件事,其实暗示了一个更普遍的道理理解一个动态过程,光看它将要发生什么不够,还得看它是怎么发生的。这跟很多领域的诊断逻辑是相通的。QAQ1双流网络是什么A双流网络是2014年Simonyan和Zisserman提出的一种视频动作识别方法用两个独立的卷积神经网络分别处理静态画面空间流和光流运动信息时间流最后融合两边的判断结果第一次让深度学习方法在视频动作识别任务上追平甚至超过了手工特征方法。Q2双流网络为什么要单独处理光流信息A因为单张静态图片里根本不包含运动信息网络光靠画面很难判断动作只能靠场景蒙猜。把光流场记录像素运动方向和速度的运动地图预先算好再喂给专门的网络能让网络直接学习运动模式和动作类别之间的关系大幅提升识别准确率。Q3双流网络的效果具体提升了多少A在UCF-101数据集上单独用空间流准确率是73%单独用时间流是83.7%两者融合后达到88%首次追平同期最强的手工特征方法87.9%是深度学习在这个任务上的历史性突破。

相关新闻

OfficeCLI 分节实战指南:用 section 命令掌控 Word 多栏、脚注、行号与页面布局

OfficeCLI 分节实战指南:用 section 命令掌控 Word 多栏、脚注、行号与页面布局

OfficeCLI 分节实战指南:用 section 命令掌控 Word 多栏、脚注、行号与页面布局 【免费下载链接】OfficeCLI OfficeCLI 是首款也是最佳的专为 AI 代理设计的命令行工具,可用于读取、编辑和自动化处理 Word、Excel 和 PowerPoint 文件。它免费、开源&…

2026/9/19 22:34:10 阅读更多 →
BrewUI:为Homebrew打造可视化面板,让包管理更直观

BrewUI:为Homebrew打造可视化面板,让包管理更直观

BrewUI:给终端党的Homebrew配上一块可视化面板干了这么多年 macOS 开发,我见过太多程序员在终端里敲brew install敲得行云流水,也见过太多刚入门的朋友因为一条brew update卡住就手足无措。Homebrew 是 macOS 上最核心的包管理器,…

2026/9/19 22:34:10 阅读更多 →
BrewUI体验:为Homebrew包管理打造的可视化仪表盘

BrewUI体验:为Homebrew包管理打造的可视化仪表盘

说实话,最早看到BrewUI这个项目的时候,我内心是有点不屑的。Homebrew这套包管理工具,从入行第一天就是跟终端打交道的,brew install、brew upgrade、brew list这些命令早就在我肌肉记忆里了,一个命令能解决的事为什么要…

2026/9/21 1:23:54 阅读更多 →

最新新闻

逆向必学:PE文件结构核心字段与加壳脱壳实战解析

逆向必学:PE文件结构核心字段与加壳脱壳实战解析

简介:这份PE文件结构详解PDF对照《加密与破解》第十章,系统梳理Windows下exe、dll、sys等可执行文件的格式规范,适合逆向工程、软件安全、病毒分析初学者,也适合备考事业单位计算机岗位的读者夯实底层基础,还可作为高校…

2026/9/21 2:02:05 阅读更多 →
UL 60950-22户外设备认证指南:从适用边界到测试要点

UL 60950-22户外设备认证指南:从适用边界到测试要点

简介:UL 60950-22:2017 第二版标准PDF,专注于信息技术设备户外安装的安全规范,面向产品安全工程师、认证测试人员及户外设备研发人员。该标准整合了IEC 60950-22第二版的技术内容,针对户外环境下的防水防尘、电气安全、机械结构强…

2026/9/21 2:02:05 阅读更多 →
工业智能体落地指南:从概念、架构到实践路径与趋势

工业智能体落地指南:从概念、架构到实践路径与趋势

简介:这份《2025工业智能体应用现状与趋势展望报告》面向制造业决策者、数字化转型负责人及工业AI研究人员,系统梳理了工业智能体的概念定义、设备级到集团级的五大层级类型、应用现状与未来趋势。报告基于对汽车制造、高端装备等六大重点行业127家企业的…

2026/9/21 2:02:05 阅读更多 →
3DES源代码全解析:加解密实现、CBC模式与踩坑指南

3DES源代码全解析:加解密实现、CBC模式与踩坑指南

简介:3DES源代码包面向信息安全与密码学学习者,提供加密与解密的完整实现,可直接用于理解三重DES算法的工作流程。资源共11个文件,核心为main.cpp源程序,并配有可执行exe、C工程配置文件(cbp/layout/depend…

2026/9/21 2:02:05 阅读更多 →
大模型入门指南:从零开始的技术路线与实战经验

大模型入门指南:从零开始的技术路线与实战经验

1. 大模型转行指南:从零开始的认知重塑去年夏天,我偶然在GitHub上看到一个用Stable Diffusion生成动漫头像的项目,当时完全看不懂那些术语——transformer、LoRA、prompt engineering...但正是这种"看不懂"激发了我的好奇心。三个月…

2026/9/21 2:02:05 阅读更多 →
SpringBoot三层架构实战:从零实现用户管理系统

SpringBoot三层架构实战:从零实现用户管理系统

1. 项目概述:SpringBoot三层架构实战刚入行Java开发时,总听前辈们念叨"三层架构",但真正自己动手实现一个完整的用户管理系统才发现,理论到实践之间藏着不少门道。这次就用SpringBoot从零实现带三层架构的用户增删改查&…

2026/9/21 2:01:05 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →