论文笔记《Open-Vocabulary Video Anomaly Detection》

论文笔记《Open-Vocabulary Video Anomaly Detection》

Administrator 10 2025-06-20
  • 论文 - 《Open-Vocabulary Video Anomaly Detection》
  • 关键词 -

1 引言

  • 过去的研究问题 - 开放集视频异常检测(open-set VAD)
    • 目标:在仅提供正常视频和已见异常的情况下,检测测试集中未见过的异常。
    • 局限:这种设定下关注的帧级别的异常得分,无法识别异常的具体类别,对异常类别的语义理解方面仍存在不足。
  • 提出新的研究问题 - 开放词汇视频异常检测(OVVAD)
    • 目标:利用预训练的大模型来检测并分类已见和未见的异常类型。
    • 提出将 OVVAD 分解为两个互补的任务:类别无关的检测类别相关的分类
  • 几种 VAD 问题的对比如图1所示
paper88-1.webp

  • 本文方法
    • 为了提升类别无关的检测性能,从两个方面进行了改进:
      • 1)引入了一个几乎无参数的时间适配器(Temporal Adapter, TA)模块,用于建模视频中的时序关系;
      • 2)设计了一个新颖的语义知识注入模块(Semantic Knowledge Injection, SKI),借助大型语言模型,将文本语义知识注入到视觉信号中,从而增强模型对异常的感知能力。
    • 为了增强类别相关的分类性能
      • 1)借鉴了 CLIP 的思想,采用一种可扩展的方式进行异常分类——即通过文本标签与视频之间的对齐关系来进行分类。
      • 2)设计了一个新颖异常合成模块(Novel Anomaly Synthesis, NAS),利用大型视觉生成模型生成伪“未见”异常的图像或视频数据,以辅助模型更好地识别真实世界中的新颖异常。

2 OVVAD 定义

问题定义:给定训练样本 ​\mathcal{X} = \{x_i\}_{i=1}^{N+A},其中 ​\mathcal{X}_n = \{x_i\}_i^N 是正常样本的集合,​\mathcal{X}_a = \{x_i\}_{i=N+1}^{N+A} 是异常样本的集合。对于每个异常样本 ​x_i,有对应的视频级别类别标签 ​y_i,且 ​y_i \in C_{base}(表示已见异常类别)。而测试样本集合中的标签 ​C,是 ​C_{base}​C_{novel} 的并集。

目标:基于训练样本 ​\mathcal{X},训练一个能够检测和分类(包括已见和未见异常)的模型。


3 方法

3.1 总体框架

整体框架如图2所示,流程如下:

  1. 首先将训练视频输入到 CLIP 的图像编码器 ​\Phi_{CLIP-v} 中,以获得形状为 ​n \times c 的帧级特征 ​x_f,其中 ​n 是视频帧数,​c 是特征维度。
  2. 然后,这些特征通过 TA 模块、SKI 模块和检测器生成帧级异常置信度 ​p。(异常检测)
  3. 接着,生成跨越帧级特征的视频级聚合特征,然后生成异常类别的文本特征/嵌入。
  4. 最后,基于视频级特征与文本特征之间的对齐关系来估计异常类别。(异常分类)
  5. 此外,作者引入 NAS 模块,在大型语言模型(LLM)和人工智能生成内容模型(AIGC)的帮助下生成潜在的新异常,以实现新类别的识别。
paper88-2.webp

3.2 时间适配器模块

CLIP 是基于图像-文本对预训练的,没有考虑时间依赖性。因此,作者设计了一个几乎无参数的时间适配器 TA 模块,该模块基于经典的图卷积网络构建。数学上,它可以表示为:

x_t = LN(softmax(H)x_f) \tag{1}

其中,​LN 是层归一化操作,​H 是邻接矩阵。这种设计用于根据两帧之间的位置距离捕捉上下文依赖关系。邻接矩阵的计算公式如下

H_{(i,j)} = \frac{-|i-j|}{\sigma} \tag{2}

​i^{th} 帧和 ​j^{th} 帧之间的接近关系仅由它们的相对时间位置决定。​\sigma 是一个超参数,用于控制距离关系的影响范围。根据这个公式,两帧之间的时间距离越近,接近关系的得分越高;反之则越低。

近年来的研究中,使用 temporal Transformer [13, 25] 已成为一种常规实践。然而,temporal Transformer 中的额外参数可能会专门针对训练集,从而损害其对新类别的泛化能力。


3.3 语义知识注入模块

人类在感知环境时通常会利用先验知识,基于这一想法,作者提出了语言知识注入模块 SKI,以显式地引入额外的语义知识来辅助视觉检测。对于正常事件,使用固定模板提示 LLM 以获取常见的场景和动作。同样的,生成与异常场景相关的附加词汇。最后获得多个由 ​M_{prior} 表示的短语列表,其中包含名词和动词。有了 ​M_{prior} 后,我们利用 CLIP 的文本编码器提取文本嵌入作为语义知识,具体如下:

F_{text} = \Phi_{CLIP-t}(\Phi_{token}(M_{prior})) \tag{3}

其中,​F_{text} \in \mathcal{R}^{l \times c}​\Phi_{CLIP-t} 表示 CLIP 的文本编码器,​\Phi_{token} 表示将单词转换为向量的语言分词器。

然后,为了有效地将这些语义知识融入到视觉信息中以提升异常检测性能,设计了一种跨模态注入策略。该策略鼓励视觉信号寻找相关的语义知识并将其整合到过程中。这种操作可以表示为:

F_{know} = sigmoid(x_t F_{text}^\top) F_{text} / l \tag{4}

其中,​F_{know} \in \mathcal{R}^{n \times c},并且使用 sigmoid,以确保视觉信号能够涵盖更多相关的语义概念。

最后,​F_{know}​x_t 进行拼接,创建一个同时包含视觉信息和集成语义知识的输入。将此输入送入二元检测器,生成类别无关的异常置信度。


3.4 新颖异常合成模块

为了解决在面对新异常时容易出现泛化不足的问题,作者参考过去的工作(生成伪训练数据[20, 26]),提出了 NAS 模块,仅基于潜在的新异常类别生成一系列伪新异常样本。然后,利用这些样本进行训练。

NAS 模块包含三个关键步骤

  1. AIGC生成合成图像和视频:使用预定义的模板提示 LLMs,以生成潜在新异常类别的文本描述。然后,使用 AIGC 模型生成合成数据。用公式表示为:

    V_{gen} = \Phi_{AIGC}(\Phi_{LLM}(prompt_{gen})) \tag{5}

    注意,​V_{gen} 是生成的图像和短视频 ​S_{gen} 的组合。

  2. 图像转视频:受 [18] 的启发,将单张生成图像转换为模拟场景变化的视频片段。给定一张图像,采用中心裁剪机制,使用不同的裁剪比例选择相应的图像区域,然后将这些区域恢复到原始大小并级联起来,创建新的视频片段 ​S_{cat}

  3. 伪异常合成:为了模拟现实世界中异常视频通常较长且未经修剪的情况,即将 ​S_{cat}​S_{gen} 插入随机选择的正常视频中。这一过程生成最终的伪异常样本 ​\mathcal{V}_{nas}。详细描述和结果请参见补充材料。

有了 ​\mathcal{V}_{nas} 后,对最初在 ​\mathcal{X} 上训练的模型进行微调,以增强其对新异常的泛化能力。


3.5 目标函数

3.5.1 不含伪异常样本的训练阶段

对于不含伪异常样本的训练,作者使用了三个损失函数,接下来依次介绍。

  1. ​L_{bce}

这个是针对类别无关检测任务的,因此使用视频级别预测二进制异常标签计算。具体来说,使用 Top-K 机制在异常视频和正常视频中选择前 ​K 个最高的异常置信度。计算这些选择的平均值,并将平均值输入到 sigmoid 函数作为视频级别的预测。


  1. ​L_{ce}

这是针对类别特定分类任务的,使用交叉熵损失来衡量视频级别分类预测与真实类别的差异。具体来说,视频级别的分类预测通过计算聚合的视频级特征与文本类别嵌入之间的相似性实现。

如何聚合视频级特征?作者根据 [49],采用基于软注意力的聚合方法,如下所示:

x_{agg} = \text{softmax}(p)^\top x_t \tag{6}

其中,​x_t 是帧级特征,​p 是帧级异常置信度,​softmax(p) 用于对帧的重要性进行加权。

如何设计文本类别嵌入?受到 CoOp [63] 的启发,将可学习的提示附加到原始类别嵌入中。


  1. ​L_{sim}

这是针对 SKI 模块的损失函数,旨在区分正常知识嵌入和异常知识嵌入。对于正常视频,首先提取每个视频与文本知识嵌入之间的相似性矩阵,然后选择每帧的前 ​10\% 最高得分并计算平均值,最终应用基于交叉熵的损失 ​L_{sim-n}。对于异常视频,采用一种基于硬注意力的选择机制(Top-K)来定位异常区域。然后执行相同的操作来计算损失 ​L_{sim-a}

对于正常视频,期望其视觉特征与正常知识嵌入具有更高的相似性,而与异常知识嵌入具有更低的相似性。对于异常视频,预期异常知识嵌入与异常视频帧特征之间的高相似性


  1. 总损失函数 ​L_{train}
L_{train} = L_{bce} + L_{ce} + L_{sim} \tag{7}

其中,​L_{sim}​L_{sim-n}​L_{sim-a} 的总和。


3.5.2 含伪异常样本的微调阶段

从 NAS 模块中获得 ​\mathcal{V}_{nas} 后,继续对模型进行微调。由于 ​\mathcal{V}_{nas} 提供了帧级标注,因此能够对检测任务进行全面监督优化。对于分类任务,​L_{ce2}​L_{ce} 相同,但关键区别在于标签不仅适用于基础类别,也适用于潜在的新类别。对于检测任务,​L_{bce2} 是帧级的二元交叉熵损失。

最终,微调阶段的总损失函数表示为:

L_{tune} = L_{bce2} + L_{ce2} + \lambda(L_{bce} + L_{ce}) \tag{8}

4 实验

4.1 实验设置

  • 数据集:UCF-Crime、XD-Violence 和 UBnormal
  • 评估指标
    • 由于数据集不同,使用了不同的评估指标。
    • 包括:帧级别 ROC 曲线下的面积(AUC)、精确率-召回率曲线下的面积(AP)。
  • 实现细节
    • 在单块 RTX3090 GPU 上进行训练。
    • 图像编码器和文本编码器均来自预训练的 CLIP(ViT-B/16)。
    • 每个视频中我们每 16 帧采样 1 帧。

4.2 SOTA 比较

  • 表1至表3报告了在三个公开基准数据集上与现有方法的对比结果。
    • 为了保证公平性,大多数对比方法都使用了与本文相同类型的视觉特征进行重新实现。
    • 符号 † 表示这些方法遵循传统VAD的研究方式,使用了完整的训练集,因此后两列没有数据。
    • 符号 ∗ 表示其类别划分设置与本文的不同。
paper88-3.webppaper88-4.webp

4.3 消融

  • 各模块的消融实验
    • 作者在三个数据集上都实验了,这里只展示 UCF-Crime。
paper88-5.webp

  • 跨数据集能力分析
    • 以UCF-Crime和XD-Violence为例,UCF-Crime来源于监控视频,而XD-Violence来自电影和网络视频。
    • 跨数据集测试结果显示我们的模型能够与当前方法相媲美甚至超越它们,进一步验证了所提模型良好的泛化能力。
paper88-6.webp