专栏名称: 机器之心
专业的人工智能媒体和产业服务平台
目录
相关文章推荐
51好读  ›  专栏  ›  机器之心

学界 | 斯坦福提出高速视频目标检测系统NoScope:速度超现有CNN上千倍

机器之心  · 公众号  · AI  · 2017-07-08 13:14

正文

选自Stanford University

作者:Daniel Kang 等

机器之心编译

参与:熊猫


卷积神经网络在目标检测任务上已经取得了优良的表现,但它们的计算成本比较高、速度比较慢,不适用于大规模的实时视频处理。为了解决这个问题,斯坦福大学的几位研究者提出了一个名叫 NoScope 的系统,将目标检测的速度提升了数千倍。该研究的相关论文和代码也已发布,本文是这些研究者对该项目的介绍文章,机器之心对其进行了编译介绍。


论文地址:https://arxiv.org/abs/1703.02529

项目地址:https://github.com/stanford-futuredata/noscope


这个时代,视频数据正在爆发式增长。光是在英国就有多达 400 万个 CCTV(闭路电视监控系统),而每分钟被用户上传到 YouTube 的视频就长达 300 小时。近来深度学习的发展让我们可以自动分析这些越来越大量的视频数据——让我们可以查询感兴趣的目标、检测罕见和异常事件、筛选这些几辈子也看不完的也没人想看的视频。但是,这些深度学习方法的计算成本都很高:当前最佳的目标检测方法在当前最先进的英伟达 P100 GPU 上的处理速度是 10-80 帧每秒。如果只有一个视频的话,这还好说,但这却无法实现大规模的部署应用。举个例子,如果要实时分析英国所有的 CCTV,光是硬件就要花 50 亿美元。


为了弥合我们获取视频的能力和分析这些视频的成本之间的鸿沟,我们开发了一个名叫 NoScope 的系统。该系统处理视频流的速度可以比当前方法快上数千倍。我们的关键见解是:视频是高度冗余的,包含了大量时间局部性(temporal locality,即在不同的时间是相似的)和空间局部性(spatial locality,即在不同场景中看起来是相似的)。为了利用这种局部性,我们针对高效处理视频流的任务而从零开始设计了 NoScope。NoScope 采用了一系列利用了视频局部性的特定于视频的优化方法,从而能极大地减少每一帧的计算量,同时还能保持普通查询方法的高准确度。


在这篇文章中,我们将了解 NoScope 的每种优化方法的案例,并描述 NoScope 是如何将它们端到端地堆叠到一个模型级联(model cascade)中以获得多倍加速的——在真实世界的网络摄像头视频流上可以实现多达 1000 倍的加速!


来自台北的原型案例


假设我们想查询以下的网络摄像头视频流,以确定台北的公交车在何时通过一个给定的路口(比如,可用于交通分析):

台北路口的两段视频


对于这样的查询,当前最顶级的视觉模型会怎样回答?


我们可以运行一个目标检测卷积神经网络(CNN),比如 YOLOv2 或 Faster R-CNN。通过在视频的每一帧上运行该 CNN 来检测公交车:


使用 YOLOv2 标记后的台北路口的两段视频


这种方法的效果非常好——尤其是当我们使视频中出现的标签平滑过渡时,所以问题出在哪里呢?这些模型的成本高昂。这些模型每秒可以处理 10-80 帧视频,如果监控的是单个视频流,这还行;但如果要监控数千个视频流,这可就不够用了。


机会:视频中的局部性


为了做到更好,我们可以了解一下视频流本身的性质。具体来说,视频内容是高度冗余的。让我们回到台北的那个路口的视频流,看看一些公交车:



从这个视频流上,这些公交车看起来都差不多;我们把这种局部性称为特定于场景的局部性(scene-specific locality),因为在这个视频流中,我们关注的目标之间彼此差别并不大(比如相对于另一个不同角度的摄像头)。


此外,在这个台北路口,可以很容易看出在每帧基础上的变化并不大,即便公交车在移动:



我们称之为时间局部性(temporal locality),因为临近的帧看起来是类似的,含有类似的内容。


NoScope:利用局部性


为了用上上面的观察结果,我们一直在开发一个新的查询引擎 NoScope,其可以极大地加速视频分析查询。给定一个或一组要查询的视频流、要查询的相关目标(比如:找到上述台北路口视频流中的公交车帧)和一个目标 CNN(比如 YOLOv2,NoScope 可以输出根据 YOLOv2 得到的目标所出现的帧。但是,NoScope 比输入的 CNN 快得多:NoScope 并不是简单地运行计算成本高的目标 CNN,而是学习一系列利用了局部性的低计算成本模型,并且在任何时候都运行这些更便宜的模型。下面我们描述了两类更便宜的模型:特定于给定视频流和目标的模型(要利用特定于场景的局部性)和检查差异的模型(要利用时间局部性)。端到端地堆叠起来后,这些模型的速度可以超过原 CNN 的 100-1000 倍。


通过专用模型利用特定于场景的局部性


NoScope 可以使用专用模型(specialized models)来利用特定于场景的局部性,即被训练从特定视频流的角度检测相关目标的快速模型。今天的 CNN 已经可以识别大量目标了,其中包括猫、滑雪板或厕所。但是如果我们只想检测台北的公交车,我们就不需要关心猫、滑雪板或厕所;相反,我们可以训练一个只会从台北的摄像头视频中检测公交车的模型。


为了说明,下面给出了来自 MS-COCO 数据集的真实样本。这些是我们不关心,不需要检测的:








请到「今天看啥」查看全文