斯坦福新深度学习系统 NoScope:视频对象检测快1000倍
以作备份,来源http://jiasuhui.com/archives/178954
斯坦福大学的新研究构建一个名为 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),通过在视频的每个帧上运行CNN来检测公交车:
使用YOLOv2标记的交叉路口片段
这种方法工作得很好,尤其是如果我们使视频中出现的标签流畅的话,那么问题出现在哪里呢?就是这些模型非常昂贵。这些模型的运行速度是每秒10-80帧,这对监控单个视频输入来说还好,但如果要处理上千个视频输入的话,效果并不好。
机会:视频中的局部性
为了提高检索的效率,我们应该看视频内容本身的性质。具体来说,视频的内容是非常冗余性的。让我们回到台北的街道监控视频,看一下以下一些出现公交车的帧:
从这个视频影像的角度看,这些公交车看起来是非常相似的,我们称这种局部(locality)形式为场景特定的局部性(scene-specific locality),因为在视频影像中,对象之间看起来并没有很大的不同(例如,与另一个角度的摄像头相比)。
此外,从这个监控视频中,很容易看出,即使公交车正在移动,每一个帧之间都没有太大的变化:
我们将这种特征称为时间局部性(temporal locality),因为时间点附近的帧看起来相似,并且包含相似的内容。
NoScope:利用局部性
为了利用上面观察到的特征,我们构建了一个名为 NoScope 的检索引擎,可以大大加快视频分析检索的速度。给定一个视频输入(或一组输入),一个(或一组)要检测的对象(例如,“在台北的监控视频影像中查找包含公交车的帧”),以及一个目标CNN(例如,YOLOv2),NoScope 输出的帧与YOLOv2的一致。但是NoScope 比输入CNN要快许多:它可以在可能的时候运行一系列利用局部性的更便宜的模型,而不是简单地运行成本更高的目标CNN。下面,我们描述了两类成本较低的模型:专门针对给定的视频内容(feed)和要检测的对象(以利用场景特定局部性)的模型,以及检测差异(以利用时间局部性)的模型。
这些模型端到端地堆叠,比原来的CNN要快1000倍。
利用场景特定局部性
NoScope 使用专用模型来利用场景特定局部性,或训练来从特定视频内容的角度检测特定对象的快速模型。如今的CNN已经能够识别各种各样的物体,例如猫、滑雪板、马桶等等。但在我们的检测台北地区的公交车的任务上,我们不需要关心猫、滑雪板或马桶。相反,我们可以训练一个只能从特定角度的监控视频检测公交车的模型。
举个例子,下面的图像是MS-COCO数据集中的一些样本,也是我们在检测中不需要关心的对象。
MS-COCO数据集中没有出现公交车的3个样本
MS-COCO数据集中出现公交车的2个样本
NoScope 的专用模型也是CNN,但它们比通用的对象检测CNN更简单(更浅)。这有什么作用呢?与YOLOv2的每秒80帧相比,NoScope的专用模型每秒可以运行超过15000帧。我们可以将这些模型作为原始CNN的替代。
使用差异检测器来利用时间局部性
NoScope 使用差异检测器(difference detector)或设计来检测对象变化的快速模型来利用时间局部性。在许多视频中,标签(例如“有公交车”,“无公交车”)的变化比帧的变化少很多(例如,一辆公交车出现在帧中长达5秒,而模型以每秒30帧的速度运行)。为了说明,下面是两个都是150帧长度的视频,但标签并不是在每个视频中都有变化。
每个视频都是150帧,标签一样,但下边的视频没变过!
相比之下,现在的对象检测模型是逐帧地运行的,与帧之间的实际变化无关。这样设计的原因是,像YOLOv2这样的模型是用静态图像训练的,因此它将视频视为一系列的图像。因为NoScope可以访问特定的视频流,因此它可以训练差异检测模型,这些模型对时间依赖性敏感。NoScope的差异检测器目前是使用逐帧计算的逻辑回归模型实现的。这些检测器在CPU上的运行速度非常快,每秒超过10万帧。想专用模型一样,NoScope可以运行这些差异检测器,而不是调用昂贵的CNN。
把这些模型放到一起
NoScope将专用模型和差异检测器结合在一起,堆叠在一个级联中,或堆叠在使计算简化的一系列模型。如果差异检测器没有发生任何变化,那么NoScope会丢弃这一帧。如果专用模型对其标签有信心,那么NoScope会输出这个标签。而且,如果面对特别棘手的框架,NoScope 可以随时返回到完整的CNN。
为了设置这个级联(cascade)以及每个模型的置信度,NoScope提供了可以在精度和 速度之间折衷的优化器。如果想更快地执行,NoScope将通过端到端级联传递更少的帧。如果想得到更准确的结果,NoSceop 则将提高分类决定的简化阈值。如下图所示,最终结果实现了比当前方法快10000倍的加速。
上图是NoScope的系统图示;下图显示了在一个有代表性的视频中速度和准确度的相关性。
差异检测器和专用模型都有助于这一结果。我们先是只使用YOLOv2进行因素分析,然后将每个类型的快速模型添加到级联中。两者都是为了实现最大话性能所必需的。
NoScope系统的因素分析
总结NoScope的级联车辆,优化器先在一个特定视频流中运行较慢的参考模型(YOLOv2,Faster R-CNN等),以获取标签。给定这些标签,NoScope训练一组专用模型和差异检测器,并使用一个holdout set来选择使用哪个特定模型或差异检测器。最后,NoScope的优化器将训练好的模型串联起来,可以在优化模型不确定是调用原始的模型。
结论总结而言,视频数据非常丰富,但使用现代神经网络进行检索的速度非常慢。在NoScope中,我们利用时间局部性,将视频专用管道中差异检测和专用CNN相结合,视频检索速度比普通CNN检索提高了1000倍。也就是说,每秒处理的视频帧数超过8000帧。我们将继续改进NoScope来支持多类分类,非固定角度监控视频,以及更复杂的检索。
斯坦福新深度学习系统 NoScope:视频对象检测快1000倍的更多相关文章
- Google会思考的深度学习系统
上周五在旧金山举行的机器学习会议上,Google软件工程师Quoc V. Le讲解了Google的"深度学习"系统是如何运作的. "深度学习"需要用到大型计算机 ...
- NNVM打造模块化深度学习系统(转)
[摘录理由]: 之所以摘录本文,主要原因是:该文配有开源代码(https://github.com/dmlc/nnvm):读者能够直接体会文中所述的意义,便于立刻展开研究. MXNet专栏 :NNVM ...
- Deep Learning 10_深度学习UFLDL教程:Convolution and Pooling_exercise(斯坦福大学深度学习教程)
前言 理论知识:UFLDL教程和http://www.cnblogs.com/tornadomeet/archive/2013/04/09/3009830.html 实验环境:win7, matlab ...
- Deep Learning 19_深度学习UFLDL教程:Convolutional Neural Network_Exercise(斯坦福大学深度学习教程)
理论知识:Optimization: Stochastic Gradient Descent和Convolutional Neural Network CNN卷积神经网络推导和实现.Deep lear ...
- Deep Learning 13_深度学习UFLDL教程:Independent Component Analysis_Exercise(斯坦福大学深度学习教程)
前言 理论知识:UFLDL教程.Deep learning:三十三(ICA模型).Deep learning:三十九(ICA模型练习) 实验环境:win7, matlab2015b,16G内存,2T机 ...
- Deep Learning 12_深度学习UFLDL教程:Sparse Coding_exercise(斯坦福大学深度学习教程)
前言 理论知识:UFLDL教程.Deep learning:二十六(Sparse coding简单理解).Deep learning:二十七(Sparse coding中关于矩阵的范数求导).Deep ...
- Deep Learning 11_深度学习UFLDL教程:数据预处理(斯坦福大学深度学习教程)
理论知识:UFLDL数据预处理和http://www.cnblogs.com/tornadomeet/archive/2013/04/20/3033149.html 数据预处理是深度学习中非常重要的一 ...
- Deep Learning 9_深度学习UFLDL教程:linear decoder_exercise(斯坦福大学深度学习教程)
前言 实验内容:Exercise:Learning color features with Sparse Autoencoders.即:利用线性解码器,从100000张8*8的RGB图像块中提取颜色特 ...
- Deep Learning 8_深度学习UFLDL教程:Stacked Autocoders and Implement deep networks for digit classification_Exercise(斯坦福大学深度学习教程)
前言 1.理论知识:UFLDL教程.Deep learning:十六(deep networks) 2.实验环境:win7, matlab2015b,16G内存,2T硬盘 3.实验内容:Exercis ...
随机推荐
- Map (就一个json.jar)
public static void main(String[] args) { List<Map<Integer, String>> m = new ArrayList< ...
- caffe训练CIFAR数据库
CIFAR-10是一个用于普适物体识别的数据集.Cifar-10由60000张32*32的RGB彩色图片构成,50000张训练图片,10000张测试图片,分为10类.cifar下载地址: http:/ ...
- 【IOI 2011】Race
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2599 [算法] 点分治 [代码] #include<bits/stdc++.h ...
- Hadoop 三剑客之 —— 分布式文件存储系统 HDFS
一.介绍 二.HDFS 设计原理 2.1 HDFS 架构 2.2 文件系统命名空间 2.3 数据复制 2.4 数据复制的实现原理 2.5 副本的选择 2 ...
- Scrapy Architecture overview--官方文档
原文地址:https://doc.scrapy.org/en/latest/topics/architecture.html This document describes the architect ...
- E5中遍历数组的方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- <Android Framework 之路>Android5.1 Camera Framework(四)——框架总结
前言 从之前的几篇文件,可以基本弄清楚 Camera从APK,经过framework的衔接,与HAL层进行交互,最终通过驱动完成Camera的一些动作. Camera层次分析 APP层 Framewo ...
- Android开发中:小米2S DDMS 不显示
参考:http://bbs.xiaomi.cn/thread-5672159-1-1.html
- Python更换pip源,更换conda源
更换pip源: 1.在windows文件管理器中,输入 %APPDATA% 2.在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件 3.在新建的pip.ini文件中输入以下内 ...
- ZBrush中的实时遮罩
在ZBrush®中有许多遮罩类型,包括柔滑遮罩.反转遮罩,实时遮罩等.其中,实时遮罩又包含很多种类,它不同于一般的遮罩是不显示的,实时遮罩是根据实时信息产生新的遮罩. 在“Brush”菜单下“Auto ...