摘要
最近的对比语言图像预训练(CLIP)模型在广泛的图像级任务中显示出巨大的成功,显示出学习具有丰富语义的强大视觉表征的卓越能力。如何将这种强大的模型有效地应用于视频领域,并设计一种鲁棒的视频异常检测器,是一个值得研究的问题。在这项工作中,我们提出了VadCLIP,这是一种弱监督视频异常检测(WSVAD)的新范例,它直接利用冻结的CLIP模型,而无需任何预训练和微调过程。与目前直接将提取的特征输入弱监督分类器进行帧级二元分类不同,VadCLIP在CLIP的基础上充分利用了视觉和语言之间的细粒度关联,并涉及双分支。一个分支简单地利用视觉特征进行粗粒度的二元分类,而另一个分支则充分利用细粒度的语言-图像对齐。利用双分支的优势,VadCLIP通过将预训练的知识从CLIP转移到WSVAD任务中,实现了粗粒度和细粒度的视频异常检测。我们在两个常用的基准测试上进行了大量的实验,证明VadCLIP在粗粒度和细粒度WSVAD上都达到了最佳性能,大大超过了最先进的方法。具体来说,VadCLIP在XDViolence和UCF-Crime上分别达到84.51%的AP和88.02%的AUC。代码和特性发布在https://github.com/nwpu-zxr/VadCLIP。
引言
近年来,弱监督视频异常检测(WSVAD, VAD)因其广阔的应用前景而受到越来越多的关注。例如,借助WSVAD,可以方便地开发更强大的智能视频监控系统和视频内容审核系统。在WSVAD中,期望异常检测器仅在提供视频级注释的情况下生成帧级异常置信度。目前该领域的大多数研究都遵循一个系统的过程,其中第一步是使用预训练的视觉模型提取帧级特征,例如C3D (Tran et al. 2015;Sultani, Chen, and Shah 2018), I3D (Carreira and Zisserman 2017;Wu et al. 2020)和ViT (Dosovitskiy et al. 2020;Li, Liu, and Jiao 2022),然后将这些特征馈送到基于多实例学习(MIL)的二元分类器中用于模型训练,最后一步是基于预测的异常置信度检测异常事件。尽管他们的方案简单,结果令人鼓舞,但这种基于分类的范式未能充分利用跨模态关系,例如视觉-语言关系。
在过去的两年中,我们目睹了视觉-语言预训练( VLP )模型( Kim,Son,and Kim 2021 )的发展取得了巨大的进步;Jia et al . 2021;王永进等2021;Chen et al . 2023a ),如CLIP (雷德福等2021),用于学习具有语义概念的更广义的视觉表示。CLIP的主要思想是通过对比学习来对齐图像和文本,即将图像和匹配的文本描述拉在一起,同时在联合嵌入空间中去掉不匹配的对。得益于从网络上爬取的数以亿计的噪声图像-文本对,这些大规模预训练的模型确实展示了它们强大的表示学习以及视觉和语言之间的关联。鉴于CLIP的突破性表现,最近,在CLIP之上构建任务特定模型正成为新兴的研究课题,并应用于广泛的视觉任务,这些模型取得了前所未有的性能。
尽管CLIP及其附属模型在各种视觉任务中显示出巨大的潜力,但这些方法主要集中在图像域。因此,如何将这种从图像-文本对中学习到的模型有效地适应于弱监督下更复杂的视频异常检测任务,值得深入探索。最近,一些作品(Joo et al. 2023;Lv等人(2023)试图利用已经学习到的CLIP知识,然而,这些方法将其范围限制在直接使用从CLIP图像编码器中提取的视觉特征,而忽略了利用视觉和语言之间的语义关系。
为了有效地利用广义知识,使CLIP在WSVAD任务中充分发挥其潜力,基于WSVAD的特点,需要解决几个关键的挑战。首先,探索捕获跨时间上下文依赖关系的方法至关重要。其次,确定如何利用所学知识和视觉语言联系是至关重要的。第三,在弱监督下保持CLIP的最佳性能至关重要。
在这项工作中,我们提出了一种基于CLIP的WSVAD新范式,称为VadCLIP。VadCLIP由几个组件组成,以克服上述挑战。具体来说,对于第一个挑战,我们提出了一个局部-全局时间适配器(LGT-Adapter),这是一个用于视频时间关系建模的轻量级模块。LGT-Adapter包括局部时间适配器和全局时间适配器两个组件,其中局部时间适配器主要捕获局部时间依赖性,效率很高,因为大多数情况下当前事件与相邻事件高度相关,而全局时间适配器则以更少的参数在更整体的视图中平滑特征信息。对于第二个挑战,与当前方法不同(Joo et al. 2023;Lv等人(2023),我们鼓励VadCLIP也利用文本特征来尽可能多地保留所学的知识。如图1所示,VadCLIP被设计为双分支样式,其中一个简单而直接地利用视觉特征进行二进制分类(C分支),而另一个同时使用视觉和文本特征进行语言-图像对齐(A分支)。此外,这种双分支无缝地实现了粗粒度和细粒度的WSVAD (Wu, Liu, and Liu 2022)。对于A分支,我们在视频和视频级文本标签之间建立了桥梁。此外,我们提出了两种提示机制(Wu et al. 2023),即可学习提示和视觉提示,以指定简洁文本是关于视频的。与手工编写的提示相比,可学习的提示不需要大量的专家知识,有效地将预训练的知识转移到下游的WSVAD任务中。视觉提示的灵感来自于视觉语境可以使文本更加准确和具有辨别力。试想,如果视频中存在汽车,"车祸"和"打架"两类异常事件会更容易区分。因此,在视觉提示中,我们关注视频中的异常信息,将C分支的异常聚焦视觉内容与A分支的文本标签相结合,进行自动提示工程。这样的实践无缝地创建了双分支之间的连接。
图1
对于第三个挑战,多实例学习(MIL) (Sultani, Chen, and Shah 2018;Wu et al. 2020)是最常用的方法。对于A分支的语言-视觉对齐,我们引入了MIL-Align机制,其核心思想是为每个标签选择最匹配的视频帧来代表整个视频。
注意,在训练过程中,CLIP图像和文本编码器的权重保持固定,并反向传播梯度以优化设计的适配器和提示模块的这些可学习参数。
总的来说,我们的工作有三个方面的贡献:
-
本文提出了一种新的VadCLIP diagram,该diagram采用双分支分别检测视觉分类和语言-视觉对齐方式下的视频异常。利用双分支的优势,VadCLIP实现了粗粒度和细粒度的WSVAD。据我们所知,VadCLIP是第一个有效地将预训练的语言视觉知识转移到WSVAD的作品。
-
我们提出了三个non-vital的组成部分来应对新diagram带来的新挑战。LGT-Adapter用于从不同的角度捕获时间依赖性;设计了两种提示机制,使冻结预训练模型有效地适应WSVAD任务;MIL-Align实现了弱监督下对齐范式的优化,以尽可能多地保留预训练的知识。
-
我们展示了VadCLIP在两个大规模流行基准上的强度和有效性,并且VadCLIP达到了最先进的性能,例如,它在XD-Violence和UCF-Crime上分别获得了前所未有的84.51%的AP和88.02%的AUC,大大超过了目前基于分类的方法。
相关工作
Vision-Language Pre-training
视觉语言预训练在过去几年中取得了令人瞩目的进展,它旨在通过大规模数据的预训练来学习视觉和语言之间的语义对应关系。作为最具代表性的工作之一,CLIP在一系列视觉语言下游任务上表现出令人印象深刻的性能,包括图像分类(Zhou等人,2022a),图像字幕(Mokady, Hertz, and Bermano 2021),目标检测(Zhou等人,2022b),场景文本检测(Yu等人,2023),密集预测(Zhou等人,2022c;Rao et al. 2022),以此类推。最近,一些后续工作试图利用视频域的预训练模型。例如,CLIP4Clip (Luo et al. 2022)将CLIP模型的知识转移到视频文本检索中,一些作品(Wang, Xing, and Liu 2021;Lin et al. 2022;Ni et al. 2022)试图利用CLIP进行视频识别,此外,CLIP还用于处理更复杂的视频动作定位任务(Nag et al. 2022;Ju et al. 2022)。更一般地说,Ju等人(Ju et al. 2022)提出了一个简单而强大的基线,以有效地适应预训练的基于图像的视觉语言模型,并利用其强大的一般视频理解能力。在这项工作中,我们深入探讨了如何将预先训练好的CLIP视觉语言知识从图像级有效地应用到视频级下游WSVAD中。
方法
问题定义
WSVAD任务假设在训练阶段只有视频级别的标签可用。给定视频 v v v,如果该视频的所有帧都不包含异常事件,则将该视频定义为正常视频,并标记 y = 0 y=0 y=0;否则,如果至少有一帧包含异常事件,则将该视频标记为异常,标记为 y = 1 y=1 y=1。WSVAD任务的目标是训练一种在仅提供视频级注释的情况下能够预测帧级异常置信度的检测模型。
以往的工作一般是利用预训练的3D卷积模型,如C3D (Tran et al. 2015)和I3D (Carreira and Zisserman 2017),提取视频特征,然后将这些特征馈送到基于MIL的二元分类器中,本文将这种范式称为基于分类的范式。近年来,CLIP作为一种大规模的语言视觉预训练模型,已经彻底改变了计算机视觉的许多领域,并在广泛的下游任务中显示出强大的泛化能力。受CLIP的启发,我们的工作不仅使用CLIP的图像编码器作为主干来提取视频特征,还尝试利用CLIP的文本编码器来充分利用视觉内容和文本概念之间的强大关联。我们的工作如图2所示。
图2
Local and Global Temporal Adapter
正如我们所知,CLIP是在从网络上抓取的大规模图像-文本对上进行预训练的。在本节中,我们研究如何为CLIP建模时间依赖性并弥合图像域和视频域之间的差距。同时,学习WSVAD任务的长期和短期时间依赖关系也很重要(Zhou, Yu, and Yang 2023;Wu and Liu 2021)。从效率和感受野的角度出发,设计了一种兼容局部和全局感受野的时间建模方法。
Local Module
为了捕获局部时间依赖性,我们在CLIP的冻结图像编码器的帧级特征 X c l i p ∈ R n × d X_{clip}\in\mathbb{R}^{n\times d} Xclip∈Rn×d上引入了一个Transformer编码器层,其中 n n n为视频的长度, d d d为维度大小,本文将其设置为512。请注意,这一层不同于普通的Transformer编码器层,因为它将自注意力计算限制在局部窗口(Liu et al. 2021),而不是全局范围。具体而言,我们将帧级特征在时间维度上拆分为等长重叠的窗口,在每个窗口内进行自注意力计算,并且窗口之间没有信息交换。这种运算具有像卷积一样的局部接受域,并且具有较低的计算复杂度。
Global Module
为了进一步捕获全局时间依赖关系,我们在局部模块之后引入了轻量级GCN模块,由于GCN在VAD中的广泛采用和经过验证的性能,我们采用GCN来捕获全局时间依赖关系(Zhong et al. 2019;Wu et al. 2020;Wu and Liu 2021)。根据(Zhong et al. 2019;Wu et al. 2020),我们使用GCN从特征相似度和相对距离的角度对全局时间依赖性进行建模,可以总结如下:
X g = g e l u ( [ S o f t m a x ( H s i m ) ; S o f t m a x ( H d i s ) ] X l W ) X_{g}=gelu\left(\left[Softmax\left(H_{sim}\right);Softmax\left(H_{dis}\right)\right]X_{l}W\right) Xg=gelu([Softmax(Hsim);Softmax(Hdis)]XlW),(1)
其中 H s i m H_{sim} Hsim和 H d i s H_{dis} Hdis是邻接矩阵,使用Softmax归一化来确保 H s i m H_{sim} Hsim和 H d i s H_{dis} Hdis的每一行之和等于1。 X l X_{l} Xl为从局部模块获得的帧级视频特征, W W W为唯一可学习的权重,用于变换特征空间,这种设置体现了全局模块的轻量化。
Feature similarity branch
设计特征相似分支,生成GCN的相似关系邻接矩阵。我们使用逐帧余弦相似度来计算邻接矩阵 H s i m H_{sim} Hsim,其表示如下:
H s i m = X l X l ⊤ ∥ X l ∥ 2 ⋅ ∥ X l ∥ 2 ( 2 ) H_{sim}=\frac{X_lX_l^\top}{\left\|X_l\right\|_2\cdot\left\|X_l\right\|_2}\quad(2) Hsim=∥Xl∥2⋅∥Xl∥2XlXl⊤(2)
我们还使用阈值运算来过滤弱关系(Wu et al. 2020)。
Position distance branch
位置距离分支用于捕获基于每两帧之间位置距离的远程依赖关系。邻近邻接矩阵如下所示:
H d i s ( i , j ) = − ∣ i − j ∣ σ ( 3 ) H_{dis}(i,j)=\frac{-|i-j|}{\sigma}\quad(3) Hdis(i,j)=σ−∣i−j∣(3)
第 i i i帧与第 j j j帧之间的接近关系仅由它们的相对时间位置决定。σ是控制距离关系影响范围的超参数。局部Transformer层和GCN层都采用了残差连接,防止特征过平滑。
Dual Branch and Prompt
Dual Branch
与以往的WSVAD工作不同,我们的VadCLIP包含双分支,更准确地说,除了传统的二元分类分支(C-Branch)外,我们还引入了一个新的视频文本对齐分支,称为A - Branch。具体来说,经过时间建模后,将视频特征 X g X_g Xg馈送入一个全连接(FC)层,得到最终的视频特征 X ∈ R n × d X\in\mathbb{R}^{n\times d} X∈Rn×d。在C-Branch中,我们将 X X X输入一个包含前馈网络(FFN)层、FC层和Sigmoid激活的二元分类器中,以获得异常置信度 A ∈ R n × 1 A\in\mathbb{R}^{n\times1} A∈Rn×1。
A = S i g m o i d ( F C ( F F N ( X ) + X ) ) ( 4 ) A=Sigmoid\left(FC\left(FFN\left(X\right)+X\right)\right)\quad(4) A=Sigmoid(FC(FFN(X)+X))(4)
在A-Branch中,文本标签(例如,abuse, riot, fighting等)不再被编码为one-hot向量,而是使用CLIP的文本编码器将其编码为类嵌入,我们始终利用CLIP的冻结预训练文本编码器,因为文本编码器可以为视频异常检测提供先验的语言知识。然后我们计算类嵌入与帧级视觉特征之间的匹配相似度,得到对齐映射 M ∈ R n × m M\in\mathbb{R}^{n\times m} M∈Rn×m,其中 m m m为文本标签的个数,这种设置类似于CLIP。在A - Branch中,每个输入文本标签代表一类异常事件,因此自然地实现了细粒度的WSVAD。
Learnable Prompt
在WSVAD中,文本标签是单词或短语,它们过于简洁,无法很好地概括异常事件。为了学习文本嵌入的鲁棒可转移性,我们从CoOp (Zhou et al. 2022a)中获得灵感,并在原始的类嵌入中添加了可学习提示。具体来说,首先通过CLIP tokenizer将原始文本标签转换为class token,即 t i n i t = T o k e n i z e r ( L a b e l ) t_{init}=Tokenizer(Label) tinit=Tokenizer(Label),其中 L a b e l Label Label是离散的文本标签,例如,战斗,射击,道路事故等。然后我们将 t i n i t t_{init} tinit与可学习提示符 { c 1 , . . . , c l } \{c_{1},...,c_{l}\} {c1,...,cl}进行拼接,它包含 l l l个上下文token以形成一个完整的句子token,因此文本编码器的输入如下:
t p = { c 1 , . . . , t i n i t , . . . , c l } (5) t_p=\{c_1,...,t_{init},...,c_l\}\quad\text{(5)} tp={c1,...,tinit,...,cl}(5)
这里我们将class token放在序列的中间。然后将该序列token添加到位置嵌入中,获得位置信息,最后CLIP的文本编码器以 t p t_p tp为输入,生成类嵌入 t o u t ∈ R d t_{out}\in\mathbb{R}^{d} tout∈Rd。
Anomaly-Focus Visual Prompt
为了进一步提高文本标签对异常事件的表示能力,我们研究了如何使用视觉上下文来细化类嵌入,因为视觉上下文可以使简洁的文本标签更加准确。为此,我们提出了一种聚焦异常的视觉提示,它聚焦于异常片段中的视觉嵌入,并将这些嵌入聚合为类嵌入的视频级提示。我们首先使用从C-Branch获得的异常置信度A作为异常attention,然后通过异常attention与视频特征 X X X的点积计算视频级别提示符,如下所示:
V = N o r m ( A ⊤ X ) ( 6 ) V=Norm\begin{pmatrix}A^\top X\end{pmatrix}\quad(6) V=Norm(A⊤X)(6)
其中Norm为归一化, V ∈ R d V\in\mathbb{R}^{d} V∈Rd为异常聚焦视觉提示。然后,我们将 V V V添加到类嵌入输出中,并通过简单的FFN层和残差连接获得最终特定于实例的类嵌入 T T T。
T = F F N ( A D D ( V , t o u t ) ) + t o u t ( 7 ) T=FFN\left(ADD\left(V,t_{out}\right)\right)+t_{out}\quad(7) T=FFN(ADD(V,tout))+tout(7)
其中ADD是逐元素加法。这样的实现允许类嵌入从视频中提取相关的视觉上下文。
有了 X X X和 T T T,我们计算所有类嵌入与帧级视觉特征之间的匹配相似度,得到对齐图 M M M。
Objective Function
对于C-Branch,我们遵循之前的工作(Wu et al. 2020),并使用Top-K机制在异常和正常视频中选择K个高异常置信度作为视频级别预测。然后,我们使用视频级预测和ground-truth之间的二元交叉熵来计算分类损失 L b c e \mathcal{L}_{bce} Lbce。
对于A-Branch来说,我们面临着新的挑战:1)没有异常的信心;2)面对多类而不是二元类。为了解决这个难题,我们提出了MIL- Align机制,它类似于普通的MIL。具体来说,我们考虑了对齐映射 M M M,因为它表达了帧级视频特征和所有类嵌入之间的相似性。对于每一行,我们选择前K个相似点并计算平均值来衡量该视频与当前类之间的对齐程度。得到向量 S = { s 1 , . . . , s m } S=\{s_{1},...,s_{m}\} S={s1,...,sm}表示本视频与所有类的相似度。我们希望视频及其配对文本标签在其他标签中具有最高的相似度。为此,首先对多类预测进行如下计算:
p i = e x p ( s i / τ ) ∑ j e x p ( s j / τ ) ( 8 ) \begin{aligned}p_i&=\frac{exp\left(s_i/\tau\right)}{\sum_jexp\left(s_j/\tau\right)}&(8)\end{aligned} pi=∑jexp(sj/τ)exp(si/τ)(8)
其中 p i p_i pi是关于第 i i i类的预测,τ是用于标度的温度超参数。最后,利用交叉熵计算出对齐损失 L n c e \mathcal{L}_{nce} Lnce。
除了分类损失 L b c e \mathcal{L}_{bce} Lbce和对齐损失 L n c e \mathcal{L}_{nce} Lnce之外,我们还引入了一个对比损失来稍微推开正常类嵌入和其他异常类嵌入,这里我们首先计算正常类嵌入和其他异常类嵌入之间的余弦相似度,然后计算对比损失 L c t s \mathcal{L}_{cts} Lcts,公式如下:
L c t s = ∑ j m a x ( 0 , t n ⊤ t a j ∥ t n ∥ 2 ⋅ ∥ t a j ∥ 2 ) ( 9 ) \mathcal{L}_{cts}=\sum_{j}max\left(0,\frac{t_{n}^{\top}t_{aj}}{\left\|t_{n}\right\|_{2}\cdot\left\|t_{aj}\right\|_{2}}\right)\quad(9) Lcts=∑jmax(0,∥tn∥2⋅∥taj∥2tn⊤taj)(9)
其中, t n t_n tn为正常类嵌入, t a t_a ta为异常类嵌入。
综上所述,VadCLIP的最终总目标为:
L = L b c e + L n c e + λ L c t s ( 10 ) \mathcal{L}=\mathcal{L}_{bce}+\mathcal{L}_{nce}+\lambda\mathcal{L}_{cts}\quad(10) L=Lbce+Lnce+λLcts(10)
Inference
VadCLIP包含双分支,它使自己能够处理细粒度和粗粒度的WSVAD任务。对于细粒度WSVAD,我们遵循之前的工作(Wu, Liu, and Liu 2022),并在对齐图 M M M上使用阈值策略来预测异常事件。对于粗粒度WSVAD,有两种计算帧级异常度的方法。第一种是直接使用C-Branch中的异常置信度,第二种是使用A-Branch中的对齐图,具体来说就是将视频与正常类的相似度相减1就是异常度。最后,我们从这两种方法中选择最优的方法来计算帧级异常度。