【视频异常检测】Open-Vocabulary Video Anomaly Detection 论文阅读

Open-Vocabulary Video Anomaly Detection 论文阅读

  • Abstract
  • Method
    • [3.1. Overall Framework](#3.1. Overall Framework)
    • [3.2. Temporal Adapter Module](#3.2. Temporal Adapter Module)
    • [3.3. Semantic Knowledge Injection Module](#3.3. Semantic Knowledge Injection Module)
    • [3.4. Novel Anomaly Synthesis Module](#3.4. Novel Anomaly Synthesis Module)
    • [3.5. Objective Functions](#3.5. Objective Functions)
      • [3.5.1 Training stage without pseudo anomaly samples](#3.5.1 Training stage without pseudo anomaly samples)
      • [3.5.2 Fine-tuning stage with pseudo anomaly samples](#3.5.2 Fine-tuning stage with pseudo anomaly samples)
  • [4. Experiments](#4. Experiments)
  • [5. Conclusion](#5. Conclusion)

文章信息:

原文链接:https://arxiv.org/abs/2311.07042

无源码

发表于:CVPR 2024

Abstract

当前的视频异常检测(VAD)方法在弱监督下通常局限于封闭集设置,并且可能在测试数据中存在未见过的异常类别的开放世界应用中遇到困难。最近的一些研究尝试解决一个更现实的问题,即开放集异常检测(open-set VAD),其旨在检测给定已见异常和正常视频的未见异常 。然而,这样的设置侧重于预测帧异常分数,无法识别异常的具体类别,尽管这种能力对于构建更加明智的视频监控系统至关重要。本文进一步探讨了开放词汇视频异常检测(OVVAD),我们旨在利用预训练的大型模型来检测和分类已见和未见的异常。为此,我们提出了一种将OVVAD分解为两个相互补充的任务的模型 - 无类别检测和特定类别分类,并联合优化这两个任务。特别地,我们设计了一个语义知识注入模块,从大型语言模型中引入语义知识用于检测任务,并设计了一个新颖的异常合成模块,借助大型视觉生成模型生成伪造的未见异常视频,用于分类任务。这些语义知识和合成异常显著扩展了我们模型在检测和分类各种已见和未见异常方面的能力。在三个广泛使用的基准测试上的大量实验表明,我们的模型在OVVAD任务上达到了最先进的性能水平。


图1.红色框为作者解决的问题(识别未见过的视频异常,并且还能对未见过的异常进行分类)

作者的贡献总结如下:

  • 我们探索了在一个具有挑战性但在实践中非常重要的开放词汇设置下的视频异常检测。据我们所知,这是针对开放词汇视频异常检测(OVVAD)的第一项工作。
  • 然后,我们提出了一个建立在预训练的大型模型之上的模型,将OVVAD任务分解为两个相互补充的子任务------无类别检测和特定类别分类------并共同优化它们以实现准确的OVVAD。
  • 在无类别检测任务中,我们设计了一个几乎无权重的时间适配器模块和一个语义知识注入模块,大大增强了正常/异常帧的检测能力。
  • 在细粒度异常分类任务中,我们引入了一种新颖的异常合成模块,用于生成伪造的未见异常视频,以便准确分类新型异常类型。

Method

Problem Statement .所研究的问题,OVVAD,可以正式地陈述如下。假设我们有一组训练样本 X = { x i } i = 1 N + A \mathcal{X} = \{ x_i\} {i= 1}^{N+ A} X={xi}i=1N+A,其中 X n = { x i } i N \mathcal{X} n= \{ x_i\} i^N Xn={xi}iN 是正常样本集合, X a = { x i } i = N + 1 N + A \mathcal{X}a=\{x_i\}{i=N+1}^{N+A} Xa={xi}i=N+1N+A 是异常样本集合。对于 X a \mathcal{X}a Xa 中的每个样本 x i x_i xi,它都有一个相应的视频级别的类别标签 y i , y i ∈ C b a s e y_i,y_i\in C{base} yi,yi∈Cbase,这里, C b a s e C{base} Cbase 表示基本(已见)异常类别的集合, C C C 是 C b a s e C{base} Cbase 和 C n o v e l C{novel} Cnovel 的并集,其中 C n o v e l C_{novel} Cnovel 表示新颖(未见)异常类别的集合。根据训练样本 X \mathcal{X} X,目标是训练一个能够检测和分类基本和新颖异常的模型。具体来说,模型的目标是为每个帧预测异常置信度,并在视频中存在异常时识别异常类别。

3.1. Overall Framework

传统方法基于封闭集分类不太可能处理开放词汇情景下的VAD。为此,我们利用语言-图像预训练模型,例如CLIP,作为基础,因为它具有强大的零样本泛化能力。如图2所示,给定一个训练视频,我们首先将其馈送到CLIP的图像编码器 Φ C L I P − v \Phi_{CLIP-v} ΦCLIP−v 中,以获得具有形状为 n × c n\times c n×c 的帧级特征 x f x_f xf,其中 n n n 是视频帧数, c c c 是特征维度。然后这些特征通过TA模块、SKI模块和detector,产生帧级异常置信度 p p p,这个流程主要用于类别不可知的检测任务。另一方面,对于类别特定的分类,我们从不同视觉任务的其他开放词汇作品中汲取灵感,并使用跨模态对齐机制。具体来说,我们首先生成跨帧特征的视频级聚合特征,然后生成异常类别的文本特征/嵌入,最后根据视频级特征和文本特征之间的对齐估计异常类别。此外,我们引入NAS模块,借助大型语言模型(LLM)和人工智能生成内容模型(AIGC),生成潜在的新颖异常,以实现新类别的识别。

3.2. Temporal Adapter Module

时间依赖性在VAD中起着至关重要的作用。在这项工作中,我们利用了CLIP的冻结图像编码器来获得视觉特征,但由于CLIP是在图像-文本对上预训练的,因此缺乏对时间依赖性的考虑。为了弥补图像和视频之间的差距,最近的研究中出现了使用时间变换器的做法。然而,这样的范式在新颖类别上明显表现出性能下降,可能的原因是时间变换器中的额外参数可能会特化于训练集,从而损害对新颖类别的泛化能力。因此,我们设计了一个几乎无权重的时间适配器来处理时间依赖性,它是建立在经典的图卷积网络之上的。从数学上讲,它可以表示如下:

其中LN是层归一化操作,H是邻接矩阵,softmax归一化用于确保H的每一行的总和等于一。这样的设计用于基于每两帧之间的位置距离捕获上下文依赖关系。邻接矩阵的计算如下:

第 i i i 帧和第 j j j 帧之间的接近关系仅由它们的相对时间位置决定。 σ \sigma σ 是一个超参数,用于控制距离关系的影响范围。根据这个公式,两帧之间的时间距离越接近,接近关系得分越高,反之越低。值得注意的是,在 TA 模块中,只有层归一化涉及少量参数。

3.3. Semantic Knowledge Injection Module

人类在感知环境时通常会利用先验知识,例如,我们可以根据气味和烟雾推断火灾的存在,而不直接看到火焰。基于这个想法,我们提出了 SKI 模块,明确引入额外的语义知识来辅助视觉检测。如图 2 \color{red}{2} 2 所示,对于视频中的正常事件,我们使用大规模语言模型,例如,ChatGPT [2] 和 SparkDesk 1 ^{1} 1,以固定的模板提示,获取关于常见场景和动作的信息,例如街道、公园、购物大厅、步行、奔跑、工作等等。同样,我们生成与异常场景相关的额外词语,包括爆炸、爆裂、火光等术语。最后,我们获得了几个短语列表,表示为 M p r i o r M_{prior} Mprior,其中包含名词词语(场景)和动词词语(动作)。拥有 M p r i o r M_{prior} Mprior 后,我们利用 CLIP 的文本编码器提取文本嵌入作为语义知识,具体如下所示,

其中 F t e x t ∈ R l × c F_{text}\in\mathcal{R}^{l\times c} Ftext∈Rl×c, Φ C L I P − t \Phi_{CLIP-t} ΦCLIP−t 表示 CLIP 的文本编码器, Φ t o k e n \Phi_{token} Φtoken 是将单词转换为向量的语言分词器。

然后,为了有效地将这些语义知识合并到视觉信息中,以增强异常检测的效果,我们设计了一种跨模态注入策略。该策略鼓励视觉信号寻找相关的语义知识并将其整合到过程中。这样的操作如下所示:

其中, F k n o w ∈ R n × c F_{know}\in\mathcal{R}^{n\times c} Fknow∈Rn×c,我们使用sigmoid而不是softmax,以确保视觉信号可以涵盖更多相关的语义概念。

最后,我们将 F k n o w F_{know} Fknow和 x t x_t xt连接起来,创建一个包含视觉信息和整合语义知识的输入。我们将这个输入馈送到一个二元检测器中,为类别无关检测生成异常置信度。

3.4. Novel Anomaly Synthesis Module

尽管当前的预训练视觉-语言模型,如CLIP,在零样本能力方面表现出色,但它们在各种下游任务,特别是与视频相关的任务上的零样本性能仍然不尽人意。出于同样的原因,我们的模型是基于这些预训练的视觉-语言模型构建的,并且在基础异常和正常样本上进行训练,这使得它在面对新异常时容易出现泛化缺陷。随着大型生成模型的出现,生成样本作为伪训练数据的做法已经成为一种可行的解决方案。因此,我们提出了NAS模块,根据潜在的异常类别生成一系列伪新异常样本。然后,我们利用这些样本对提出的模型进行微调,以改善对新异常的分类和检测。总的来说,NAS模块包括三个关键过程:

1)首先,我们使用预定义的模板 p r o m p t g e n prompt_{gen} promptgen(例如, g e n e r a t e generate generate)来提示大型语言模型(LLMs,例如ChatGPT、ERNIE Bot [41]),生成关于"Fighting"场景的十个简短描述,以获取潜在新类别的文本描述。然后,我们利用人工智能生成内容(AIGC)模型,例如DALL·E mini [30]、Gen-2 [7],来生成相应的图像,以创建短视频。这可以表示为:

  1. 随后,对于 I g e n I_{gen} Igen,我们借鉴 [18] 的思路,引入了一种简单而有效的动画策略,将单张图像转换为模拟场景变化的视频片段。具体地,给定一张图像,我们使用不同的裁剪比例来选择相应的图像区域,然后将这些区域调整回原始尺寸,并级联它们以创建新的视频片段 S c a t S_{cat} Scat。

3)最后,为了模拟现实世界中的情况,其中异常视频通常是长而未经修剪的,我们引入了第三步,伪异常合成,通过将 S c a t S_{cat} Scat 插入到随机选择的正常视频中。此外,插入位置也是随机选择的。这个过程产生了最终的伪异常样本 V n a s \mathcal{V}_{nas} Vnas。详细描述和结果请参考补充材料。

有了 V n a s \mathcal{V}_{nas} Vnas,我们对最初在 X \mathcal{X} X 上训练的模型进行微调,以增强其对新异类的泛化能力。

3.5. Objective Functions

3.5.1 Training stage without pseudo anomaly samples

对于类别不可知的检测,我们遵循之前的视频异常检测工作[27,49],使用 Top-K 机制在异常和正常视频中选择前 K K K 个高异常置信度值。我们计算这些选择的平均值,并将平均值输入到 sigmoid 函数中作为视频级别的预测。在这里,我们设置 K = n / 16 K=n/16 K=n/16 用于异常视频, K = n K=n K=n 用于正常视频。最后,我们计算视频级别预测和二进制标签之间的二元交叉熵 L b c e L_{bce} Lbce。

关于类别特定的分类,我们计算聚合的视频级特征与文本类别嵌入之间的相似性,以得出视频级别的分类预测。我们还使用交叉熵损失函数来计算视频级别的分类损失 L c e L_{ce} Lce。鉴于 OVVAD 是一个弱监督任务,我们无法直接从帧级别注释中获得视频级别的聚合特征。我们遵循 [49],使用基于软注意力的聚合方法,如下所示:

对于文本类别嵌入,我们受到 CoOp[63] 的启发,将可学习的提示附加到原始类别嵌入中。

对于 SKI 模块的参数,即 F t e x t F_{text} Ftext,我们旨在在训练阶段明确进行优化。我们打算区分正常知识嵌入和异常知识嵌入。对于正常视频,我们期望它们的视觉特征与正常知识嵌入的相似性较高,与异常知识嵌入的相似性较低。为此,我们首先提取每个视频与文本知识嵌入之间的相似性矩阵,然后为每个帧选择前 10 % 10\% 10% 最高分,并计算平均值,最后应用基于交叉熵的损失 L s i m − n L_{sim-n} Lsim−n。对于异常视频,我们预计异常知识嵌入与异常视频帧特征之间的相似性较高。由于弱监督情况下缺少精确的帧级注释,我们采用了一种硬注意力的选择机制,称为 Top-K,来定位异常区域。然后执行相同的操作来计算损失 L s i m − a L_{sim-a} Lsim−a。

总的来说,在训练阶段,我们使用了三个损失函数,总损失函数为:

L s i m L_{sim} Lsim 是 L s i m − n L_{sim-n} Lsim−n 和 L s i m − a L_{sim-a} Lsim−a 的总和。

3.5.2 Fine-tuning stage with pseudo anomaly samples

在获得 NAS 模块生成的 V n a s \mathcal{V}{nas} Vnas 后,我们继续对模型进行微调。 V n a s \mathcal{V}{nas} Vnas 是合成的,为我们提供了帧级别的标注,使我们能够使用完整的监督来优化我们的检测模型。对于分类, L c e 2 L_{ce2} Lce2 与 L c e L_{ce} Lce 保持相同,关键区别在于标签不仅适用于基础类别,还适用于潜在的新类别。对于检测, L b c e 2 L_{bce2} Lbce2 是帧级别的二元交叉熵损失。

4. Experiments


5. Conclusion

在本论文中,我们提出了一种新模型,基于预训练的大型模型,用于弱监督下的开放词汇视频异常检测任务。由于开放词汇视频异常检测的挑战性质,当前的视频异常检测方法在效率上面临困难。为了解决这些独特的挑战,我们明确将开放词汇视频异常检测分解为类别不可知的检测和类别特定的分类子任务。然后,我们引入了几个临时模块:时间适配器和语义知识注入模块主要旨在促进对基本和新颖异常的检测,新颖异常合成模块生成了几个潜在的伪新颖样本,以帮助所提出的模型更准确地感知新颖异常。在三个公共数据集上进行的大量实验表明,所提出的模型在开放词汇视频异常检测任务上表现出了优势。未来,利用AIGC模型的辅助生成更生动的伪异常样本的研究仍有待探索。

相关推荐
EasyCVR1 分钟前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
蒙娜丽宁9 分钟前
《Python OpenCV从菜鸟到高手》——零基础进阶,开启图像处理与计算机视觉的大门!
python·opencv·计算机视觉
光芒再现dev11 分钟前
已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
运维·python·gpt·语言模型·自然语言处理
好喜欢吃红柚子25 分钟前
万字长文解读空间、通道注意力机制机制和超详细代码逐行分析(SE,CBAM,SGE,CA,ECA,TA)
人工智能·pytorch·python·计算机视觉·cnn
小馒头学python29 分钟前
机器学习是什么?AIGC又是什么?机器学习与AIGC未来科技的双引擎
人工智能·python·机器学习
神奇夜光杯38 分钟前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
千天夜1 小时前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流
测试界的酸菜鱼1 小时前
Python 大数据展示屏实例
大数据·开发语言·python
羊小猪~~1 小时前
神经网络基础--什么是正向传播??什么是方向传播??
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
软工菜鸡1 小时前
预训练语言模型BERT——PaddleNLP中的预训练模型
大数据·人工智能·深度学习·算法·语言模型·自然语言处理·bert