基于多模态大语言模型的无偏且可解释的视频异常检测(Holmes-VAD: Towards Unbiased and Explainable Video Anomaly Detection)

完整题目为:Holmes-VAD: Towards Unbiased and Explainable Video Anomaly Detection via Multi-modal LLM

摘要

研究背景与问题

  1. 有偏差(就是会误判为异常,对于那些没见过的或者容易混淆的正常事件)
  2. 缺乏可解释性

解决方案

提出新框架Holmes-VAD

发布数据集

为了验证Holmes-VAD方法,首先发布了第一个大规模的多模态VAD指令调优基准数据集VAD-Instruct50k

  • 半自动标注方法
  • 单帧注释
  • 结合现成的视频描述工具和大语言模型(LLM)生成异常/正常视频片段分析

Holmes-VAD

  1. 训练一个轻量级的时间采样器来选择具有高异常响应的帧
  2. 对多模态大语言模型(multimodal large language model)进行微调,以生成解释性内容

实验结果

  • 验证了Holmes-VAD的普适性
  • 验证了Holmes-VAD作为一种新型的可解释技术在现实视频异常分析中的有效性

下载

benchmark and model

一、引言

1.1 视频异常检测

视频异常检测(VAD) 是一种旨在识别视频中异常事件的技术,在公共安全和视频内容理解方面有广泛应用价值。VAD方法可以大致分为以下三类:

  1. 无监督:仅使用正常视频(单类)或未标注的正常/异常视频进行训练
  2. 弱监督:使用正常/异常视频并提供视频级别的标签进行训练
  3. 全监督:使用详细的逐帧标注数据进行训练,但由于精确标注的高成本,这类方法研究较少

今年许多研究开始将多模态知识集成到VAD系统中

1.2 面临的挑战

1.2.1 有偏差的异常空间

无监督和弱监督学习到的异常空间往往会对未见过或容易混淆的正常事件表现出偏差,因此异常何时发生仍是挑战

  1. 无监督:缺乏可靠的逐帧异常监督,难以重建或预测未见过的正常事件
  2. 弱监督:难以选择可信的片段进行训练
  3. 全监督:标注过程效率低下,限制了扩展性

1.2.2 缺乏可解释性

现有的VAD方法不能明确回答异常是什么为什么是异常这样的问题,即不能提供透明的解释和推理

1.3 发布VAD-Instruct50K数据集

构建了一个包含单帧时间注释和解释性文本描述的新基准数据集 VAD-Instruct50k

1.3.1 解决异常空间有偏差的问题

对两个最大VAD数据集进行单帧注释(每个异常事件仅需点击一次)

  • UCF-Crime
  • XD-Violence

注意区分是单帧注释而不是逐帧注释

1.3.2 解决缺乏可解释性的问题

构建大量的异常感知指令对话数据来对多模态大语言模型(MLLM)微调

利用单帧标注好的视频和现有的大型基础模型建立一个高效的半自动化数据引擎

  1. 数据收集:主要来自开源数据集
  2. 注释增强:生成围绕单帧注释的可靠视频事件片段,并通过人工或基础模型提供文本描述
  3. 指令构建:利用LLM和开放世界知识生成可解释的分析,并将得到的分析经过人工筛选结构化为对话格式

1.4 提出Holmes-VAD

图1:无偏且可解释的VAD。

  • (a)为专注于识别异常的主流方法
  • (b)为Holmes-VAD方法
    • 促进了无偏差(就是对没见过的或者容易混淆的负实例产生更少的误判)的预测
    • 还通过构建具有单帧注释和可解释的指令数据(对于修剪的视频)的数据集来解释检测到的异常

在这里插入图片描述

基于 VAD-Instruct50k 数据集,开发了Holmes-VAD,包括三个关键组件:

  1. 视频编码器:对输入视频进行编码,将视频数据转化为可以处理的形式
  2. 时间采样器:预测视频帧的异常评分,并从中选取高分作为多模态大语言模型的输入
  3. 多模态大语言模型:生成对输入文本提示的文本响应

这三个组件可以替换为任何其他的Video-MLLMs或VAD-Networks,因为重点关注的是如何构建一个有监督的多模态数据集来训练这些组件

1.5 贡献

  1. 提出Holmes-VAD方法
    • 即使在长达数小时的视频中也能提供深度解释
  2. 提出VAD-Instruct50k数据集
    • 未剪辑视频的单帧注释
    • 剪辑的异常/正常视频片段的大量的指令对话数据
  3. 大量实验证明Holmes-VAD在性能和可解释性方面优于最先进方法

第2个贡献中,应该是对所有的视频先进行单帧注释,然后再对选出来的事件片段进行指定对话数据的生成???

二、相关工作

2.1 视频异常检测

早期手工特征被深度学习方法替代,即无/弱/全监督方法

2.2 多模态大语言模型

  • 首先是开源的LLMs包括 LLaMA、Vicuna 和 Mistral 等自回归模型,在大量文本数据上进行预训练
  • 然后Multi-modal LLMs将 LLMs 的能力扩展到视觉理解,MLLMs包括 VideoChat、Video-LLaMA 和 Video-LLaVA,增强了 LLMs 的时间理解能力

2.3 多模态视频异常检测

  • CLIP在视觉和文本模态之间架起了桥梁
  • 一些方法利用文本提示来提高异常检测性能
    • 开放词汇 VAD 任务
    • 从视频帧中提取描述并且生成提示给LLMs来生成异常分数

这些方法缺乏在大规模的特定领域的指令数据集上进行微调,导致它们的性能依赖基础的LLMs

三、VAD-Instruct50k基准

图2:VAD-Instruct50k的数据引擎。对收集到的正/异常的视频进行注释增强(时间单帧注释、事件片段生成、事件片段描述),然后将增强后的注释和自定义的prompt输入给LLMs来构建指令数据。

在这里插入图片描述

3.1 数据收集

从UCF-Crime和XD-Violence中收集,原因为:

  • 它们是现存最大的弱监督VAD数据集
  • 它们的质量高于其他的
  • 它们的视频级标签有助于对数据的进一步处理

最后通过人工过滤掉低质量的视频后:

  • 从UCF-Crime中收集到810/800个异/正常视频
  • 从XD-Violence中收集到1905/2032个异/正常视频

3.2 注释增强

之前是粗糙的视频级标签,这里通过三步进行增强。解决了原始的视频级标签信息不充足的问题。

3.2.1 时间单帧注释

对异常视频进行稀疏的单帧注释,即对每个异常只标注一帧。最终每个视频平均有2.5帧

3.2.2 事件片段生成

基于单帧注释:

  1. 设计了一个伪帧级的标签生成方法(在时间采样器的训练过程中使用的
  2. 训练了一个VAD网络 ϕ s \phi_s ϕs

对于每个 带有单帧注释 G = { g i } N g \mathcal{G}=\{ g_i \}^{N_g} G={gi}Ng ϕ s \phi_s ϕs 预测的异常分数异常视频,在它的注释帧旁边生成多个异常事件建议(proposals)。 N g N_g Ng 表示什么呢?
对于每个正常视频,随机的提取几个正常事件建议

最终,收集到所有的修剪的事件片段,它们都带有异常标签: ε = { s i , e i , y i } N e \varepsilon=\{s_i, e_i, y_i\}^{N_e} ε={si,ei,yi}Ne

  • s i s_i si 表示起始时间戳
  • e i e_i ei 表示结束时间戳
  • y i y_i yi 表示:
    • 如果事件片段来自异常视频,视频中的异常类别,如 E x p l o s i o n Explosion Explosion
    • 如果事件片段来自正常视频,则设置为 N o r m a l Normal Normal
  • N e N_e Ne 表示什么呢?

3.2.3 事件片段描述

字幕收集主要来自两个来源:

  1. 使用基于视频的MLLM来为每个事件片段生成详细的描述
  2. 使用SurveillanceVision 数据集,它提供了来自 UCF-Crime 的视频片段的手动注释的详细细粒度事件描述

最终,得到的标签 ε = { s i , e i , y i , c i } i N e \varepsilon=\{s_i, e_i, y_i, c_i\}_i^{N_e} ε={si,ei,yi,ci}iNe

  • c i c_i ci 表示描述

3.3 指令微调数据构造

给事件片段添加异常感知解释(即异常是什么,为什么)

利用有着开放世界知识的LLM来构建指令数据集,即对于在 ε \varepsilon ε 中的每个事件片段,将 设计的任务提示 P t P_t Pt + 异常标签 y i y_i yi + 详细的描述 c i c_i ci 输入给LLM M \mathcal{M} M 来判断异常和生成解释, M \mathcal{M} M的响应要与对应的异常感知问题 P d P_d Pd 配对,得到指令项:
在这里插入图片描述

  • M \mathcal{M} M 使用 Llama3-Instruct-70B,由于其开源且性能与GPT4相当
  • P d P_d Pd 多样

四、 Holmes-VAD

图3:Holmes-VAD方法概述。以未修剪的视频和用户的prompt作为输入,将检测到的异常的评分和解释作为输出。时间采样器会接受帧的类别标记来估算每个帧的异常分数,然后根据异常分数对稠密的视觉标记进行重采样为稀疏的视觉特征,作为映射器的输入。

在这里插入图片描述

4.1 模型架构

包含3个关键组件。

4.1.1 视频编码器

利用了在LanguageBind中的冻结视频编码器(即不进行训练/更新),继承自CLIP的ViT-L/14结构,表示为 ϕ v \phi_v ϕv。与原始ViT不同的是,它通过在时间维度上增加自注意层来模拟帧间的时间关系

给一个视频帧序列 V ∈ R N × H × W × C V \in \mathbb{R}^{N\times H\times W\times C} VRN×H×W×C,每一帧都输出特征表示为:
在这里插入图片描述

  • f i c l s f_i^{cls} ficls 表示第 i i i 帧的与类相关的特征
  • f i j f_i^j fij 表示第 i i i 帧的第 j j j 块区域(patch)的视觉特征
    • i ∈ { 1 , 2 , . . . , N } i\in\{1, 2, ..., N\} i{1,2,...,N}
  • N p N_p Np 表示每帧中区域的数量

4.1.2 时间采样器

传统的每隔8帧取样或者逐帧取样因为视觉标记过多带来了大量的计算。为了解决这个问题:

首先将密集的视频帧输入到视频编码器中,使用在3.2节中训练好的VAD网络 ϕ s \phi_s ϕs
在这里插入图片描述

  • { f 1 c l s , f 2 c l s , . . . , f N c l s } \{ f_1^{cls}, f_2^{cls}, ..., f_N^{cls}\} {f1cls,f2cls,...,fNcls} ϕ s \phi_s ϕs的输入,表示视频帧的 cls 标记
  • { s 1 , s 2 , . . . , s N } \{s_1, s_2, ..., s_N\} {s1,s2,...,sN} ϕ s \phi_s ϕs 的输出,表示对应的异常得分

然后,根据得分对视频标记进行采样,即只有得分 s k s_k sk 高于阈值 θ \theta θ 的帧中的标记 f k f_k fk 才会送入到后续的网络

在这里插入图片描述

  • F d F^d Fd 表示原始的密集视觉标记
  • F s F^s Fs 表示采样得到的稀疏视觉标记

这样,即使是长的未修剪视频,模型也可以生成异常感知响应。

4.1.3 微调了LoRA模块的MLLM

为了LLM可以理解由视觉编码器输出的特征 F s F^s Fs,设计了一个由两层多层感知器(MLP)组成的投影器 ϕ p r o j \phi_{proj} ϕproj, 它会将 F s F^s Fs 的维度转为与 LLM 的输入维度相同:
在这里插入图片描述

  • L L M LLM LLM 使用 Vicuna
  • ϕ T \phi_T ϕT 表示LLM的文本编码器
  • T 0 : i T_{0:i} T0:i 表示输入给LLM的文本标记
  • T i + 1 T_{i+1} Ti+1 表示由LLM预测的下一个文本标记
  • [ ⋅ , ⋅ ] [·, ·] [⋅,⋅] 表示拼接操作

这里的文本标记指的是之前的时间片段的文本描述和自定义的prompt嘛?

4.2 训练

4.2.1 时间采样器的训练

只在单帧监督下训练

  1. 单帧注释作为伪标签的初始化
  2. 伪标签会在训练过程中在线更新
  3. 使用生成的伪标签来监督事件采样器预测异常得分

4.2.2 指令微调

只训练投影器和使用LORA微调LLM,不需要再对时间采样器训练,因为每个片段已经标记伪异/正常。

  1. 将投影后的视觉特征 F v F_v Fv 和 文本输入嵌入 F t F_t Ft 作为LLM的输入
  2. LLM会将它们解码成一个词序列 A \mathcal A A
  3. 使用原始的自回归训练目标
    • 最大化生成真实答案序列的概率,鼓励模型根据输入特征生成连贯且准确的响应

五、实验

5.1 实验设置

5.1.1 数据集

使用 UCF-Crime 和 XD-Violence 进行了对比试验

5.1.2 评价指标

为了评估时间采样器的异常检测性能

  • 对UCF-Crime采用AUC
  • 对XD-Violence采用AP(frame-level precision-recall curve)

为了评估解释响应的质量

  • 从UCF-Crime和XD-Violence的测试视频中随机提取了86个异常/正常的视频片段
  • 10位用户从三个方面对不同模型的响应进行投票:
    • 判断准确性(JA, Judgement Accuracy)
    • 内容感知(CP, Content Perception)
    • 异常解释(AE, Anomaly Explanatory)

5.1.3 实现细节

  1. 视频编码器使用LanguageBind模型的ViT
  2. MLLM使用Video-LLaVA来初始化
    • 投影器
      • 批量为128
      • epoch为1
      • 采用带有余弦学习率衰减和预热器的AdamW优化器
      • 投影器学习率为 2e-5
    • LoRA
      • r=64
      • α \alpha α=128
      • 学习率为 2e-4
  3. 时间采样器使用UR-DMU为基础结构
    • 每16帧随机抽取一帧
    • 采用Adam优化器
    • 学习率设为 1e-4
  4. θ \theta θ 为 0.8
  5. 在 2 张 A100 上训练

5.2 主要结果

表1:在XD-Violence和UCF-Crime数据集上Homles-VAD与SOTA方法的比较。

在这里插入图片描述

如表1所示,提出的方法:

  1. 结果优于SOTA,表明可以产生偏差更少的异常得分
  2. 不仅异常定位精准,而且具有可解释性

虽然 LAVAD具有解释性,但由于缺乏足够的监督数据,其无训练的LLM在异常知识理解方面存在限制

5.3 分析结果

5.3.1 不同训练策略对异常检测的影响

表2:在不同训练环境下的模型的人工评估。
在这里插入图片描述

进行了一次用户研究来评估三种策略的效果(86个测试样本+10位志愿者):

  1. 无训练:不微调
  2. 投影器:在VAD-Instruct50k上只训练投影器
  3. 投影器+LoRA:在VAD-Instruct50k上既训练投影器,又使用LoRA对MLLM微调

如表2所示,投影器+LoRA:

  • 响应最详细
  • JA、CP、AE最高

表明通过在VAD-Instruct50k上微调多模态LLM,投影器+LoRA方法在解释性方面美现更佳

5.3.2 骨干网络和监督方式对时间采样器的影响

表3:不同的骨干网络和监督方式对时间采样器的影响。
表4:对单帧注释进行随机的事件移动所带来的影响。
在这里插入图片描述

使用UR-DMU作为基线方法,如表3所示,无论使用LanguageBind还是I3D作为骨干网络,使用单帧监督都可以显著提高性能。

5.3.3 扰动单帧注释位置的影响

为了评估方法的鲁棒性,如表4所示,相对于原始的帧注释位置使用不同的时间戳位移,并且最终结果表明性能几乎未下降,方法的鲁棒性很强。

5.3.4 时间采样器 v.s. 均匀采样器

表5:时间采样器 v.s. 均匀采样器。最后一列为推断时间。
在这里插入图片描述

使用均匀采样器来替代时间采样器:

  • 前提是保持帧率
  • 将视频分成不重叠的片段
  • 如果LLM的输出是“Yes”(表示检测到异常),则输入片段中所有帧的异常分数都设置为1;如果输出是“No”,则所有帧的异常分数都设置为0

结果如表5,表明时间采样器推断效率更高,准确率更高

5.3.5 定性比较

图4:定性结果。Video-LLaVa(没有微调)和Holmes-VAD(经过微调)在感知视频时间和分析异常方面的比较。
在这里插入图片描述

如图4,Holmes-VAD:

  • 可以准确识别异常视频中的异常情况并提供具体解释
  • 可以纠正时间采样器的错误响应(即负实例却给的分数很高的)

六、结论

6.1 贡献

  1. 提出Holmes-VAD方法,解决有偏差和缺乏可解释性的问题
  2. 引入了高效的标注范式来构建了大规模多模态VAD数据集VAD-Instruct50k
  3. 进行了广泛的实验证明Holmes-VAD

6.2 局限性

  1. 依赖现成的视频字幕生成模型不能很全的捕捉到细微差别和上下文特定信息
  2. 尽管通过时间采样器控制了视频输入的长度,并在修剪过的视频片段中准确分析了异常内容,但仍不能让MLLM理解长期的视频异常,同时不妨碍其图像级的感知能力

6.3 未来展望

  1. 在可接受的劳动成本范围内进一步提升数据的质量和数量
  2. 探索能让MLLM理解长期的视频异常的办法
  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值