论文笔记 VERA:Explainable Video Anomaly Detection via Verbalized Learning of Vision-Language Models
本文最后更新于:2025年4月11日 晚上
论文笔记 VERA: Explainable Video Anomaly Detection via Verbalized Learning of Vision-Language Models
论文链接:https://ieeexplore.ieee.org/abstract/document/10836858
项目主页:https://vera-framework.github.io/
代码链接:尚未开源
美国爱荷华大学在24年末的一篇ArXiv文章,介绍了一种基于多模态大语言模型(MLLM)的视频异常检测(VAD)方法,作者创新地提出了一种非梯度下降的方式,通过两个LLM之间的交互来学习最优提问,从而引导MLLM在VAD上取得SOTA的性能。
研究动机
首先对作者这里使用的术语进行解释,作者说的VLM实际是指LLAVA这种模型,但是有可能会和CLIP这种模型混淆,所以本博客则称为MLLM(Multi-modal LLM)。
根据上图,pipeline1的VAD方法使用MLLM来获得视频各个片段的描述,然后用一个LLM来进行推理,加上一些后处理的辅助手段来得到最后的分数。pipeline2的VAD方法则是通过额外的数据来进行instruction tuning,让MLLM具备VAD的能力。第一种方法额外用一个LLM,导致额外的开销,第二种方法则需要更多的数据+训练,也挺麻烦。
本文作者提取第三种范式,仍然使用冻结的MLLM,只不过改变对其的提问(prompt),从而在不微调的情况下,也能获得更好的性能。作者的动机是,我们能在不改变参数的情况下,通过为MLLM找到更好的prompt,从而提升其在VAD上的性能。
作者的思路来源于“Verbalized machine learning: Revisiting machine learning with language models”这篇论文提出的Verbalized Machine Learning(VML),VML旨在利用LLM的能力,通过学习语言来进行回归、分类等机器学习的任务。
方法
VERA分为训练和推理两个阶段,两个阶段都比较复杂。
训练阶段
如图是训练阶段的流程图,其中的Learner和Optimizer都是冻结的MLLM,而则是它们的prompt。训练阶段,视频经过较大的下采样后,与prompt输入到Learner中,让其进行二分类的判断,其提示模板如下所示,让模型根据视觉内容回答的提问,最后再判断是或不是异常(类似CoT),而就是要学习的东西。
在得到Prediction之后,会把这个结果送到Optimizer中,其提示模板如下,基本就是加上了GroundTruth然后让MLLM生成新的问题。假如LLM觉得误差比较大,就会修改提问,假如LLM觉得正确,就会保留提问。得到新的之后,就会进入下一轮迭代。
整个过程类似以一个数据集作为话题内容,然后让两个Agent一直进行超长的对话讨论,最后得到最佳结果。
推理阶段
由于训练阶段实质上是对整个视频进行分类,但是推理阶段我们需要的是细粒度的帧级别异常分数,所以这篇文章设计了类似“Harnessing Large Language Models for Training-free Video Anomaly Detection”中LAVAD的分数生成方法。
首先,对于视频会根据一定间距生成多个关键帧,以关键帧为中心设置10s的窗口,每个窗口抽8帧。对于一个数据集上学到的最佳的5个问题,作者会根据这个来为视频的每个segments生成0/1分数(Step 1)。
其次,对于视觉内容相似的segment,他们的分数也应该相似,所以会使用类似CLIP、ImageBind的模型检索其他segment,并对分数进行加权求和(Step 2)。这一步分数就会被软化一些。
最后,对于segment-level的分数,通过一个高斯核进行平滑,再展开为frame-level的分数,用高斯核施加位置权重。segment-level的分数认为是中心帧的分数,而窗口内其他帧的分数则根据高斯来。
通过这个推理过程,MLLM本来输出0/1的分数会软化,通过复杂的加权来得到帧级别分数,这个实际上和论文最关键的创新点或者VML没有关系,其他模型套上来也一样用。
实验
在UCF-Crime和XD-Violence上实验,用AUC做指标,附录补充了XD的AP指标。
![]() |
![]() |
![]() |
---|
在SOTA比较时,这个方法的定位应该是一种利用MLLM、具有较强可解释性的,不需要梯度回传训练的方法。这种特性导致他对任何方法比较都不算很公平。与WSVAD模型比较时,VERA性能不够好,在XD上差的比较多。与Zeroshot的LAVAD比,VERA又进行了某种程度上的训练。与同样使用大模型的Holmes-VAD相比,Holmes-VAD使用了额外的glance监督信号;与同样使用大模型的VADor相比,VADor进行了微调。
VERA就像是这些方法的一个插值,性能比较好、不需要梯度回传训练、不需要大规模预训练,但是有额外的训练和计算开销。
总的来说,VERA在SOTA比较上,UCF上的指标算是相当不错,在XD上则不够理想。
Table 2中OVVAD不能直接比,因为split不一样,OVVAD训练数据更少
消融实验
先放我觉得最重要的两个消融,table 6是question的消融,在不使用VML的情况下只有78.81,人工设计prompt则81.15,这其实已经超过了LAVAD了,说明这篇文章的推理流程实质会比较重要。假如让LLM生成问题但是不优化,实际上没有人工设计好的,在迭代优化之后性能有boost,直接到86.55。
Table 7则是推理阶段的消融,可以看到Retrieval(Step 2)的作用巨大,但是这个在LAVAD中也有类似设计,怎么人家性能没有这么剧烈的提升呢?
那么学到的问题究竟是什么样的呢?如下图所示是UCF上学到的,值得注意的是问题2涉及了专门的车祸类别,问题5则涉及了音频,尽管使用的MLLM无法处理音频。同时,这个最终得到的问题是否有随机性,论文没有分析。但是附录里给出了不同迭代阶段的示例,表明越到后期,Q就会表现得越普遍, 越来越倾向于使用综合的语言而非涉及具体场景。
这种方法非常令人在意其泛化性,下图Table 10则给出了不是很令人满意的结果,从XD到UCF这种跨域可以比较公平地与LAVAD或者LaGoVAD这种zero-shot方法比较,但是性能只有80.42(LAVAD有80.28,LaGoVAD有81.12/82.81)。从UCF到XD则下降更少,比PLOVAD的84.06性能更好,但是没有汇报AP,不方便和LAVAD或LaGoVAD比较。这个实验结果说明不同数据集有其在意的问题方向,要在一个数据集上取得最优就要“过拟合”到这个数据集上的问题。
此外,对于结果的稳定性,作者有一些小实验,我就不截图了,文中Table 4证明采样方式会造成3、4个点的性能下降(算是比较关键了),而batch size和采样帧数则能更不稳定了。有点疑问的是,文中batch size会受到GPU显存的限制,但是我觉得可以通过某种方法绕过去,比如引入一个新的agent,因为理论上来说bs越大,估计会越精确。
对于结果的可拓展性,Table 8证明可以scale到更大的模型,但是很难带来显著的提升。Table 9则讨论了不同架构,发现不同架构会极大影响,同一个问题在Intern上是好问题,在Qwen上就不一定了。
总结
这篇论文的思路非常不错,有点类似agents思想引入VAD,感觉这个方向还有得卷。然而,这篇论文给了可解释性的定性实验,但是没有给定量实验,此外,一系列消融实验证明UCF上86.55的这个好结果可能不稳定,一些参数容易轻松破坏这个结果。最后,我很好奇多次训练这个模型得到的问题是否近似,以及不同数据集的问题到底有什么不一样。感觉这个都可以是后续的研究。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!