Dual Memory Units with Uncertainty Regulation for Weakly Supervised Video Anomaly Detection 论文阅读
中文标题:具有不确定性调节的双存储单元在弱监督视频异常检测中的应用
文章信息:
发表于:AAAI 2023
原文链接:https://arxiv.org/abs/2302.05160
源码:https://github.com/henrryzh1/UR-DMU
Abstract
学习区分正常状态和异常事件的辨别性特征对于弱监督视频异常检测(WS-VAD)任务至关重要。现有方法,无论是针对视频还是片段级标签的方法,主要集中于提取异常数据的表示,而忽略了正常数据的含义。我们观察到这种方案是次优的,即为了更好地区分异常,需要了解什么是正常状态,并可能导致更高的误报率。为解决这一问题,我们提出了一种不确定性调节的双存储单元(UR-DMU)模型,以学习正常数据的表示和异常数据的辨别性特征。具体来说,受传统全局和局部结构对图卷积网络的影响,我们引入了全局和局部多头自注意(GL-MHSA)模块,用于Transformer网络以获取更具表现力的嵌入,以捕捉视频中的关联关系。然后,我们使用两个记忆库,一个额外的异常存储器用于处理困难样本,以存储和分离异常和正常原型,并最大化两个表示之间的边缘。最后,我们提出了一种不确定性学习方案,以学习正常数据的潜在空间,对于来自摄像机切换、物体更改、场景转换等噪声是稳健的。在XD-Violence和UCF-Crime数据集上的大量实验表明,我们的方法在性能上明显优于现有方法。
1 Introduction
视频异常检测(VAD)旨在识别未剪辑视频中异常事件的时间窗口,并在智能视频监视的背景下具有有益的应用。然而,收集精细的异常视频用于训练是困难的,因此弱监督方法已经变得越来越受欢迎,并取得了最先进的性能。在弱监督设置下,多实例学习(MIL)是最有效的策略之一。基于MIL的异常检测方法将每个视频视为一个袋子,其中异常视频被定义为正样本,而正常视频被定义为负样本。同时,异常片段在正样本袋中作为正实例呈现,而正常片段则作为负实例。然后,基于MIL的方法通过选择具有区分性表示的前K个实例作为异常来从视频袋中学习实例级标签。
值得注意的是,MIST(Feng, Hong, and Zheng 2021)通过使用MIL方法生成伪标签并利用自引导注意力增强特征编码器来强调异常区域,开发了一个两阶段的自训练过程。RTFM(Tian et al. 2021)使用特征大小学习函数来识别正实例,有效提高了MIL方法的鲁棒性。然而,现有的弱监督方法主要集中于学习异常实例的区分性特征,而忽视了正常数据的含义,因此导致高误报率。正如图1底部所示,RTFM和HL-Net都会导致误报。
图1:我们使用两个存储单元分别存储正常和异常实例,两个存储单元都吸引相近的实例。正常空间被调节为高斯分布,而异常特征空间没有额外的调节。这样的策略可以更好地处理困难样本,底部曲线显示了视频“黑鹰坠落”的部分预测结果。
为了解决这些问题并更好地区分异常情况,我们提出了一个具有不确定性调节的双存储单元模块,分别存储正常和异常原型,并学习它们的独特分布,如图1顶部所示。先前的方法只使用一个存储单元用于正常性,而我们观察到这样的策略不能很好地处理困难样本,例如,奔跑的动作既存在于正常的锻炼视频中,也存在于犯罪逮捕视频中,因此产生了较高的误报率。双存储单元相比于单一存储单元考虑了更多的周边因素,可能会减少误报。具体而言,我们鼓励异常存储单元从标记为异常的视频中获取更多异常信息,而正常存储单元则从正常和异常视频中获取正常数据模式。遵循RTFM的范例,指出正常特征在低幅度,而异常特征则相反,我们观察到由于来自摄像机切换、主体变换等的噪声,正常特征呈现波动,并进一步用高斯分布格式化低幅度的正常特征。我们采用正常数据不确定性学习(NUL)方案来学习均值特征和不确定性方差,从而生成一个潜在的正常空间。我们可以根据潜在空间区分正常性和异常性,并通过噪声扰动减少误报率。此外,受传统全局和局部结构的启发,我们引入了一个用于Transformer网络的全局和局部多头自注意(GLMHSA)模块,以获得更具表现力的嵌入,捕捉视频中的关联。
综上所述,本文的主要贡献如下:
- 我们设计了一个全局和局部多头自注意力模型,以捕获异常视频的不同关联性,从而增强表达嵌入。
- 我们提出了双存储单元,利用正常和异常存储单元来更好地区分正常和异常的模式。我们还引入了双存储分离损失,以学习更加稳健和具有区分性的特征。
- 我们提出了一种正常数据不确定性学习方案,以增强正常模式的表示能力,并更好地将异常与潜在正常区分开来。
2 Related Work
Weakly Supervised Video Anomaly Detection.视频异常检测(VAD)是计算机视觉中的重要任务(Pang等,2021a),主流方法要么采用仅具有正常数据的无监督学习策略,要么采用具有视频级注释数据的弱监督学习设置。仅具有正常数据的无监督方法无法很好地处理复杂环境,受视频动作定位弱监督学习进展的启发(Nguyen等,2018;Lee,Uh和Byun,2020;Lee等,2021;Yang,Qin和Huang,2022),WS-VAD逐渐受到关注。(Sultani,Chen和Shah,2018)引入了一个大型的真实世界监控数据集,并提出了一个基于MIL的基本框架(V-MIL)与排序损失。(Zhong等,2019)认为正常标签含有噪声,并应用图卷积网络的伪标签生成方法来专门应对噪声。最近的工作大多采用了MIL训练策略。大多数改进扩展了感受野并增强了实例嵌入(Wu和Liu,2021),例如,RTFM提出了多尺度时间网络(MTN)来捕获长期和短期时间依赖关系。其他方法专注于多模态设置,例如(Wei等,2022;Pang等,2021b)同时使用音频和视频信息进行VAD。
自训练策略从粗到细级别生成标签(Zou等,2019;Pang等,2020),并已在半监督学习中进行了探索。在VAD中,(Pang等,2020)提出了一种端到端的自训练方法,用于异常回归,无需手动标记的训练数据。(Feng,Hong和Zheng,2021)提出了一个多实例伪标签生成器和自引导注意力增强编码器,以改进判别性表示。(Li,Liu和Jiao,2022)将Transformer应用于多序列学习,通过自训练方法细化异常得分。这两种类型的方法都认为正常片段存在噪声,并缺乏正常数据学习,而过度学习异常模式而缺乏正常对比会导致过拟合。相比之下,我们采用MIL设置,并使用内存库存储正常和异常模式。此外,我们应用正常数据的不确定性调节来学习潜在的正常空间,并增大正常性和异常之间的距离。
Memory Networks.记忆网络是一种有效的神经网络,用于存储不同的原型,并已应用于各种任务(Yang等,2021b;Luo等,2021)。 (Gong等,2019)提出了一个记忆增强的深度自动编码器,用于抑制异常的重建。(Stephen和Menon,2020)遵循了MemAE框架,并提出了一种新的可读和可更新的记忆方案,在测试时也更新记忆库。(Liu等,2021b)设计了一个带有跳跃连接的自动编码器中的多级记忆模块,用于记忆正常模式以进行光流重建。以上所有方法都使用记忆库从正常中学习。在这项工作中,我们引入了双重记忆单元来存储正常和异常原型,并设计了双重损失来指导记忆库中的原型学习。
Data Uncertainty Learning.数据不确定性学习捕获由噪声和随机性引起的数据方差(Chang等,2020;Li等,2022;Lee等,2021)。 (Chang等,2020)提出了数据不确定性学习方案,以学习人脸识别中的特征嵌入及其不确定性。在视频时间动作定位中,(Lee等,2021)将背景帧形式化为分布外(OOD)样本,并提出了一种不确定性模型来学习不确定性。与(Lee等,2021)不同的是,我们假设异常数据是OOD,而正常数据则遵循高斯分布。正常不确定性模式的潜在空间对于未知的正常样本是有效的。同时,它还帮助模型区分正常性和异常性。
3 Method
这里我们详细介绍了不确定性调节双存储单元(UR-DMU)方法,用于存储正常和异常原型,并详细说明了附加的先验分布。如图2所示,UR-DMU包括三个模块:
用于特征学习的全局和局部多头自注意力(GL-MHSA),
用于存储原型的双存储单元(DMU)以及
用于正常性潜在嵌入学习的正常数据不确定性学习(NUL)。
在接下来的几节中,我们首先简要介绍了我们问题的形成,然后分别描述了上述三个模块,最后展示了训练和测试过程。
图2:我们UR-DMU模型的框架由三部分组成:全局和局部特征学习(GL-MHSA),双存储单元(DMU)和正常数据不确定性学习(NUL)。GL-MHSA提取更好的表达性嵌入,DMU存储正常和异常模式以进行区分,而NUL将正常数据约束为高斯分布以处理不确定性扰动。
3.1 Problem Formation
在WS-VAD任务中遵循MIL设置,我们将正常视频标记为 { v i n } i = 1 N \{v^n_i\}^N_{i=1} {vin}i=1N,将异常视频标记为 { v i a } i = 1 N \{v^a_i\}^N_{i=1} {via}i=1N。每个异常视频都是一个带有至少一个异常片段的包 Y a = 1 Y^a = 1 Ya=1,类似地,一个正常视频被标记为 Y n = 0 Y^n = 0 Yn=0,其中所有片段都是正常的。我们的目标是根据模型 f ( ⋅ ) f(·) f(⋅)对每个 v i v_i vi进行评分,即 Y i = f ( v i ) Y_i = f(v_i) Yi=f(vi)。通常的做法是使用预训练的骨干网提取片段特征,并在提取的特征上进行后续处理,在本文中,我们选择在Kinetics数据集上预训练的I3D模型作为我们的骨干网,并提取连续16帧的RGB特征。提取的视频特征表示为 X i 3 d ∈ R N × F X_{i3d} ∈ \mathbb{R}^{N×F} Xi3d∈RN×F,其中 N N N表示片段数, F F F是提取特征的维度。
3.2 Global and Local Feature Learning
学习异常特征的长期和短期时间依赖关系对于VAD至关重要(Wang et al. 2018a; Wang and Gupta 2018)。传统方法采用图卷积网络提取全局和局部关联性(Wu et al. 2020)。最近,Transformer结构展示了其在处理时间信号之间的长距离关联方面的优势(Vaswani et al. 2017; Dosovitskiy et al. 2021; Liu et al. 2021a; Yang et al. 2021a)。为了同时更好地捕获长期和短期时间依赖关系,我们借鉴了GCN中的全局和局部结构的思想,并为Transformer开发了全局和局部多头自注意力(GL-MHSA)。与传统的MHSA不同,我们添加了一个额外的编码器层
V
l
=
X
i
3
d
W
l
V_l = X_{i3d}W_l
Vl=Xi3dWl,以使用时间掩码学习局部特征:
然后我们使用 softmax(
T
m
T_m
Tm) 对掩码进行归一化,其中
τ
τ
τ 是用于平衡局部距离的敏感因子。在计算 Q、K、V 时,我们使用多层感知器(MLP)和层归一化(LN)从中获得全局和局部特征
X
∈
R
N
×
D
X ∈ \mathbb{R}^{N×D}
X∈RN×D,可以表示为:
3.3 Dual Memory Units
先前的方法使用记忆单元来存储正常数据的原型以实现更好的评分。我们观察到单个单元无法区分困难样本,因此我们使用可学习的正常和异常记忆库来存储对应的模板
M
∈
R
M
×
D
M ∈ \mathbb{R}^{M×D}
M∈RM×D,其中
M
M
M 是记忆库的数量,
D
D
D 是输出特征的维度。我们应用查询和读取操作来鼓励正确的模板学习,并通过查询记忆库
M
M
M 我们可以评估特征之间的相似性:
其中
σ
σ
σ是sigmoid激活函数,
S
∈
R
N
×
M
S ∈ \mathbb{R}^{N×M}
S∈RN×M 是查询分数。然后通过读操作生成的记忆增强特征表示为
M
a
u
g
M_{aug}
Maug。
S
S
S 表示片段是否与记忆库相似。我们沿着第二维度应用
t
o
p
K
topK
topK 选择来确定哪些片段与记忆库最相似:
在方程(4)中,
K
<
<
M
K << M
K<<M,
S
k
;
i
n
d
S_{k;ind}
Sk;ind 表示要存储的
K
K
K 个片段的索引,
S
k
;
s
c
∈
R
N
×
K
S_{k;sc} ∈ \mathbb{R}^{N×K}
Sk;sc∈RN×K 是它们的查询分数。
S
k
∈
R
N
×
1
S_k ∈ \mathbb{R}^{N×1}
Sk∈RN×1 表示记忆匹配的最高分数。
图3显示了双重记忆单元中不同的输入特征。当将正常视频嵌入 X n ∈ R N × D X^n ∈ \mathbb{R}^{N×D} Xn∈RN×D 发送到异常记忆库时,通过查询和读取操作生成 S k ; a n S^n_{k;a} Sk;an 和 M a u g ; a n M^n_{aug;a} Maug;an 。类似地,当视频嵌入经过正常记忆库时,我们也可以获得 S k ; n n S^n_{k;n} Sk;nn 和 M a u g ; n n M^n_{aug;n} Maug;nn 。由于正常输入,异常查询分数 S k ; a n S^n_{k;a} Sk;an 被限制为 0 ∈ R N 0 ∈ \mathbb{R}^N 0∈RN 。而正常查询分数 S k ; n n S^n_{k;n} Sk;nn 应该为 1 ∈ R N 1 ∈ \mathbb{R}^N 1∈RN 。
图3:双重记忆单元将正常和异常实例存储在不同的记忆中。 (a) 显示了正常视频特征经过双重记忆单元并获得相关的输出分数和增强特征。 (b) 是异常视频特征输入的情况。
同样,当异常视频嵌入输入到异常记忆单元时,我们获得 S k ; a a S^a_{k;a} Sk;aa和 M a u g ; a a M^a_{aug;a} Maug;aa。由于异常的稀疏性质,只有几个片段会被异常记忆单元激活。我们也可以从正常记忆单元中获得 S k ; n a S^a_{ k;n} Sk;na和 M a u g ; n a M^a_{aug;n} Maug;na。与正常输入不同,异常查询分数 S k ; a n S^n_{k;a} Sk;an并不全为1,因为异常的弱标签。与MIL相同,在 S k ; a a S^a_{k;a} Sk;aa和 S k ; n a S^a_{k;n} Sk;na中至少有一个元素等于1。
为了训练双重记忆单元,我们定义了一个双重记忆损失,其中包括四个二元交叉熵(BCE)损失:
其中, y n n = 1 ∈ R N y^n_n = 1 ∈ \mathbb{R}^N ynn=1∈RN 和 y a n = 0 ∈ R N y^n_a = 0 ∈ \mathbb{R}^N yan=0∈RN。 S k ; n ; k a S^a_{k;n;k} Sk;n;ka 和 S k ; a ; k a ∈ R S^a _{k;a;k} ∈ R Sk;a;ka∈R 是 S k ; n a S^a_{k;n} Sk;na 和 S k ; a a S^a_{k;a} Sk;aa 的前 K K K个结果沿第一维的均值。标签 y n a y^a_n yna 和 y a a y^a_a yaa 等于1。 L d m L_{dm} Ldm的前两项限制了正常记忆单元学习正常模式,而最后两项确保了异常记忆单元学习异常模式。通过 L d m L_{dm} Ldm,记忆单元存储同源模式。
利用查询分数
S
k
;
n
n
S^n_{k;n}
Sk;nn、
S
k
;
a
n
S^n_{k;a}
Sk;an 和
S
k
;
a
a
S^a_{k;a}
Sk;aa,我们通过三元损失将异常和正常特征嵌入分开。
其中,
f
a
f_a
fa 是来自
X
n
X_n
Xn的感兴趣片段的平均特征,表示正常视频的主要部分。这些片段是由
S
k
;
n
n
S^n_{k;n}
Sk;nn 的
t
o
p
K
topK
topK 索引选择的。类似地,
f
p
f_p
fp 表示异常视频中的正常部分,
f
n
f_n
fn 表示异常视频中的异常部分。
注:这里感觉还是讲复杂了,很多符号感觉都没描述清楚,看了一下源码,其实就是等于用了一个注意力矩阵,然后更新了一下特征的权重,然后将分数做了一个损失。下面的memory的源码:
import math
import torch
import torch.nn as nn
from torch.nn.modules.module import Module
class Memory_Unit(Module):
def __init__(self, nums, dim):
super().__init__()
self.dim = dim
self.nums = nums
self.memory_block = nn.Parameter(torch.empty(nums, dim))
self.sig = nn.Sigmoid()
self.reset_parameters()
def reset_parameters(self):
stdv = 1. / math.sqrt(self.memory_block.size(1))
self.memory_block.data.uniform_(-stdv, stdv)
if self.memory_block is not None:
self.memory_block.data.uniform_(-stdv, stdv)
def forward(self, data): ####data size---> B,T,D K,V size--->K,D
attention = self.sig(torch.einsum('btd,kd->btk', data, self.memory_block) / (self.dim**0.5)) #### Att---> B,T,K
temporal_att = torch.topk(attention, self.nums//16+1, dim = -1)[0].mean(-1)
augment = torch.einsum('btk,kd->btd', attention, self.memory_block) #### feature_aug B,T,D
return temporal_att, augment
if __name__ == "__main__":
mu = Memory_Unit(10,512).cuda()
data = torch.randn((3,20,512)).cuda()
mu(data)
3.4 Normal Date Uncertainty Learning
正如(Tian等,2021年;李等,2021年)所指出的那样,正常特征的幅值低于异常特征,即
E
[
∣
∣
x
a
∣
∣
2
]
>
=
E
[
∣
∣
x
n
∣
∣
2
]
E[||x^a||_2]>=E[||x^n||_2]
E[∣∣xa∣∣2]>=E[∣∣xn∣∣2],
x
a
x^a
xa和
x
n
x^n
xn分别是异常和正常的片段特征。据推测,幅值特征学习也适用于内存输出的增强特征
M
a
u
g
M_{aug}
Maug。因此,异常和正常之间增强特征的幅值可分性定义为
d
(
a
,
n
)
=
∣
∣
m
a
∣
∣
2
−
∣
∣
m
n
∣
∣
2
d(a,n) = ||m^a||_2 − ||m^n||_2
d(a,n)=∣∣ma∣∣2−∣∣mn∣∣2。此外,有效的正常性表示学习应该能够捕获由噪声引入的核心和覆盖方差。我们提出学习正常性的分布,然后异常就不在这个分布之内(OOD)。这个想法已经在无监督方法中得到了广泛的探索,但在WSVAD中很少使用。与无监督异常检测方法类似,我们提出使用高斯分布来约束潜在的正常表示
z
n
z_n
zn,即:
其中,
μ
μ
μ是正常特征的均值,
σ
σ
σ是方差(不确定性)。它们都可以由一个编码器网络进行预测。为了确保正常数据采样操作是可微分的,我们遵循(Chang等,2020年)的方法,使用重新参数化来处理带有噪声的潜在表示。DUL特征
z
n
z_n
zn是通过随机噪声ε ∼ N(0, 1)生成的:
方程(8)表示正常数据的潜在空间。然而,当
σ
σ
σ过大时,样本
z
z
z对
σ
σ
σ很敏感,可能会远离真实特征
μ
μ
μ。为了抑制
σ
σ
σ的不稳定性,需要一个Kullback-Leibler多样性(KLD)正则化项:
在测试阶段,可以跳过方差的计算,我们只需要均值来生成稳健的预测。此外,正如前面提到的,异常是OOD样本,我们需要扩大异常与正常之间的间隔以获得稳健性。异常特征也被送入均值编码器以在相同的空间中获得嵌入
µ
a
µ_a
µa。我们使用幅度距离损失来在潜在的正常空间中将它们分离开来:
其中,
µ
k
a
µ^a_k
µka 是从
M
a
u
g
M_{aug}
Maug 中提取的建议片段的平均特征。这些片段是通过从
S
k
;
a
a
S^a_{k;a}
Sk;aa 中进行的
t
o
p
K
topK
topK 索引操作进行选择的。与上述操作相同,
z
k
n
z^n_k
zkn 是从
S
k
;
n
n
S^n_{k;n}
Sk;nn 和
M
a
u
g
M_{aug}
Maug 中获得的。最后,我们将 DUL 特征与
X
X
X 融合,并将其馈送到分类器中。
3.5 Network training and Testing
Training:将具有相同数量的正常和异常视频的视频配对分成一批,然后输入到我们的模型中。然后,我们为每个片段生成一个分数,并使用二元交叉熵损失来区分正常性和异常性,其中包括五个辅助损失。
其中,Lcls是在视频级标签的监督下的BCE损失,λ1、λ2、λ3、λ4是超参数。
Testing:我们将测试视频馈送到我们的UR-DMU网络。在DUL模块中,我们只使用均值编码器网络来获得特征嵌入。最后,将片段标签分配给帧标签。
4 Experiments
4.1 Datasets and Evaluation Metrics
Dataset.与先前的工作类似,我们在两个大型视频异常检测数据集上进行实验:UCF-Crime(Sultani, Chen, and Shah 2018)和XD-Violence(Wu et al. 2020)。
UCF-Crime是一个大规模监控数据集,包含1900个视频,涵盖了13种异常事件,例如爆炸、逮捕和道路事故。训练集具有视频级标签,包含800个正常视频和810个异常视频,而测试集具有帧级标签,包含140个正常视频和150个异常视频。
XD-Violence是一个包含视频和音频的多模态数据集,其中包括不同的背景:电影、游戏、现场直播等。该数据集共有4754个视频,其中3954个是带有视频级标签的训练视频,另外有800个带有帧级标签的测试视频。
Evaluation Metrics. 我们评估UCF-Crime数据集上的WS-VAD性能,使用帧级接收器工作特性曲线(ROC)下的面积(AUC)。同时,对于XD-Violence数据集,使用帧级精确度-召回率曲线(PR曲线)下的面积(AP)。虚警率(FAR)和仅包含异常数据的异常子集也被应用于消融实验中。
4.2 Implementation Details
4.3 Results on UCF-Crime
4.4 Results on XD-Violence
4.5 Ablation Study
5 Conclusion
在这项工作中,我们提出了一个UR-DMU模型,以有效地区分WS-VAD中的正常和异常。为了获得更具表现力的嵌入,我们引入了GL-MHSA模块来捕获长期和短期时间依赖关系。然后,我们提出了DMU来存储异常和正常的原型,并通过DMU损失来鼓励内存单元学习和分离它们。与此同时,我们提出了DUL方案,从具有噪声扰动的丰富正常数据中学习潜在的正常空间。由于使用了片段级别的特征,我们方法预测的异常窗口和得分仍然相对粗糙且不稳定。在未来,我们计划通过对比学习,在时间窗口和图像空间中探索更细粒度的位置。