ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

两个视频流打架,双流网络怎么让它们和解

两个视频流打架,双流网络怎么让它们和解 2014年发生了一件挺让人意外的事。深度学习那时候已经在图像识别上打得手工特征方法节节败退AlexNet在2012年一战成名之后卷积神经网络几乎成了视觉任务的标配答案。但奇怪的是到了视频动作识别这个领域深度学习却一直打不过一个叫做密集轨迹的老派方法。不是打不过一点点。**在当时最权威的UCF-101数据集上手工特征方法的准确率能达到85%以上而深度学习方法只能在70%上下打转。**十五个百分点的差距这在机器学习圈子里几乎是鸿沟级别的差距。要知道同一时期图像分类领域深度学习已经把传统方法甩开了一大截怎么到了视频这里反而掉链子了这就是Karen Simonyan和Andrew Zisserman在2014年发表那篇论文时面对的局面。他们俩来自牛津大学的VGG研究组没错就是那个几个月后发布了VGGNet、后来成为图像分类标准架构之一的团队。两篇论文差不多是同期的工作一篇解决图片一篇解决视频出自同一批人手上这个巧合本身就挺有意思。视频比图片难在哪要理解这篇论文的贡献得先搞清楚视频识别到底比图片识别难在哪个地方。图片识别本质上是个静态问题一张照片里有什么东西神经网络看纹理、看形状、看颜色分布就能给出答案。但视频不一样视频的核心信息藏在时间维度里。一个人站着不动和一个人正在挥拳如果只看单帧画面两张图可能长得差不多。真正区分站立和挥拳的信息藏在这一帧和下一帧之间发生了什么变化。 光流*描述图像中像素点在连续帧之间移动方向和速度的一种表示方法简单说就是把什么东西往哪儿动了这件事用图像的形式画出来。早期研究者试过直接把好几帧图像堆叠起来扔给卷积网络让网络自己去学时间信息。结果并不理想网络学到的运动信息很浅甚至不如手工设计的轨迹特征。问题出在哪卷积网络天生擅长的是空间模式识别边缘、纹理、局部结构,这些东西训练起来得心应手。但要让同一套网络参数同时兼顾这是什么和这个东西怎么动两件事网络会很纠结学出来的特征两头不到岸。双流网络把两件事分给两个人干Simonyan和Zisserman想的办法说起来挺朴素但效果拔群。**既然一个网络同时学外观和运动会顾此失彼那就干脆用两个独立的网络一个专门看外观,一个专门看运动,最后把两边的判断结果加权融合起来。**这就是论文标题里双流的意思。 双流网络*由两个各自独立训练的卷积神经网络组成的架构一路叫空间流处理单帧的静态图像信息另一路叫时间流处理连续帧之间的光流信息两路网络最后做分数融合得出最终判断。空间流这一路很好理解,把视频里随便抽出的一帧当成普通图片扔进卷积网络让它去判断这张图里有什么背景是什么场景物体的形状颜色是什么样。这一路的网络结构基本照搬了当时图像分类领域已经验证过的架构。时间流是这篇论文真正的创新点。这一路网络不看原始画面,它看的是连续多帧之间算出来的光流场。具体做法是取相邻的几帧论文里用的是10帧两两之间算出水平和垂直方向的位移量堆叠成一个多通道的运动图像喂给另一个卷积网络去学习。这里有个很关键的设计选择。研究者没有让网络直接吃原始视频帧去学运动而是先用传统的光流算法把运动信息提取出来再交给网络处理。这等于是把如何检测运动这个子问题提前用成熟的经典算法解决掉网络只需要在光流的基础上学会什么样的运动模式对应什么动作。这就好比你要教一个新手厨师做菜你有两个选择。一种是把生鲜食材直接扔给他让他自己去学怎么切配处理再炒制,这个过程漫长且容易学出一堆坏习惯。另一种是先让专业的备菜师傅把食材洗净切好装盘,厨师只需要专注学炒制的火候和调味。双流网络里的时间流走的就是第二条路,先用光流算法完成备菜这道预处理工序,卷积网络只需要专心学这个动作模式意味着什么。如果不做这层预处理直接让网络从原始像素里挖运动规律结果会退化成前面说的那种效果不佳的堆叠帧方案网络会被空间纹理信息带偏很难专注学到干净的时间动态。论文里还有个细节值得单独说一下。研究者发现仅仅给网络看瞬时的光流帧对也就是任意两帧之间的位移效果不如给网络看一小段时间窗口内累积起来的光流轨迹。他们把这种改进叫做轨迹叠加本质上是让网络能看到更长时间尺度上的运动连贯性而不只是相邻两帧的瞬间抽动。这个细节反映出一个道理动作识别真正依赖的不是单一时刻的速度而是一段时间里动作展开的整体轨迹。融合的方式谁说了算两路网络各自给出预测结果之后,怎么把这两个结果合并成最终答案论文尝试了两种融合策略,一种是直接对两路网络输出的分类分数做加权平均,另一种是训练一个支持向量机把两路的分数当成新的输入特征再做一次分类。实验结果显示,用支持向量机做融合的效果略好一些,但差距不算特别悬殊。这说明两路网络本身给出的信息已经足够互补,融合方式的选择只是锦上添花,真正决定性能的是分开学习再融合这个大框架本身。**实验数据非常直接地证明了双流架构的价值如果只用空间流单独跑UCF-101上的准确率是73%如果只用时间流单独跑准确率是83.7%而两者融合之后准确率跳到了88.0%。**这组数字挺耐人寻味。单独看时间流比空间流表现更好这本身已经推翻了很多人过去的直觉,大家一般认为这是什么东西比这东西怎么动更重要但在动作识别任务里运动信息本身的判别力反而更强。而两路结合之后又比单独任何一路都高出至少4个百分点说明外观信息和运动信息确实提供了彼此都覆盖不到的判别线索谁也不能替代谁。如果只依赖外观信息会怎样想象一段视频里一个人张开双臂,如果没有运动信息模型很难分清这是拥抱还是做体操张开手臂,背景和人的外观可能极其相似唯一能区分的就是接下来手臂往哪个方向移动、移动速度多快。这也解释了为什么时间流单独跑的分数会比空间流高,因为很多动作类别在静态画面上根本没法区分,动作的本质就写在运动本身里。数据不够怎么办迁移学习登场深度学习有个众所周知的软肋,数据量不够时很容易过拟合。而当时可用的视频动作识别数据集规模都不大,UCF-101满打满算也就一万多个片段,这对于训练一个深层卷积网络来说是远远不够的。研究者用了一个当时已经在图像领域证明有效的招数,迁移学习。 迁移学习*先在数据量庞大的任务上训练一个网络再把训练好的参数拿到数据量较小的目标任务上继续微调利用大数据集学到的通用特征来弥补小数据集的不足。空间流网络的做法是先在ImageNet这个包含上百万张标注图片的大型图像数据库上预训练再用视频动作数据集做微调。这个思路顺理成章因为空间流处理的就是普通的静态图像ImageNet的图像知识天然可以迁移过来。时间流没法直接用ImageNet预训练因为光流图像和普通照片长得完全不一样。研究者的解决办法是把不同的视频动作数据集混合起来一起训练用数据集之间的互补性来扩充有效训练样本量。他们还用了一些数据增强手段比如对训练样本做裁剪和镜像翻转人为制造出更多变体来喂给网络。这套组合拳打下来效果立竿见影。用了预训练之后空间流网络的准确率从没有预训练时的直接训练结果大幅提升证明了在小数据集上借用别处学到的知识确实能顶大用。这就跟一个刚毕业没什么工作经验的新人去应聘如果他在校期间做过大量相关的实习和项目积累了通用技能上岗后适应新岗位的速度肯定比一个完全零经验的人快得多。如果没有这层预训练铺底直接拿小数据集从零开始训练深层网络很可能网络还没学会什么有效的特征就已经把训练数据背得滚瓜烂熟遇到新样本立马露怯。历史节点上的意义这篇论文发表的时间点2014年放在整个深度学习发展史里看是个值得标出来的坐标。在这篇论文之前深度学习在图像分类上已经证明了自己但在视频这个更复杂的时空联合任务上一直是传统手工特征方法说了算最典型的代表就是密集轨迹特征方法它通过追踪视频里密集分布的关键点轨迹手工设计描述子来刻画运动模式在很长一段时间里是这个领域的性能标杆。**双流网络的88.0%准确率是深度学习方法第一次在标准的大规模视频动作识别基准上超越了当时最好的手工特征方法。**这句话放在2014年的语境里分量不亚于两年前AlexNet在图像分类上一战成名的那个瞬间。区别只是这次的战场从静态图片换成了动态视频胜负逆转来得晚了两年但终究还是逆转了。这个突破没有停在原地。三年后Carreira和Zisserman还是同一个人在2017年提出了I3D网络把双流网络里的二维卷积升级成三维卷积让网络能够直接在三维时空体块上做卷积运算不再需要显式计算光流这套架构在Kinetics数据集上把准确率又往上推了一大截。稍晚一些Feichtenhofer等人在2016年提出了时空残差网络的改进方案把空间流和时间流之间加入了跨流的信息交互机制让两路网络在训练过程中就能互相借力而不是等到最后一步才简单地做分数融合。这两个后续工作一个解决了双流网络依赖手工光流计算的效率瓶颈另一个解决了双流网络两路信息交流太晚的局限都是站在双流网络这个原始框架上做的针对性改良。写在后面读这篇论文最触动我的地方不是双流网络这个架构本身有多精巧而是那组时间流单独跑比空间流单独跑还要高10个百分点的实验数据。这个结果某种程度上颠覆了一种朴素的直觉很多人下意识觉得识别出画面里有什么应该是识别这是什么动作的前提和基础,但实际情况是,运动信息本身就足够强大甚至比静态外观更能直接命中动作分类的答案。这让我想起认知科学里的一个说法,人眼视觉系统里专门存在处理运动信息的通路跟处理静态形状颜色的通路是分开的两条通路在大脑皮层的不同区域加工后再汇总整合。双流网络的架构某种意义上是无意中复现了这个生物学上早就存在的分工模式先各自独立处理再统一整合。研究者未必是刻意模仿视觉神经科学但殊途同归这件事本身挺值得琢磨。这篇论文也留下一个没解决的问题。双流网络里空间流和时间流从头到尾都是分开训练的两者只在最后一步做分数融合这意味着网络在学习过程中完全没有机会让两种信息互相校正互相启发。后来的工作已经开始往这个方向修补但如果两条通路能在训练的早期阶段就开始对话会不会学到更精细的联合表示这个问题在当年是留白后来的研究者们花了不少功夫去填这个坑而这条填坑之路本身可能比双流网络这个起点还要精彩。QAQ1双流网络是什么A双流网络是2014年由Simonyan和Zisserman提出的视频动作识别架构由两个独立的卷积神经网络组成一个处理单帧静态图像空间流一个处理连续帧之间的光流信息时间流最后融合两路预测结果得出动作分类答案。Q2双流网络为什么能超过传统手工特征方法A因为它把识别外观和识别运动这两个不同性质的任务分给两个专门的网络分别处理避免了单一网络顾此失彼的问题最终在UCF-101数据集上达到88.0%的准确率首次超越了当时最强的密集轨迹手工特征方法。Q3时间流为什么要用光流而不是直接用原始视频帧A因为直接让网络从原始像素里学运动规律容易被空间纹理信息带偏效果不佳。先用传统光流算法提取出干净的运动信息网络只需要专注学习运动模式和动作类别的对应关系这样效果明显更好。
返回列表