- 论文 - 《Holmes-VAD: Towards Unbiased and Explainable Video Anomaly Detection via Multi-modal LLM》
- 代码 - Github
- 关键词 - 视频异常检测VAD、指令微调、视频大模型、ViT、监督学习
摘要
- 研究问题
- 开放式的视频异常检测(VAD):现有方法在面对具有挑战性或未见过的事件时,往往表现出检测偏差,并且缺乏可解释性。
- 本文工作
- VAD-Instruct50k
- 作者创建了首个大规模的多模态 VAD 指令微调基准数据集。
- (半自动标注范式)对收集到的未剪辑视频应用高效的单帧标注,然后利用一个鲁棒的现成视频字幕生成模型和大语言模型(LLM)将其合成为高质量的正常与异常视频片段分析。
- Holmes-VAD
- 该框架通过精确的时间监督和丰富的多模态指令,实现了准确的异常定位和全面的解释能力。
- 作者训练了一个轻量级的时间采样器,用于选择具有高异常响应的帧,并微调一个多模态大语言模型(LLM)以生成解释性内容。
- VAD-Instruct50k
1 引言
-
现有的 VAD 模型仍面临以下主要挑战:
- 异常空间偏倚:由于缺乏可靠的帧级异常监督,无监督方法无法重建或预测未见过的正常数据;而弱监督方法在视频级监督下也难以选择可信的小片段用于训练。因此,这些方法学习到的异常空间普遍存在对未见过或容易混淆的“正常”状态产生偏倚的问题。
- 缺乏可解释性:现有的 VAD 方法并未提供对检测到的异常的透明解释和推理机制,即“什么是异常”以及“为什么它被认为是异常”。
-
核心见解:一个强大的人工智能驱动的异常检测系统不仅需要识别偏差,还需要提供具有洞见性的解释。
-
解决办法 - Holmes-VAD
- 一个基于多模态大语言模型(MLLM)的无偏且可解释的视频异常检测框架。如图1所示,包含一个 指令微调数据集 和一种 异常检测解决方案。
- 可以分成以下三点:
- 1)为了解决第一个问题,作者提出在视频异常检测领域采用一种更友好的单帧标注方式(每个异常事件只需点击一次),手动对目前最大的两个 VAD 数据集进行了单帧标注。
- 2)为了解决第二个问题,作者构建了大量带有“异常感知”的指令对话数据,用于微调。作者利用这些单帧标注的视频和现有的现成基础模型,建立了一个高效的半自动数据引擎。该数据集命名为 VAD-Instruct50k。
- 3)基于上述数据集,作者开发了一种定制化的可解释视频异常检测解决方案,包含三个关键组件:视频编码器、时间采样器 和 多模态大语言模型。这些组件都可以使用现成的网络。

2 相关工作
- VAD
- 无监督方法:仅使用正常视频(一类)或未标注的正常/异常视频进行训练,可以继续分为:
- 基于重建的方法 [14, 58, 12, 60]
- 基于预测的方法 [30] 或两者的结合 [31]。
- 完全无监督的设置 [64, 44, 47],即训练集中同时包含未标注的正常和异常视频。
- 弱监督方法:使用带有视频级别标签的正常/异常视频进行训练。
- 全监督方法:因需要逐帧精确标注而研究较少,成本较高。
- 无监督方法:仅使用正常视频(一类)或未标注的正常/异常视频进行训练,可以继续分为:
- 多模态LLM
- 语言:ChatGPT、LLaMA、Vicuna、Mistral
- 此外,针对视频的 MLLMs(如 VideoChat [22]、Video-LLaMA [66] 和 Video-LLaVA [25])为多模态时序理解铺平了道路。
- 多模态视频异常检测
- 一些近期的研究 [41, 17, 57, 61] 在视频异常检测领域中利用文本信息作为提示,以增强模型对异常的表征能力。
- [56] 首次提出了开放词汇的 VAD 任务。
- [65] 通过视频帧提取字幕,并设计用于 LLM 的提示来提供异常得分。
- 局限:这些方法主要关注于生成异常得分,缺乏在大规模领域特定指令数据集上的微调,因此其性能高度依赖于基础的 LLM 模型。
3 VAD-Instruct50k 基准数据集
本节将介绍 VAD-Instruct50k 数据集的生成过程,整个数据引擎的流程如图 2 所示。

3.1 数据收集
首先从 UCF-Crime 和 XD-Violence 两个数据集中收集视频。原因:视频数量远超其他数据集、具有视频级别标注。
经过人工筛选后,总共收集了 5547 条未剪辑的视频。
3.2 标注增强
现在视频只有视频级别的异常标签。为了实现更具区分性的异常检测模型训练,作者对这些标注进行了净化。
时间单帧标注
作者采用了一种高效的时间标注方法,即稀疏单帧标注,这种方法受到 [40] 等工作的启发,平衡模型性能和标注成本。具体而言,为每个视频中的异常事件仅标注一帧。通过这一过程,我们平均每条视频收集了 2.35 个单帧标注。
事件片段生成
基于单帧标注,作者设计了一种可靠的伪帧级标签生成方法,并利用它来训练一个 VAD 网络 \phi_s。对于每一条具有单帧标注 G = \{g_k\}_{k=1}^{N_g} 的异常视频及其由训练好的 VAD 网络估计的异常分数,在标注帧周围生成多个异常事件候选。形式上,每个候选通过起始和结束时间戳表示,即 s 和 e。对于每条正常视频,随机提取多个正常事件候选。经过此过程后,收集所有带有异常标签的裁剪事件片段:\mathcal{E} = \{s_i, e_i, y_i\}_{i=1}^{N_e},其中如果事件片段来自异常视频 y_i 被设置为视频的异常类别;否则,被设置为“Normal”。
事件片段字幕生成
为了从事件片段中充分提取语义信息,利用视频 MLLM 为每个事件片段生成详细的字幕。此外,作者还纳入了 SurveillanceVision 数据集,该数据集为 UCF-Crime 中的视频片段提供了手动标注的详细精细事件描述。结合这些资源后,我们获得了所有带有对应字幕 c 和异常标签的事件片段:\mathcal{E} = \{s_i, e_i, y_i, c_i\}_{i=1}^{N_e}。
3.3 指令微调数据构建
标注增强过程填补了标注信息不足的空白。然而,这些事件片段仍然缺乏对异常的解释性说明,即“什么是异常”以及“为什么是异常”。
因此,作者利用 LLM 来进一步构建指令数据集。具体而言,对于 \mathcal{E} 中的每个事件片段,作者设计了一个结合可参考的异常上下文的任务提示 P_t,即异常标签 y_i 和详细字幕 c_i。然后,将组合后的提示输入到 LLM \mathcal{M} 中,使其对视频片段中的异常进行判断并提供解释。生成的响应与对应的异常感知问题 P_d 配对,形成一个指令项:
本文使用 Llama3-Instruct-70B 作为 \mathcal{M}。为了确保指令数据的多样性,设计了多种 P_d,例如:“<video>\n Are there any unexpected or unusual events in the video clip?
”。
4 Holmes-VAD
Holmes-VAD 利用 VAD-Instruct50k 进行训练,该方案包含三个关键组件,4.1节中将分别介绍,框架如图3所示。

4.1 模型架构
视频编码器
使用 LanguageBind [73] 中的冻结视频编码器。该编码器继承了 CLIP 的 ViT-L/14 结构,并通过在时间维度上添加额外的自注意力层来建模帧之间的时序关系。将此编码器表示为 \phi_v。
给定一个视频帧序列 V \in \mathbb{R}^{\tilde{N} \times H \times W \times C},每个帧的输出特征可以表示为:
其中:
- f_i^{cls} 表示第 i 帧的类别标记特征;
- f_i^j \ (j \in \{1, 2, \dots, N_p\}) 表示每块的视觉嵌入;
- N_p 表示每帧中的块数。
时间采样器
由于视频中大量的视觉标记会导致过高的计算负担,并且均匀的时间帧采样方式显然不适合视频异常检测任务,因为它增加了忽略关键信息的可能性,并不可避免地导致大量冗余计算。
为了应对这一问题,作者首先将密集的视频帧输入到视频编码器中,然后引入我们在 3.2 节中训练好的 VAD 网络 \phi_s,该网络接收视频帧的类别标记 f_1^{cls}, f_2^{cls}, \dots, f_N^{cls},并输出异常分数 s_1, s_2, \dots, s_N:
接下来,根据异常分数对视频标记进行采样。具体而言,只有异常分数 s_k 超过设定阈值 \theta 的帧对应的标记 f_k 才会被输入到后续网络:
其中,F^s 表示从原始密集视觉标记 F^d 中采样的稀疏视觉标记。
Projector 和 LLM
为了使大语言模型理解视频编码器输出的特征,在两者之间设计了一个由两层 MLPs 组成的投影器 \phi_{proj}。之后,特征维度被调整为与大语言模型的输入维度一致。使用 Vicuna 作为我们的 LLM:
其中:
- T_{0:i} 表示输入到大语言模型的文本标记;
- T_{i+1} 表示预测的下一个标记;
- \phi_{proj} 和 \phi_T 分别表示投影器和文本编码器;
- [ \cdot ] 表示拼接操作。
4.2 训练
时间采样器的训练
在这一阶段,仅在单帧监督下训练时间采样器。本质上,采用了伪标签监督策略。伪标签通过训练过程中的单帧标注初始化,并在线更新至标注帧周围。使用生成的伪标签来监督预测的异常分数,这可以有效减少时间采样器对容易混淆的正常情况的偏倚。
指令微调
在这一阶段,将裁剪后的事件片段作为输入,并不执行时间采样器操作,因为每个片段已经被标记为异常或正常。在此阶段,训练投影器,并使用 LoRA 对多模态大语言模型进行微调。给定投影后的视觉特征 F_v 和文本输入嵌入 F_t,大语言模型将它们解码为一个序列单词 \mathcal{A}。我们遵循主流工作,使用原始的自回归训练目标。目标是最大化在给定输入特征的情况下生成真实答案序列的概率。
5 实验
5.1 实验设置
- 数据集:UCF-Crime 和 XD-Violence
- 评估指标
- 对于 UCF-Crime,使用 AUC
- 对于 XD-Violence,使用帧级别的 精确-召回曲线下的 AUC(AP)
- 实现细节
- 模型结构:LanguageBind 中的 ViT 作为视频编码器,Video-LLaVA 初始化多模态大语言模型,基于 UR-DMU 构建时间采样器的基础结构。
- 所有实验均在 2 块 NVIDIA A100 GPU 上运行。
- 具体参数见论文。
5.2 主要结果
- 表 1
- 与当前最先进的方法进行了对比,包括半监督、无监督、弱监督方法,以及无需训练的方法。
- 本文方法显著优于之前的七种最先进方法。
- 注意,在实现精准异常定位的同时,Holmes-VAD 还能够为检测到的异常提供解释和分析,这是现有不可解释型 VAD 方法所不具备的功能。

5.3 分析结果
- 不同训练策略对异常解释的影响
- 评估三种不同的训练策略,并且邀请志愿者从Judgement Accuracy、Content Perception、Anomaly Explanatory三个方面进行评分。
- 三种策略:
- Training-free:不进行微调。
- Projector:仅在 VAD-Instruct50k 上微调投影器,保持 MLLM 固定;
- Projector+LoRA:在 VAD-Instruct50k 上微调投影器,并使用 LoRA 对 MLLM 进行微调。
- 结果如表2所示,Projector+LoRA 提供了最详细的响应,并且在解释性上表现最佳。

- 时间采样器中的主干网络与监督方式影响
- 对时间采样器所使用的视频主干网络及其监督方式进行了消融实验。
- 如表 3 所示,单帧监督都能显著提升性能,而主干网络根据数据集不同相对表现也不同。

- 单帧标注扰动的影响
- 评估本文方法对单帧标注时间位置扰动的鲁棒性,在原始标注帧的位置上引入了不同时间戳偏移。
- 如表 4 所示,我们的方法对退化监督具有较强的容忍度。

- 时间采样器 vs 均匀采样器
- 将时间采样器替换为均匀采样器,并保持相同的帧率。然后将视频划分为非重叠片段,并依次输入到多模态大语言模型中以输出结果。
- 在表 5 中比较了检测性能和推理效率。结果显示,时间采样器在保持高精度的同时,实现了更高的推理效率。
