论文笔记 PLOVAD:Prompting Vision-Language Models for Open Vocabulary Video Anomaly Detection

本文最后更新于:2025年4月11日 晚上

论文笔记 PLOVAD:Prompting Vision-Language Models for Open Vocabulary Video Anomaly Detection

论文链接:https://ieeexplore.ieee.org/abstract/document/10836858

代码链接:https://github.com/ctX-u/PLOVAD

上海交通大学2025年的一篇TCSVT期刊论文,进行开放词汇视频异常检测任务(OVVAD),这篇论文主要在模型架构上进行了创新,提出了一种新的基于LLM的Prompting Module以及一种新的基于GAT的Temporal Module。实验除了常规的UCF-Crime、XD-Violence外,还在ShanghaiTech和UBnormal上进行。

研究动机

这篇论文旨在研究开放词汇视频异常检测,并创新性地利用Image-based vision-language model(I-VLM)来提升性能。为了利用I-VLM,作者提出了两个创新点,一个是Prompting Module,旨在通过prompt tuning的方式利用domain-specific和anomaly-specific的知识,另一个则是Temporal Module,旨在通过GAT来增强时序编码。

文中自己归纳的创新点是四个:1)为了应对VAD的数据稀缺性,文章研究开放词汇,并利用了scalable、cost-effective的语言侧数据 2)提出PLOVAD整体框架 3)提出Prompting Module和Temporal Module 4)4个数据集上的大量实验证明结果。

对其动机进行深入分析的话,我有一些疑问🤔:

  1. 作者在Intro第二段介绍Open-vocabulary的优点是利用了视觉相关的语言数据,并认为语言数据标注更容易获得。这一点我有些疑惑,假如是和弱监督相比的话,语言标注的成本肯定是多很多,假如是和全监督相比的话,感觉语言标注也便宜不到哪去。
  2. 同样是在这一段,作者紧接着说“Open vocabulary settings are therefore more general, practical, and effective than weakly supervised settings”,这一段我很迷惑,open vocabulary是和closed vocabulary相比有这些优势的呀,至于是通过什么样的监督来得到open能力的是另一个维度的比较,实际上,作者这篇论文恰好用的就是弱监督(在第三章B节说的)。
  3. 还是在这一段,作者后面与Wu et al.的CVPR 24的OVVAD论文进行了强对比,说他们方法只依赖了一个预训练的CLIP模型,没有讨论I-VLMs。但是CLIP就是一个最经典的I-VLM呀,作者也承认了(在第三章A节)。

方法

模型整体架构如上所示,和Wu et al.的CVPR 24的OVVAD大致相同,添加了一个Prompting Module,改了一个Temporal Module。

对于Prompting Module,作者设计了Domain的和Anomaly的两种prompt,前者就是通过CoOp那样的方式添加可学习的token来微调。后者则是通过LLM来构建提示词。如下图所示,分成了16种attribute,并让LLM对异常类别进行分析,得到的结果用CLIP提取关键词后平均作为最终embedding。

文中公式4感觉可能有问题,求和号后jj不见了。

对于Temporal Module,作者设计了一个基于GAT的模块,这部分不是很感兴趣,貌似就是把GAT拿来用了一下,与OV关系貌似不是很大。

损失函数和训练方式上,与VadCLIP和OVVAD一样。

实验

实验上,相较于OVVAD,这篇论文额外使用了ShanghaiTech(ShT)和UBnormal(UBN)两个数据集来进行OV的实验。

对于ShT,他们基于Delving into CLIP latent space for Video Anomaly Recognition这篇论文提供的文本信息,分成了5个base类和6个novel类。

我扫了一眼这个论文,没看到这种分法,而且这篇论文中说ShT有17个类,这一部分有待我继续查证。

对于UBN,因为UBN本身是open-set的数据集,train和test的类别本来就不一样,所以作者直接将test的12个类别作为novel,其余为base。由于UBN没有给细粒度标签,所以作者手工标注了异常视频。

UBN这个论文我还是挺熟的,但是有一个问题,就是这个数据集一个视频可能出现多个异常,比如abnormal_scene_4_scenario_1_fire.mp4就出现了running和fire这两个异常,本篇OV论文针对的还是单类别,所以这一部分也有点存疑。

✌️与作者沟通之后的更新:UBN数据集出现类别时,保留最显著的异常类

在评价指标上,作者对检测使用传统的AUC和AP,对分类则使用了Multi-class AUC(one-vs-rest)以及Accuracy。此外,这些指标会区分是base的还是novel的。

SOTA比较

检测性能

对于Table 1,在UCF数据集整体的AUC上(Table 1),不使用OV范式时,这个模型的表现还不错,但是87.06不算最强,好几篇论文的结果都比这个高,但是文章没有讨论;使用OV范式时,比其他几个方法有显著的提升。对于Table 2,则是针对base和novel的细粒度分析,发现和OVVAD差不太多,base高、novel低,假如我们更注重novel的话,感觉是比不过的。至于这个HM(调和平均),感觉意义不是特别大,要看整体性能可以直接看整体的AUC呀?

计算AUCbAUC_bAUCnAUC_n时有个疑惑,他们是如何考虑正常视频的?base的AUC感觉就是测试集上的正常视频+base类别异常视频,novel的AUC则是测试集上的正常视频+novel类别异常视频。但是也可以认为是排除掉正常视频,只对不同分类的异常视频做AUC?这一点OVVAD和这篇PLOVAD感觉都没说清楚。

✌️与作者沟通之后的更新:计算时都使用了正常视频,这么想来也比较合理与直观。

对于Table 3,性能其实不算好,只有HM是最高的,我很好奇整体的AP的比较,此外我仍然认为novel上的指标对于OV来说更重要一点。

对于Table 4,测试集全都是novel,所以AUC没有区别,这里效果还挺好。

分类性能

因为用的指标和OVVAD不一样(OVVAD用的是异常视频中的Acc,这里用的是异常+正常的mAUC和Acc),所以只能和baseline来比,这样看性能是有十分明显的提升的。有一点异常就是XD上CLIP baseline超过了PLOVAD,这个作者没有解释。

消融实验

Temporal带来的提升比较小,在好几个对比下甚至都是副作用,这么多异常点,作者一点都没解释,感觉不是很合理。

Prompting带来的提升十分显著,令人好奇哪方面提升最多。

所以Table8展示了UCF上DP和AP的结果,假如这里加一行DP和AP都没有的结果来对比会更清楚一些,不过和表7手动对比,可以发现无论加哪一个,性能都有十分显著的增长,其中基于LLM的那个AP更显著一些。

单独看DP和AP的设计又有点奇怪,表9、10中p3指的是手工设计prompt,表9中的p3的mAUC是66.50、用GPT则是71.55,而表7中没有prompt都有72.53,这个是有一点异常的。表10则是感觉手工构建的结果也挺不错的……,没什么必要用LLM?

最后是跨域泛化,这个在我看来反而是最重要的一个实验,不过貌似作者没有放太多心思在这里,也没有和OVVAD进行对比,那我就来手动对比一下:

本论文结果

OVVAD结果

实际上也比较难比……

分类性能因为用不同指标所以比不了

检测性能上,两者都是用完整的训练集训练,然后在另一个数据集上测试。但是这篇论文XD就单单这个表用了AUC指标,其他都是AP指标,导致比不了。整体只能比较XD跨到UCF的指标,OVVAD是82.42,PLOVAD是77.53,低了很多。

结论

总的来说,这篇论文算是一篇还不错的论文,其创新点稍显薄弱,时序编码和OV没有必然的联系,而prompt module有些过于简单,和人工prompt差距不算太大。在比较上,有的地方稍显不公平,有的数据没有给出来,新增加的ShT和UBN的评测不是很清楚。但是这篇论文开源了,促进了开放词汇VAD的发展,假如大家能够复现的话,应该会有很多引用。