斯坦福大学的新研究构建一个名为 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倍。 一个典型例子 试想一下,我们想检索下面的监控摄像头拍摄的视频,以确定公交车在什么时候经过台北的某个交叉路口(例如,用于交通分析): 台北某个交叉路口的两个视频片段 那么,当前最好的视觉模型是如何处理这个问题的呢?我们可以运行 YOLOv2 或Faster R-CNN 之类的用于对象检测的卷积神经网络(CNN),atv,通过在视频的每个帧上运行CNN来检测公交车: 使用YOLOv2标记的交叉路口片段 这种方法工作得很好,尤其是如果我们使视频中出现的标签流畅的话,那么问题出现在哪里呢?就是这些模型非常昂贵。这些模型的运行速度是每秒10-80帧,开奖,这对监控单个视频输入来说还好,但如果要处理上千个视频输入的话,效果并不好。 机会:视频中的局部性 为了提高检索的效率,我们应该看视频内容本身的性质。具体来说,视频的内容是非常冗余性的。让我们回到台北的街道监控视频,看一下以下一些出现公交车的帧: 从这个视频影像的角度看,这些公交车看起来是非常相似的,我们称这种局部(locality)形式为场景特定的局部性(scene-specific locality),因为在视频影像中,对象之间看起来并没有很大的不同(例如,与另一个角度的摄像头相比)。 此外,从这个监控视频中,很容易看出,即使公交车正在移动,每一个帧之间都没有太大的变化: 我们将这种特征称为时间局部性(temporal locality),因为时间点附近的帧看起来相似,并且包含相似的内容。 NoScope:利用局部性 为了利用上面观察到的特征,我们构建了一个名为 NoScope 的检索引擎,可以大大加快视频分析检索的速度。给定一个视频输入(或一组输入),一个(或一组)要检测的对象(例如,“在台北的监控视频影像中查找包含公交车的帧”),以及一个目标CNN(例如,YOLOv2),NoScope 输出的帧与YOLOv2的一致。但是NoScope 比输入CNN要快许多:它可以在可能的时候运行一系列利用局部性的更便宜的模型,而不是简单地运行成本更高的目标CNN。下面,我们描述了两类成本较低的模型:专门针对给定的视频内容(feed)和要检测的对象(以利用场景特定局部性)的模型,以及检测差异(以利用时间局部性)的模型。 这些模型端到端地堆叠,比原来的CNN要快1000倍。 利用场景特定局部性 (责任编辑:本港台直播) |