视频异常检测 综述(二)_视频异常检测综述-程序员宅基地

技术标签: 机器学习  音视频  视频异常检测  深度学习  

视频异常检测 综述(二)


特征提取的常用手段

大体上,视频异常检测方法使用两类表示:手工制作的特征和来自CNN的深度特征。

手工制作的特征包括时空梯度、动态纹理、梯度直方图、流直方图、流场、密集轨迹和前景掩码。

深度特征可以直接从预训练网络中提取,或者在优化与异常检测相关的特定任务时学习,例如使用自动编码器去优化低重构误差。

模型处理的原子单元

算法处理的原子单元包括:图像块、视频块,到单个完整帧、视频片段(完整帧的短序列)

在处理图像或视频块时,算法可以以单个固定大小块、多尺度固定大小块、任意大小区域的块为单位进行操作。

模型建模的常用手段

建模中的常用方法包括:one-class SVM、最近邻(knn)方法、隐马尔可夫模型以及更普遍的概率图形模型。最近,深度学习方法开始使用对抗性训练策略。

一些工作仅关注帧级(时间)定位,这意味着帧级内容会被构建到模型中,但这种情况下模型无法执行适当的空间定位。例如,使用完整帧或视频片段作为其原子处理单元的方法,它们都无法区分异常到底是有人在大使馆大楼外游荡,还是在在大使馆旁边的公园游荡。

其他方法以如下两种方式之一解释异常的空间位置性:(1)根据其在帧中的位置对像素进行评分,(2)根据相邻像素所提供额外的上下文信息以进行评分。

视频异常检测方法的分类

从宏观上看,过去的视频异常检测工作可以分为基于距离、概率和基于重构的方法。这些方法之间并不相互排斥,因为以基于距离的方式运行的方法很容易产生概率解释,分类仅仅是为了方便。

基于距离的视频异常检测方法

基于距离的方法通过使用训练数据创建“正态”模型,并通过测量测试数据与该模型的偏差以确定异常分数。通常,这些模型本身非常简单,但巧妙的特征提取和公式化会带来良好的性能。基于距离的方法可以被视为概率和基于重建的方法的更一般形式。

在过去基于距离的方法中使用了许多不同类型的特征提取方法,以及测量到正常特征距离的许多不同方法。一种常见方法是使用one-class SVM来计算来自正常训练视频的特征向量周围的决策边界。但这种方法的缺点是在给定新的正常训练数据的情况下更新模型是昂贵的,因为SVM学习算法必须在所有旧数据和新数据上重新运行。另一种方法是使用高斯混合来建模法线特征向量,然后使用马氏距离来测量到法线的距离。

传统的特征提取方法不建议继续使用,一方面是由于提取较为困难,另一方面是提取出来的特征精度较低

较新的方法侧重于深度网络学习的特征,这些特征通常具有较高的精度,这些基于深度网络的方法包括学习深度特征的多种方法,以及在不同的正态模型中使用深度特征的各种方法。

下面简单描述2篇2020年的基于距离的视频异常检测方法的论文方法:

第一篇

B. Ramachandra and M. Jones, “Street scene: A new dataset and evaluation protocol for video anomaly detection,” in Proc. IEEE Winter Conf. Appl. Comput. Vis., 2020, pp. 2558–2567
作者在最近发布的数据集Street Scene上提出了两种baseline算法,用于未来工作的比较。他们使用简单的最近邻位置(nearest neighbor location)异常检测方案,使用手工制作的视频特征表示(流场或模糊前景掩码)以及手工制作的距离测量方法(分别为L1或L2归一化的像素级距离)。通过从训练数据构建出简洁的代表性样本模型,大大减少了距离计算的数量。
有趣的是,他们表明,这些简单的方法能够在其他数据集上优于一些先前的最先进方法,这可能表明算法已经产生了特定于某些数据集的偏差。

第二篇

B. Ramachandra, M. Jones, and R. Vatsavai, “Learning a distance function with a siamese network to localize anomalies in videos,” in Proc. IEEE Winter Conf. Appl. Comput. Vis., 2020, pp. 2587–2596.
作者在一个很简单的最邻近位置模式上建模,训练一个孪生神经网络,将原模式中的手工特征提取方式与距离函数替换掉。这个孪生神经网络被训练为判断视频之间是相似的还是不同的,用于判断测试视频是否与其余的训练视频都不相同,以此将其归类为异常。
从数据集的训练数据学习正态模型,使用训练好的模型在测试视频和样本视频进行最邻近评分,并且为每个测试视频分配异常分数。

基于概率的视频异常检测方法

概率方法在一定概率空间中计算模型下的距离。这些方法通常将模型建模到一个概率框架中,如概率图模型(PGMs)或高维概率分布的混合模型。大多数概率方法在深度学习方法浪潮之前出现,并且依赖于时空梯度、光流场等特征,以及STIP特征与传统的马尔可夫随机场和混合高斯模型等。最近的一些方法使用了深度神经网络,也显示出了更高的准确性。

这些方法的一个优点是具有高度原则性,并且能够很好地模拟异常的连续性质,但是它们在测试时通常很慢。

下面简单描述2篇通过深度神经网络实现的基于概率视频异常检测的论文方法:

第一篇

R. Hinami, T. Mei, and S. Satoh, “Joint detection and recounting of abnormal events by learning deep generic knowledge,” in Proc. IEEE Int. Conf. Comput. Vis., 2017, pp. 3639–3647.
这篇论文中,作者提出了一种在检测到异常事件时重新计数的方法,他们首先训练了一个Fast-RCNN模型去在大规模的数据集如COCO、Visual Genome去预测物体、行为、种类等属性。之后对于每一帧,他们通过倒数第二个全连接层去提取每一个感兴趣对象区域(region of interest RoI)的特征,再使用最邻近距离、RBF核的one-class SVM、RBF核核密度估计下的似然来进行异常检测。
重新计算是通过简单的查看对对象、行为、属性类的最大预测来实现的。

第二篇

Y. Feng, Y. Yuan, and X. Lu, “Learning deep event models for crowd anomaly detection,” Neurocomputing, vol. 219, pp. 548–556, Jan. 2017
这篇论文中,作者使用PCANet,通过正常的图像patch的3D梯度来提取深度表征,然后使用 Deep GMMs来对正常模式的生成过程进行建模,使得log likelihood的下限最大化。deep GMM模型可以对测试的数据进行相似度评分生成,这个得分通常被用作异常得分。

基于重构的视频异常检测方法

基于重构的方法是通过从正常视频中学习到的特征来重新表示输入的图像或视频片段。这种方法基于的假设是,与分布内的正常数据相比,使用从正常视频中学习到的特征去重构分布外的输入(如异常输入)在本质上是更困难的,这也证明了使用重构误差来代表异常分数是合理的。几乎所有基于重构的方法都使用了现代的深度学习方法,尤其是大多数基于卷积自编码器(auto-encoders)或生成式对抗网络(GANs)的方法。

通常,基于重构的方法有一个缺点,当使用或添加了新的训练视频后,它们使用的模型(例如,自编码器或GAN)需要重新训练,以适应新的正常训练视频。 许多这些方法不评估异常的空间定位,据推测,这是因为它们的空间定位精度较低。其中使用自编码器模型重构方法的另一个缺点是,帧的重构误差与帧中前景对象的数量成正比,这也是大多数这类方法必须对每个视频进行归一化的后处理步骤的原因。

下面简单描述2篇2020年的基于重构的视频异常检测方法的论文方法:

第一篇

Y. Tang, L. Zhao, S. Zhang, C. Gong, G. Li, and J. Yang, “Integrating prediction and reconstruction for anomaly detection,” Pattern Recognit. Lett., vol. 129, pp. 123–130, Jan. 2020
作者认为,预测与重构可以结合起来,去利用两者的优点、平衡两者的缺点。他们通过构建一个生成器来实现这一目标,这个生成器由两个连续的U-net结构组成,用来处理视频片段,第一个U-net去预测一个过渡时刻的帧,接着第二个U-net通过这个帧去预测未来时刻的帧,通过强度值与梯度值去最小化重构误差。他们还在未来时刻的Ground Truth与预测的未来帧使用对抗性的损失函数来训练。

第二篇

H. Park, J. Noh, and B. Ham, “Learning memory-guided normality for anomaly detection,” in Proc. IEEE/CVF Conf. Comput. Vis. Pattern Recognit., 2020, pp. 14 372–14 381
作者认为,基于CNN的重构方法由于CNN的高表示容量(模型的最大容量)而很难重构异常事件,他们提出使用已经通过训练的、存储了重要的正常模式特征的记忆模块来增强U-net风格的编码器-解码器,即用于未来帧预测、重构的网络模型。这个经过训练的记忆模块使用帧与其重构帧的PSNR,以及编码的内容与其最近的记忆单元的距离来计算异常分数。最后也要对每个视频的异常得分进行归一化处理。

稀疏重构方法

稀疏重构方法是重构方法的一个子集,它对重构施加了额外的约束条件,即重构必须仅使用稀疏特征集来执行。几乎所有稀疏重建方法都优化了某种稀疏组合学习公式。

这类方法通常具有快速(其目标就是稀疏性)和易于更新正态模型的一些有利特性。

这类方法的一个缺点是,它们通常过于依赖去记忆显著的正常特征,这给用于穷举的正常训练集带来了很大负担。也正因于此,这类方法无法很好的去建模异常的本质,即得分较低的异常行为通常不对应与人类直觉中的异常活动。

D. Gong, L. Liu, V. Le, B. Saha, M. R. Mansour, and S. Venkatesh, “Memorizing normality to detect anomaly: Memory-augmented deep autoencoder for unsupervised anomaly detection,” in Proc. IEEE/CVF Int. Conf. Comput. Vis., 2019, pp. 1705–1714
作者提出使用存储模块去扩充3D卷积自动编码器,他们认为这种方法有助于克服现有的一些自编码器方法在测试数据时出现的漏检问题。在bottleneck层,他们加入了存储模块,这个模块使用固定大小的内存,通过基于注意力的编码方式,以及硬阈值的方法来促进对输入的视频片段进行稀疏重构。这种方法最后也要对每个视频的异常得分进行归一化处理,但对空间定位方面的性能不加以考虑。

总结与展望

该领域的研究人员应尽量使用推荐的可靠数据集,新的评估方案,并参与可复用性研究。随着该领域逐渐成熟,产生了在实践中可行的方法,研究人员在提出相应方法时也应该提供使用这些方法的运行对比分析。

对假阳性数据质量的定性评估很重要,尤其对发现建模中的偏差有很大帮助。

对多个数据集进行评估也是必不可少的,例如:一些只在UCSD Ped1、UCSD Ped2或UMN数据集上进行异常评估的工作成果很有可能固有地偏向于这些数据集中的异常,这些数据集主要由运动幅度较大的物体组成。

过去视频异常检测算法的输入主要由原始、固定大小的图像块组成;由于有些异常需要分析时间信息,因此研究人员转向使用视频patch,这也需要更多的计算能力。最近,研究人员开始使用视频的多模态输入,包括原始帧和光流场,现在这种模式已经成为常态模式。尤其现在I3D在视频动作识别领域的流行趋势,GPU计算能力的进步,输入表示的日益复杂的趋势将逆转。

与此同时,建模遵循了一种不同的趋势。最开始时,研究人员使用了非常简单的手工特征,这些特征的分布可以通过简单的假设来进行建模。很快,研究人员通过更复杂的模型、更复杂的假设和许多巧妙的工程设计,取得了更好的结果。

最近,这种趋势发生了逆转,人们更依赖从数据中学习表示来更直接地优化方案和建模方法。预计这种数据主导的趋势将继续下去,特别是当更大、更复杂的数据集变得可用时。

一方面,视频异常检测的研究已经取得了长足的进步,但另一方面,以往的研究也忽视了视频异常检测中一些更具挑战性的问题。在现有的数据集中,徘徊异常还没有被建模来解决。事实上,过去的大多数方法都无法检测到这类异常,因为它们严重依赖于动作线索,而忽略了视频的处理部分。

就异常类型而言,组异常、轨迹异常和时间异常在很大程度上还没有得到解决,因为包含这些异常的baseline数据集还不存在。随着研究内容专注于精度趋于饱和的更小、更不复杂的数据集转移到更大、更复杂、有更多种异常类型的数据集,新的视频表示和新的建模策略会被迫切需要,以在低假阳性率(误报率)下实现高检测率,从而使算法在实际应用中具有实用性。

禁止搬运、转载

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44636382/article/details/126626153

智能推荐

【转】iphone游戏策划经验谈_苹果开发游戏策略-程序员宅基地

文章浏览阅读745次。CocoaChina 会员“掌控力”在论坛中发帖分享了自己在游戏策划行业工作几年后积累的心得与经验,值得苹果游戏开发者们一看。第一章 游戏的名称——创意的第一体现 游戏的制作者往往会忽视游戏的名称,大多是在游戏制作尾声或即将审核的时候才想起来名字的重要性,但都因为接近游戏制作尾声,和幻想即将赚钱的急切心情下,不会投入大量的精力和时间去考虑,但游戏名称可能就是你成功的第一步。总结游戏名称的命名_苹果开发游戏策略

WF4.0入门系列-程序员宅基地

文章浏览阅读57次。封BLOG好多年了,最近在学习WF方面的东西,准备写个WF4.0入门系列WF4.0入门系列1——创建一个简单的工作流WF4.0入门系列2——用代码创建一个简单的工作流WF4.0入门系列3——创建一个Flowchart工作流WF4.0入门系列4——参数传递WF4.0入门系列5——重复使用Activities转载于:https://www.cnblogs.com/heming..._wf4.0教程

TensorboardX_pytorch笔记(亟待完成)_labels = labels.to(device)-程序员宅基地

文章浏览阅读763次。参考资料TensorBoard in PyTorch详解PyTorch项目使用TensorboardX进行训练可视化详解PyTorch项目使用TensorboardX进行训练可视化_浅度寺-程序员宅基地_tensorboardx解PyTorch项目使用TensorboardX进行训练可视化PyTorch绘制训练过程的accuracy和loss曲线_Tequila-程序员宅基地_pytorch绘制loss曲线Pytorch使用tensorboardX可视化。超详细!!!Pyt.._labels = labels.to(device)

SpringCloud学习(十二)---Config_config_hello=n-程序员宅基地

文章浏览阅读95次。1.搭建Config服务端配置环境建立module导入pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache._config_hello=n

ps ico插件_PS不能保存为ico格式怎么办?PS如何导出ICO格式?-程序员宅基地

文章浏览阅读947次。PS如何导出ioc格式?只要一步搞定为什么PS不开发这个刚需功能?设计师朋友应该都知道,PS无疑是目前最强的图像编辑软件,功能异常强大,支持格式非常多,兼容性非常好,插件非常多,但是……说了这么多优点,却有一个实在看不懂的地方,那就是竟然不支持ico导出?!好在有牛人开发了一个插件ICOformat,安装后就能增加导出ico格式,但是cc版本之后就无效了,从最初的版本到现在都2019版本..._ps2019导出ico文件

RankWarning: Polyfit may be poorly conditioned问题的解决-程序员宅基地

文章浏览阅读1.1w次,点赞2次,收藏2次。本人系统为MacOS catalina 10.15.7新的MacBook pro 用brew install python 安装了python,自动为3.9.0版本。然后pip3 install notebook,安装了jupyter noteboook。随后pip3 install numpy,打开notebook,出现“RankWarning: Polyfit may be poorly conditioned“ 错误。import numpy as np---------------------_rankwarning: polyfit may be poorly conditioned

随便推点

稠密SLAM最新工作!完虐GO-SLAM!轻松重建无界3D场景!-程序员宅基地

文章浏览阅读85次。点击下方卡片,关注「3D视觉工坊」公众号选择星标,干货第一时间送达来源:3D视觉工坊添加小助理:dddvision,备注:SLAM,拉你入群。文末附行业细分群0. 这篇文章干了啥?现有的单目稠密SLAM要么建图速度太慢,要么无法构建大范围场景。iMAP和NICE-SLAM这类NeRF SLAM在大场景中准确性会下降,并且会产生尺度漂移的问题。SDF地图无法重建无界场景。MoD-SLAM是一种基于单...

聊一聊Swift泛型-程序员宅基地

文章浏览阅读154次。泛型代码使您能够编写灵活的、可重用的函数和类型,这些函数和类型可以使用任何类型,取决于您定义的需求。您可以编写避免重复的代码,并以清晰、抽象的方式表达其意图。泛型是Swift最强大的特性之一,而且大部分Swift标准库都是用泛型代码构建的。事实上,您在整个语言指南中都使用了泛型,即使您没有意识到这一点。例如,Swift的数组和字典类型都是泛型集合。您可以创建一个包含Int值的数组,或者一个包含S..._swift 什么是范型

以针会友php_PHP Web学习一:搭建开发环境与语法基础,phpweb-程序员宅基地

文章浏览阅读161次。PHP Web学习一:搭建开发环境与语法基础,phpweb搭建准备多种注释变量超全局变量输出方法数据类型定义类字符串操作声明常量运算符针对数组进行循环数组及其操作关联数组搭建准备phpstorm下载安装XAMPP下载(win版本)安装第一步:为MySQL数据库设置密码点击修改密码后会到达下图5.修改完密码后,如果我们直接重新进入phpmyadmin是会报错的,因为我们设置的密码没有在 Apache..._phpweb应用开发环境

设计模式第9讲——适配器模式(Adapter)-程序员宅基地

文章浏览阅读1w次,点赞15次,收藏62次。适配器模式是一种结构型设计模式,它允许将不兼容的对象转换成可兼容的接口。主要目的是解决在不改变现有代码的情况下,使不兼容的接口之间能够正常工作,通过创建一个中间转换的适配器来将一个对象转换成我们所需要的接口。当我们去国外旅游时,我们可能只会汉语,而当地人只会英语,那么这个时候就需要一个翻译员(翻译软件)来帮助我们。这就类似于适配器模式,通过一个适配器将一个不兼容的接口转成另外一个接口。下面以翻译为例,介绍一下类、接口、对象适配器。_适配器模式

jsp文件中${}的变量是从哪里传进来的_jsp中${}获取的参数是怎么来的-程序员宅基地

文章浏览阅读2.6k次。如有错误欢迎指正 遇到一段代码,在一个jsp文件中,其中有很多${},这个变量到底是从哪里传进来的 我猜是代码顶部引入了其他的js或jsp文件,最后找到一个叫taglib.jsp的文件类似于<%@ taglib prefix="shiro" uri="/WEB-INF/tlds/shiros.tld" %>是自定义标签用的<%@ taglib prefix="sys" tagdir="/WEB-INF/tag..._jsp中${}获取的参数是怎么来的

解决了PyTorch 使用torch.nn.DataParallel 进行多GPU训练的一个BUG:模型(参数)和数据不在相同设备上_torch.nn.dataparallel训练参数不一致-程序员宅基地

文章浏览阅读3.1w次,点赞42次,收藏67次。解决了PyTorch 使用torch.nn.DataParallel 进行多GPU训练的一个BUG:模型(参数)和数据不在相同设备上使用torch.nn.DataParallel进行多GPU训练时出现了一个BUG, 困扰许久:RuntimeError: Expected tensor for argument #1 'input' to have the same device as tens..._torch.nn.dataparallel训练参数不一致