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

vactor vactor     2022-09-24     522

关键词:

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

技术分享

本文由“新智元”(微信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倍。

一个典型例子

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

技术分享技术分享

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

那么,当前最好的视觉模型是如何处理这个问题的呢?我们可以运行 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来支持多类分类,非固定角度监控视频,以及更复杂的检索。

斯坦福机器学习视频笔记week9异常检测和高斯混合模型anomalydetection

异常检测,广泛用于欺诈检测(例如“此信用卡被盗?”)。给定大量的数据点,我们有时可能想要找出哪些与平均值有显着差异。例如,在制造中,我们可能想要检测缺陷或异常。我们展示了如何使用高斯分布来建模数据集,... 查看详情

chatgpt背后模型被证实具有人类心智!斯坦福新研究炸了,知名学者:“这一天终于来了”...

...#xff09;,已经出现在ChatGPT背后的AI模型上。”这是来自斯坦福大学的最新研究结论,一经发出就造成了学术圈的轰动:这一天终于猝不及防地来了。所谓心智理论,就是理解他人或自己心理状态的能力,包括同... 查看详情

目标检测进阶:使用深度学习和opencv进行目标检测(代码片段)

使用深度学习和OpenCV进行目标检测基于深度学习的对象检测时,您可能会遇到三种主要的对象检测方法:FasterR-CNNs(Renetal.,2015)YouOnlyLookOnce(YOLO)(Redmonetal.,2015)SingleShotDetectors(SSD)(Liu等人,2015年)FasterR-CNNs可能是... 查看详情

深度学习与视频分析简介

...解方法与技术技术优势重要技术罗列目标检测帧差法使用深度学习进行视频分析视频分析中的目标检测架构系统逻辑架构典型应用场景5G工序检测工业质量控制体育分析智慧城市监控智慧门店安防监控参考文献与学习路径视频分... 查看详情

为啥我们使用 mAp 分数来评估深度学习中的对象检测器?

】为啥我们使用mAp分数来评估深度学习中的对象检测器?【英文标题】:WhyweusemApscoreforevaluateobjectdetectorsindeeplearning?为什么我们使用mAp分数来评估深度学习中的对象检测器?【发布时间】:2018-02-1601:40:46【问题描述】:在这个Ten... 查看详情

目标检测进阶:使用深度学习和opencv进行目标检测

使用深度学习和OpenCV进行目标检测基于深度学习的对象检测时,您可能会遇到三种主要的对象检测方法:FasterR-CNNs(Renetal.,2015)YouOnlyLookOnce(YOLO)(Redmonetal.,2015)SingleShotDetectors(SSD)(Liu等人,2015年)FasterR-CNNs 查看详情

深度学习斯坦福cs231n课程笔记

...作暂时用不上,我就先略过了。突然发现这两个课程都是斯坦福的,牛校就是牛。课程主 查看详情

深度学习与视频分析简介

...介视频理解方法与技术技术优势重要技术罗列帧差法使用深度学习进行视频分析视频分析中的目标检测架构系统逻辑架构典型应用场景5G工序检测工业质量控制体育分析智慧城市监控智慧门店安防监控参考文献与学习路径视频分... 查看详情

将纹理特征集成到基于颜色的视频帧对象检测

...车辆。请参阅下面的图像框架因为我认为在这种情况下,深度学习是多余的,所以我决定使用经典的检测管道,通过应用直方图反投影方法来检测红色车辆。我使用 查看详情

yolo算法是指啥?

...,精度是以前实时系统的两倍多,YOLO遵循的是“端到端深度学习”的实践。它将单个卷积神经网络(CNN)应用于整个图像,将图像分成网格,并预测每个网格的类概率和边界框。例如,以一个100x100的图像为例。我们把它分成网格... 查看详情

斯坦福大学深度学习与自然语言处理第一讲:引言

斯坦福大学在三月份开设了一门“深度学习与自然语言处理”的课程: CS224d:DeepLearningforNaturalLanguageProcessing ,授课老师是青年才俊 RichardSocher ,他本人是德国人,大学期间涉足自然语言处理,在德国读研时又专攻... 查看详情

arcgispro检测对象只能用cpu

...从场景中显示的图像中查找感兴趣对象。对象检测依赖于深度学习模型,该模型经过训练,可以检测影像中的特定对象,例如场景中建筑物的门窗。检测结果将自动保存到以置信度得分、边界框尺寸和标注名称作为属性的点要素... 查看详情

基于深度学习的口罩检测系统(python+清新界面+数据集)(代码片段)

...测系统用于日常生活中检测行人是否规范佩戴口罩,利用深度学习算法可实现图片、视频、连接摄像头等方式的口罩检测,另外支持和结果可视化。在介绍算法原理的同时,给出Python的实现代码以及PyQt的UI界面。口罩检测系统可... 查看详情

吴恩达深度学习工程师04.卷积神经网络第三周目标检测基本的对象检测算法

该笔记介绍的是《卷积神经网络》系列第三周:目标检测(1)基本的对象检测算法主要内容有:1.目标定位2.特征点检测3.目标检测   目标定位使用算法判断图片中是不是目标物体,如果是还要再图片中标出其位置并... 查看详情

深度学习背景下的交叉验证 |物体检测[关闭]

】深度学习背景下的交叉验证|物体检测[关闭]【英文标题】:Crossvalidationinthecontextofdeeplearning|ObjectDetection[closed]【发布时间】:2020-10-2712:52:48【问题描述】:我正在通过对象检测对数据集进行建模。我对深度学习比较陌生。我很... 查看详情

深度学习与自然语言处理_斯坦福cs224d大作业测验2与解答

...ttp://blog.csdn.net/han_xiaoyang/article/details/51815683说明:本文为斯坦福大学CS224d课程的中文版内容笔记,已得到斯坦福大学课程@Ri 查看详情

[ai开发]基于深度学习的视频多目标跟踪实现

据我目前了解掌握,多目标跟踪大概有两种方式:Option1基于初始化帧的跟踪,在视频第一帧中选择你的目标,之后交给跟踪算法去实现目标的跟踪。这种方式基本上只能跟踪你第一帧选中的目标,如果后续帧中出现了新的物体... 查看详情

深度学习和目标检测系列教程15-300:在python中使用opencv执行yolov3对象检测(代码片段)

@Author:Runsen上次讲了yolov3,这是使用yolov3的模型通过opencv的摄像头来执行YOLOv3对象检测。导入所需模块:importcv2importnumpyasnpimporttime让我们定义一些我们需要的变量和参数:CONFIDENCE=0.5SCORE_THRESHOLD=0.5IOU_ 查看详情