zoukankan      html  css  js  c++  java
  • 斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    以作备份,来源http://jiasuhui.com/archives/178954

    斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    本文由“新智元”(微信ID:AI_era)编译,来源:dawn.cs.stanford.edu,编译:刘小芹

    斯坦福大学的新研究构建一个名为 NoScope 的深度学习视频对象检测系统,利用视频的局部性对 CNN 模型进行优化,相比当前性能最好的 YOLOv2 或 Faster R-CNN 速度加快了1000倍,同时仍保持高精度。这一系统在安防、交通等领域有着巨大的应用价值和潜力。

    视频数据正在爆炸性地增长——仅英国就有超过400万个CCTV监控摄像头,用户每分钟上传到 YouTube 上的视频超过300小时。深度学习的最新进展已经能够自动分析这些海量的视频数据,让我们得以检索到感兴趣的事物,检测到异常和异常事件,以及筛选出不会有人看的视频的生命周期。但是,这些深度学习方法在计算上是非常昂贵的:当前 state-of-the-art 的目标检测方法是在最先进的NVIDIA P100 GPU上以每秒10-80帧的速度运行的。这对单个视频来说还好,但对于大规模实际部署的视频来说,这是难以维持的。具体来说,假如用这样的方法来实时分析英国所有的CCTV监控视频,仅在硬件上就得花费超过50亿美元。

    为了解决视频增长速度与分析成本之间的巨大差距,我们构建了一个名为 NoScope 的系统,与目前的方法相比,它处理视频内容的速度要快数千倍。我们的主要想法是,视频是高度冗余的,包含大量的时间局部性(即时间上的相似性)和空间局部性(即场景中的相似性)。为了利用这种局部性,我们设计了用于高效处理视频输入任务的 NoScope。通过利用一系列利用视频局部性的优化,显著降低了在每个帧上的计算量,同时仍保持常规检索的高精度。

    本文将介绍NoScope优化的一个示例,并描述NoScope如何在模型级联中端到端地堆叠它们,以获得倍增的加速——在现实部署的网络摄像机上可提速1000倍。

    一个典型例子

    试想一下,我们想检索下面的监控摄像头拍摄的视频,以确定公交车在什么时候经过台北的某个交叉路口(例如,用于交通分析):

    斯坦福新深度学习系统 NoScope:视频对象检测快1000倍斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    台北某个交叉路口的两个视频片段

    那么,当前最好的视觉模型是如何处理这个问题的呢?我们可以运行 YOLOv2 或Faster R-CNN 之类的用于对象检测的卷积神经网络(CNN),通过在视频的每个帧上运行CNN来检测公交车:

    斯坦福新深度学习系统 NoScope:视频对象检测快1000倍斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    使用YOLOv2标记的交叉路口片段

    这种方法工作得很好,尤其是如果我们使视频中出现的标签流畅的话,那么问题出现在哪里呢?就是这些模型非常昂贵。这些模型的运行速度是每秒10-80帧,这对监控单个视频输入来说还好,但如果要处理上千个视频输入的话,效果并不好。

    机会:视频中的局部性

    为了提高检索的效率,我们应该看视频内容本身的性质。具体来说,视频的内容是非常冗余性的。让我们回到台北的街道监控视频,看一下以下一些出现公交车的帧:

    斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    从这个视频影像的角度看,这些公交车看起来是非常相似的,我们称这种局部(locality)形式为场景特定的局部性(scene-specific locality),因为在视频影像中,对象之间看起来并没有很大的不同(例如,与另一个角度的摄像头相比)。

    此外,从这个监控视频中,很容易看出,即使公交车正在移动,每一个帧之间都没有太大的变化:

    斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    我们将这种特征称为时间局部性(temporal locality),因为时间点附近的帧看起来相似,并且包含相似的内容。

    NoScope:利用局部性

    为了利用上面观察到的特征,我们构建了一个名为 NoScope 的检索引擎,可以大大加快视频分析检索的速度。给定一个视频输入(或一组输入),一个(或一组)要检测的对象(例如,“在台北的监控视频影像中查找包含公交车的帧”),以及一个目标CNN(例如,YOLOv2),NoScope 输出的帧与YOLOv2的一致。但是NoScope 比输入CNN要快许多:它可以在可能的时候运行一系列利用局部性的更便宜的模型,而不是简单地运行成本更高的目标CNN。下面,我们描述了两类成本较低的模型:专门针对给定的视频内容(feed)和要检测的对象(以利用场景特定局部性)的模型,以及检测差异(以利用时间局部性)的模型。

    这些模型端到端地堆叠,比原来的CNN要快1000倍。

    利用场景特定局部性

    NoScope 使用专用模型来利用场景特定局部性,或训练来从特定视频内容的角度检测特定对象的快速模型。如今的CNN已经能够识别各种各样的物体,例如猫、滑雪板、马桶等等。但在我们的检测台北地区的公交车的任务上,我们不需要关心猫、滑雪板或马桶。相反,我们可以训练一个只能从特定角度的监控视频检测公交车的模型。

    举个例子,下面的图像是MS-COCO数据集中的一些样本,也是我们在检测中不需要关心的对象。

    斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    MS-COCO数据集中没有出现公交车的3个样本

    斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    MS-COCO数据集中出现公交车的2个样本

    NoScope 的专用模型也是CNN,但它们比通用的对象检测CNN更简单(更浅)。这有什么作用呢?与YOLOv2的每秒80帧相比,NoScope的专用模型每秒可以运行超过15000帧。我们可以将这些模型作为原始CNN的替代。

    使用差异检测器来利用时间局部性

    NoScope 使用差异检测器(difference detector)或设计来检测对象变化的快速模型来利用时间局部性。在许多视频中,标签(例如“有公交车”,“无公交车”)的变化比帧的变化少很多(例如,一辆公交车出现在帧中长达5秒,而模型以每秒30帧的速度运行)。为了说明,下面是两个都是150帧长度的视频,但标签并不是在每个视频中都有变化。

    斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    每个视频都是150帧,标签一样,但下边的视频没变过!

    相比之下,现在的对象检测模型是逐帧地运行的,与帧之间的实际变化无关。这样设计的原因是,像YOLOv2这样的模型是用静态图像训练的,因此它将视频视为一系列的图像。因为NoScope可以访问特定的视频流,因此它可以训练差异检测模型,这些模型对时间依赖性敏感。NoScope的差异检测器目前是使用逐帧计算的逻辑回归模型实现的。这些检测器在CPU上的运行速度非常快,每秒超过10万帧。想专用模型一样,NoScope可以运行这些差异检测器,而不是调用昂贵的CNN。

    把这些模型放到一起

    NoScope将专用模型和差异检测器结合在一起,堆叠在一个级联中,或堆叠在使计算简化的一系列模型。如果差异检测器没有发生任何变化,那么NoScope会丢弃这一帧。如果专用模型对其标签有信心,那么NoScope会输出这个标签。而且,如果面对特别棘手的框架,NoScope 可以随时返回到完整的CNN。

    为了设置这个级联(cascade)以及每个模型的置信度,NoScope提供了可以在精度和 速度之间折衷的优化器。如果想更快地执行,NoScope将通过端到端级联传递更少的帧。如果想得到更准确的结果,NoSceop 则将提高分类决定的简化阈值。如下图所示,最终结果实现了比当前方法快10000倍的加速。

    斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    斯坦福新深度学习系统 NoScope:视频对象检测快1000倍上图是NoScope的系统图示;下图显示了在一个有代表性的视频中速度和准确度的相关性。

    差异检测器和专用模型都有助于这一结果。我们先是只使用YOLOv2进行因素分析,然后将每个类型的快速模型添加到级联中。两者都是为了实现最大话性能所必需的。

    斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    NoScope系统的因素分析

    总结NoScope的级联车辆,优化器先在一个特定视频流中运行较慢的参考模型(YOLOv2,Faster R-CNN等),以获取标签。给定这些标签,NoScope训练一组专用模型和差异检测器,并使用一个holdout set来选择使用哪个特定模型或差异检测器。最后,NoScope的优化器将训练好的模型串联起来,可以在优化模型不确定是调用原始的模型。

    结论总结而言,视频数据非常丰富,但使用现代神经网络进行检索的速度非常慢。在NoScope中,我们利用时间局部性,将视频专用管道中差异检测和专用CNN相结合,视频检索速度比普通CNN检索提高了1000倍。也就是说,每秒处理的视频帧数超过8000帧。我们将继续改进NoScope来支持多类分类,非固定角度监控视频,以及更复杂的检索。

  • 相关阅读:
    Atitit 华为基本法 attilax读后感
    Atitit 华为管理者内训书系 以奋斗者为本 华为公司人力资源管理纲要 attilax读后感
    Atitit 项目版本管理gitflow 与 Forking的对比与使用
    Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理
    Atitit 乌合之众读后感attilax总结 与读后感结构规范总结
    深入理解 JavaScript 异步系列(4)—— Generator
    深入理解 JavaScript 异步系列(3)—— ES6 中的 Promise
    深入理解 JavaScript 异步系列(2)—— jquery的解决方案
    深入理解 JavaScript 异步系列(1)——基础
    使用 github + jekyll 搭建个人博客
  • 原文地址:https://www.cnblogs.com/vactor/p/7707008.html
Copyright © 2011-2022 走看看