论文地址:https://openaccess.thecvf.com/content/CVPR2021/html/Lv_Learning_Normal_Dynamics_in_Videos_With_Meta_Prototype_Network_CVPR_2021_paper.html
什么是异常行为呢?
除了正常的,其他都是异常(并不对异常做明确规定), 例如:校园里突然开出一辆车,马路上窜出个野猪(但凡不常规的都是异常)
数据集介绍
Avenue,UCSD Ped等,异常主要是跑,车等行为。
基本都是固定位置的,背景相对不变,前景(人)变化差异较大
标注信息很少,导致了这行很多任务都得靠无监督方法来做
基本套路
如果下一帧是正常情况,那应该预测的不错(训练数据都是正常的)
如果下一帧是异常情况,那它应该预测的不咋地(没见到,整不出来)
基本思想
如何预测呢?
但是最大的问题是,无论是CNN还是transformer等现在主流模块都能力太强了!太强就是,即便是异常的行为,也能预测的非常好(泛化能力太强),而我们需要的是对于异常行为不能预测出下一帧的图像,最少不能预测得特别好。(因为训练样本全是正样本)。
基于自动编码器(AE)的帧重构(当前或未来帧)是一种常用的视频异常检测方法。在正常数据上训练模型时,异常场景的重构误差通常比正常场景大得多。以往的方法将记忆库引入AE,用于在训练视频中编码不同的正常模式。然而,它们会消耗内存,并且无法处理测试数据中看不到的新场景。在这项工作中,我们提出了一个动态原型单元(DPU)来编码正常的动态为实时的原型,没有额外的内存成本。此外,我们在DPU中引入了元学习,以形成一个新的少样本学习器,即元原型单元(MPU)。它只消耗几次更新,就可以在新场景上实现快速适应能力。在各种基准上进行了广泛的实验。优于最先进的性能证明了我们的方法的有效性。
视频异常检测(VAD)是指识别不符合期望[2,3,5,28]的行为或外观模式。然而,“异常”在概念上是无限的,而且往往是模棱两可的,因此无法收集各种可能的异常的数据。因此,异常检测通常被表述为一个无监督的学习问题,目的是学习一个模型,以只利用正常数据的规则模式。在推理过程中,与编码的规则模式不一致的模式被认为是异常模式。
深度Auto-Encoder(AE)[38]是一种流行的视频异常检测方法。研究人员通常采用AEs用历史帧建模正常模式,重建当前帧[11,31,39,4,40,1]或预测即将到来的帧[22,34,24,26,10]。为简单起见,我们将这两种情况称为帧预测。由于模型只用正常数据进行训练,因此对异常(看不见的模式)输入的预测误差预计会比正常对应的数据更高。以前,许多方法都是基于这一假设进行异常检测的。然而,这个假设并不总是正确的。
一方面,现有的方法依赖于大量的正常训练数据来模拟共享的正常模式。这些模型容易面临“过度泛化”的困境,由于卷积神经网络(CNNs)[37,10]具有强大的表征能力,所有的视频帧无论是正常还是不正常,都可以很好地预测。[37,10]提出的方法是用记忆库明确地模拟正常训练视频的共享正常模式,以在抑制非正常区域的同时增强帧内正常区域的预测。然而,将正常模式作为存储在整个训练集上的记忆项目是非常消耗内存的。
为了解决这一限制,我们建议以一种注意的方式来编码正常的动态,这被证明在表示学习和增强[46,20,13]中是有效的。一个正常的学习器,被称为Dynamic Prototype Unit(DPU),被开发成很容易地并入AE主干。它以连续的正常帧的编码作为输入,然后学习挖掘不同的正常动态作为紧凑的原型。更具体地说,我们在AE encoding map上应用了一种新的注意操作,它为每个像素位置分配一个正态权值,形成一个正态映射。然后,在正态权值的指导下,得到原型作为局部编码向量的集合。应用多个并行注意操作来生成一个原型池化。利用所提出的紧凑性和发散性特征重构损失函数,训练原型项目以端到端方式表示共享的正常模式的多样性和紧凑的动态。最后,将AE编码映射与原型重构的规范化编码进行聚合,用于后一帧预测。
另一方面,在不同场景中出现的正常模式是不同的。作者使用元学习来解决这个问题。在少样本设置中,在训练过程中可以访问来自多个场景的视频,并且在推理过程中可以访问一些来自目标场景的视频帧。解决这个问题的一个方法是使用元学习。在这个元训练阶段,训练少样本目标模型,以几帧和参数更新迭代适应新的场景。使用来自不同场景的视频数据重复进行该过程,以获得模型初始化,作为快速适应新场景的良好起点。因此,我们将DPU模块表示为一个少样本正态学习器,即元原型单元(MPU),目的是学习目标场景中的常态。我们没有通过调整整个网络的[25]来大致转移到新的场景,这可能会导致“过度泛化”的问题,我们建议冻结预先训练的AE,只更新我们的MPU的参数。我们的元学习模型只需要少量参数和更新迭代,具有快速有效地适应未知场景常态的能力。我们的方法的概述如图1所示。
我们总结了我们的贡献如下: i)我们开发了一个Dynamic Prototype Unit (DPU) (DPU),用于学习将正常数据的不同和动态模式表示为原型。因此,设计了一个注意力操作来聚合正常的动态,以形成原型item。整个过程是可区分的和端到端训练的。ii)我们将元学习引入我们的DPU,并将其作为少样本正态学习器(MPU)进行改进。通过只消耗少量参数和更新迭代,有效地赋予了模型快速自适应能力。iii)我们的基于DPU的AE在各种无监督异常检测基准上实现了新的最先进的(SOTA)性能。此外,实验结果验证了我们的MPU在少样本设置下的自适应能力。
Anomaly Detection. 由于缺乏异常数据和昂贵的注释成本,视频异常检测已被制定为几种类型的学习问题。例如,无监督设置假设只有正常的训练数据[19,27,23],而弱监督设置可以访问带有视频级标签[43,53,28]的视频。
近年来,许多方法利用深度自动编码器(AE)对规则模式进行建模和重建视频帧[11,31,39,4,40,1]。这方面有许多优异的工作。然而,这种方法存在“过度泛化”的问题,有时异常帧也可以很好地预测正常(即小的预测误差)。
为了适应测试场景,Park等人[37]通过使用阈值进一步扩展了内存库的更新规则,以区分异常帧并记录正常模式。然而,在不同情况下,不可能找到统一的最优阈值来区分正常和异常帧。相反,我们在DPU模块中引入了元学习技术,使其能够快速适应新的场景
Attention Mechanisms. 注意机制在许多计算机视觉任务中被广泛应用。目前的方法大致可以分为两类,即通道注意和空间注意。大多数先前的注意力模块都集中于优化特征学习和增强的主干。我们提出利用注意机制来度量空间局部编码向量的正一性,并利用它们来生成编码正常行为部分的原型item。
Few-Shot and Meta-learning. 在少样本学习中,研究人员的目标是模仿人类的快速和灵活的学习能力,这可以快速适应一个新的场景,只有少数数据例子[18]。一般来说,元学习技术都是为了解决这个问题而开发出来的。方法主要分为三类:基于指标的[17,47,44]、基于模型的[41,33]和基于优化的方法[8]。这些方法可以在参数优化过程中通过多个任务之间的元更新方案快速适应新任务。然而,上述的大多数方法都是为图像分类等简单的任务而设计的。最近,Lu等人[25]遵循了基于优化的元学习方法[8],并将其应用于训练一个场景自适应异常检测的模型。他们简单地将整个网络设置为元学习的少量目标模型,用于学习整个模型的初始化参数集。然而,在这项工作中,我们学习了两组初始参数,并分别更新步长,以详细的更新以更少的参数设计的模块和更新迭代。
基于DPU-based AE的框架如图2所示。DPU被训练学习和压缩实时序列信息的正常动态作为多个原型,并用正常动态信息丰富输入AE编码。注意,DPU可以插入AE的不同位置(不同的分辨率)。
让我们首先考虑一个AE模型,将T个观察到的视频帧作为输入,简化为。然后将所选择的AE隐藏编码前馈到我们的DPU 。最后,DPU的输出编码通过剩余的AE层(在DPU之后)运行,以预测即将到来的地面真实帧。我们将帧序列表示为第k个矩的输入和输出对。
DPU的前向传递是通过以完全可微的注意方式生成一个动态原型池,然后通过检索原型重构一个规范化编码,最终将输入编码聚合为规范化编码作为输出。整个过程可以分为3个子过程,即Attention, Ensemble 和 Retrieving。
具体地说,首先从AE中提取第t个输入编码映射,进行维度变换,调整为通道数为c,序列长度为N=h*w的向量。在Attention(注意)的子过程中,使用大量的注意映射函数对编码向量分配归一化权值。在每个像素位置上,归一化权值测量编码向量的正态范围。这里,表示由第m个注意函数生成的第m个归一化函数特征图。然后在Ensemble(集合)进行对N个编码向量经过归一化的权重加权,推导出唯一的原型向量。
最后,在Retrieving(检索)子过程中,取自AE编码特征图中的输入编码向量作为查询,检索原型池中的相关项,重构归一化编码。对于每个获得的编码向量,这为:
其中,表示第n个编码向量与第m个原型item之间的相关得分。将得到的归一化特征图与原始编码X聚合作为最终输出。其关键思想是利用正常信息丰富AE编码,在抑制异常部分的同时,提高对视频帧正常部分的预测。DPU的输出编码通过剩余的AE层进行以后的帧预测。
在本节中,我们将介绍管道中的目标函数,它使用于规一化动态表示的原型学习,用于规范化增强编码的特征重构,以及用于异常检测的帧预测。为了训练我们的模型,总体损失函数L由一个特征重建项和一个帧预测项组成。这两个项由权重λ1平衡如下:
帧预测损失表示为地面真实与网络预测之间的L2距离:
特征重构损失是为了使学习到的正常原型具有紧凑性和多样性的特性。它有两个术语和,分别针对这两个属性,并被写成:
其中,λ2为权重参数。紧性项是用于用紧性原型重构规范编码。它测量输入编码向量及其最相关的原型的平均l2距离为:
其中,为等式中提到的相关分数 ,argmax仅用于获取最相关向量的索引,而不参与反向传播。我们通过将学习到的原型相互远离,进一步促进了原型item之间的多样性。多样性术语Ld表示为:
在这里,γ控制原型之间的期望的边际。利用上述两个术语的好处,鼓励原型项目编码紧凑和多样的正常动态的正常帧预测
一般情况下,AEs以连续的视频帧作为输入,重建当前帧或预测后续帧。在这项工作中,我们将重点关注后一种范式。我们首先考虑一个表示为的VAD架构,其中η,δ分别表示AE编码/解码函数E,D的参数。所设计的模型以一系列帧样本x作为输入。然后将AE编码的输入DPU模块Pτ。DPU在参数集τ下对连续视频帧中的归一化动态信息进行编码。我们的少样本目标模型,即元原型单元(MPU),包括主模块DPU和AE解码器,参数集为θ = τ∪δ。以后续的帧样本y为地面真实值,根据上面定义的目标函数对目标模型进行更新。该过程被表示为具有帧对(x,y)的更新函数U。
在推理过程中,测试视频的普通短片段可以在VAD的少样本设置中调整模型到新的场景。为了模拟这种适应过程,在训练阶段实施了元训练策略。在元训练中,采用良好的初始化θ0,使目标模型从θ0开始,应用一次或几次更新函数U的迭代,能够在有限的情况下快速适应数据样本的新场景。我们采用了由α参数化的梯度下降式更新函数[21,36]。然后将函数U表述为:
L是设计的损失函数,对于目标模型。⊙表示元素级的乘积。α是控制一个更新迭代的步长的参数,它被设置为与参数集θ相同的大小。
为了保证场景自适应的鲁棒性,在元演演过程中,根据一个场景中不同输入输出对的误差信号对目标模型进行更新和监督。关键的思想是,目标模型也应该推广到同一场景中的其他帧,而不仅仅是模型被训练过的几个帧。给定一个正常视频的随机输入输出对,初始化θ0的目标模型的一个更新步骤为:
经过T更新迭代,得到了场景适应的模型参数θˆ。我们将T一轮更新迭代表示为一个插曲。将一集中的迭代次数T设置为1,以保证快速适应能力。然后,我们使用θˆ评估模型,通过在与相同的场景中通过随机采样的输入输出对运行网络,以最小化场景误差信号。
应用梯度函数的梯度算法计算上述目标函数的梯度,得到良好的初始化模型θ0∗,并将步长α∗更新为:
我们首先解释整个网络架构的细节,以及异常分数是如何产生的。然后,我们描述了我们的框架的训练和测试阶段。
Network Architecture Details. 我们的框架被实现为一个单个的端到端网络,如图2所示。我们在[22,37]中采用相同的网络架构作为AE的主干,以方便一个公平的比较。在DPU模块中,M注意映射函数实现为全连接层,生成一系列规范化映射,并进一步形成动态原型池。通过AE解码器提出DPU的输出编码进行帧预测。此外,DPU模块是作为几个镜头学习者的元训练,即元原型单元(MPU)。详情请解释如下。
Anomaly Score. 为了更好地量化推理过程中视频帧的异常程度,我们研究了特征重建和帧预测的两种线索。因为动态原型池中的正常动态项目被学习来编码正常编码的紧凑表示,如在等式中5、在推理过程中,通过测量特征重构项的紧性误差为:,可以自然地得到异常得分。Xt和Pt分别表示第t次矩的输入编码图和动态原型池。与以前的方法[22,10,37]一样,帧预测误差也被用作异常描述符:。因此,我们得到了以上两种异常得分,并将其与平衡权重λs组合为:。
Training Phase. 在元训练之前,首先只使用帧预测损失.然后,在一个元训练事件中,我们从一个视频中随机抽取K个双输入输出对的元组,用于的参数更新.从不同视频中采样的k-shot数据被构建为训练小批。从不同场景的视频中采样帧对进行多次训练,得到初始化参数集θ0∗,为场景适应做好了准备。
Testing Phase. 在测试阶段,给定一个新的测试序列,我们简单地使用序列的前几个帧来构造K-shot输入和输出帧对来更新模型参数。在元训练阶段也使用了相同的程序。更新后的模型用于事后的异常检测。
Problem Settings. 为了更好地评估我们的方法的有效性,我们遵循了两个异常检测问题设置,即无监督设置和少镜头设置。第一个在现有的文献[37,10,22,19,23,27]中被广泛采用,在培训期间只有正常的视频。训练后的模型用于检测测试视频中的异常情况。请注意,在训练过程中可以看到测试视频的场景。第二种方法,用于元学习评估,是基于从不同的数据集收集训练和测试视频,以确保在训练和测试过程中场景的多样性。这个设置在[25]中也被称为“跨数据集”测试。总之,第一种设置挑战了它们在一个固定相机下的性能如何的方法,而后一种设置则检查了它们在给定一个新相机时的自适应能力。我们认为,上述设置对于评估一个健壮和实用的异常检测方法是必要的。
Datasets UCSD Ped1 & Ped2,CUHK Avenue,ShanghaiTech,UCF-Crime
Evaluation Metrics. ROC(AUC)curve
Implementation Details.
Evaluation under the unsupervised setting.
Evaluation under the few-shot setting.
这种方法推理速度更快
Model Component Analysis. 我们首先分析了DPU的有效性。我们将M = 10设置为DPU中注意映射函数的默认数。结果列于表4中。很明显,我们的DPU在各种基准上的整体表现得到了很大的提高。
DPU Resolution Analysis. 性能会随着分辨率的提高而提高。
Prototype Quantity Analysis. 根据这些结果,M = 10是一个适当数量的所需原型。随着数量数量的增加,涉及到更多的噪声信息,并且无法保证原型项目的多样性,导致了性能的急剧下降。