论文笔记 Anomize:Better Open Vocabulary Video Anomaly Detection

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

论文笔记 Anomize: Better Open Vocabulary Video Anomaly Detection

论文链接:https://arxiv.org/abs/2503.18094

代码链接:尚未开源

武汉大学的一篇开放词汇的VAD论文,发表在CVPR 2025上,整体是沿着NWPU的Open Vocabulary Video Anomaly Detection这篇CVPR24论文继续的工作。文章最重要的创新点在我看来是对文本侧有比较有效的改进。

研究动机

如图所示,作者认为OVVAD中有两个挑战,一个是Detection Ambiguity,指的是新异常的分数不高,另一个是Categorization Confusion,指的是新的与base比较像的类别容易过拟合到base类别中。

为了解决第一个挑战,作者提出了Text-Augmented Dual Stream,直观来说就是讲视觉特征与文本特征融合,并且设置了dynamic和static两个支路,一个关注动态、另一个关注静态。在检测的时候把类别的信息融入到了视觉类别,所以能够得到更准确的分数。

为了解决第二个挑战,作者提出了Group-Guided Text Encoding,直观来说就是用GPT来生成类别对应的prompt,生成过程会专门正对相似的标签做出区分。

两个创新点的可视化如上图所示,先看(a),红色星星的文本特征可以让视觉特征更加可分(视线跟着黄色箭头走);再看(b),淡蓝色的星星在通过更好的prompt引导之后会离相似的元素更近一点(视线只需关注上方绿色虚箭头)。

在我看来,这两幅图都差点意思。

Fig1总结的两个问题要说重要也挺重要的,但是也不算一个非常新颖的问题,作者的叙述在我的眼里,举个例子来说,有点像在说“一个猫狗二分类的模型表现差的原因,分析为该模型对猫容易误判成狗。” 就是感觉问题没抓到点子上。

Fig2是我看完整个方法之后才能理解,缺少一定的引导,让人不太知道先看哪个再看哪个,不过看完后续方法之后倒也能理解,但是表达的意思就很简单,想说的就是“通过我的方法,这个表征变好了”,也有一点没抓到点子上的感觉。

方法

模型整体框架如上图(c)所示,和传统框架没有本质上的区别,有一个预训练的特征提取器(Image Encoder)、有特征增强的模块(时序编码+特征融合)、还有最后的二分类和匹配头。接下来对两个创新点进行详细介绍。

Group-Guided Text Encoding

对类别文本,作者首先通过LLM来将其聚合成几个group,每个group中的类别具备一定的相似度,比如shoplifting和stealing,然后再通过LLM对每个类别生成描述再送入CLIP Text Encoder中提取特征,这个阶段生成的时候会让LLM关注一个group内的相同点与不同点。

具体的prompt设计如下图所示:

没错,这个模块就是如此的简单,简单到感觉LLM在这发挥的作用十分有限,实际上,没有LLM,人工也完全可以实现这些操作。第一个操作就是把几个类别聚个类,又不是K400这种几百个类别的数据集,UCF-Crime就13个类别、XD就6个类别,感觉人工看一眼就行了(在补充材料中作者说确实人工处理了一点)。第二个操作就是先说共同点,再说不同点,这算一个比较实用的提示设计技巧,但是在极其有限的类别上,LLM在这里不是很关键。

此外,group的时候,根据后面结果,看上去是对novel和base的类别一起分类的,这样会不会提前告诉模型测试阶段的类别信息呢?会不会有标签泄露的嫌疑呢?

Text Augmented Dual Stream

作者设计了动态和静态两个Stream,分别融合的是不同的视觉和文本特征。

对于动态stream,作者使用时序编码后的特征+Group-Guided Text Encoding的文本特征。

对于静态stream,作者使用时序编码前的CLIP Image Encoder出来的视觉特征+ConceptLib文本特征,这个ConceptLib是让大模型说出类别相关的名词,这里文本特征就会更关注静态内容。(假如名词是“跑步”呢,用名词来对应静态特征合适吗?)

对于融合方法,作者设计了简单的Augmenter,这个模块就是视觉文本融合的一个模块,作者没有复杂的设计,一个Cross-Attention+MLP。

最后,在detection branch,两个stream用单独的检测头,并进行分数上的加权融合。在Categorization branch,则是用Group-Guided Text Encoding的文本特征与视觉计算相似度。

训练方式

Loss上,比VadCLIP多了一个sep损失,这个损失让视频最大的异常类别概率减去正常概率的绝对值最大化,也就是让模型预测正常类别的时候,异常类别概率变低,反之亦然。

作者分了两个阶段的训练,第一阶段只训练分类(sep损失+CE损失,此处可视为监督学习),第二阶段只训练检测(mil损失,此处则弱监督)。

实验

数据集和评价指标和Open Vocabulary Video Anomaly Detection一模一样,UCF-Crime+XD-Violence数据集,AUC、AP以及异常视频上的ACC指标,同样把数据分成了base类和novel类。

有一点比较在意的是上图,这个β\beta就是stream的加权融合参数,方法里面写的是tunable parameter,这里又直接人工设置了?所以是人工tune吗?此外,β=1\beta=1意味着完全不用静态stream的分数。这里面括号里的0我也看不太懂,还能专门为新类别指定这种超参吗?实际情况也不知道要检测是base还是novel呀?这一点可能存在标签泄露?

此外,没说实验的时候,用来做分类任务的模型和检测任务的模型是同一个模型还是不同阶段的模型。

SOTA比较

下面两张图是开放词汇set下的检测和分类性能,Table1带*的完全没有可比性,不知道为什么放在这里。在相同的split的比较下,这篇文章确实有比较显著的性能提升,特别是XD上的分类性能,ACC直接到了90.29,针对novel的分类性能提升巨大。

下面两张图是跨域的结果,不知道为什么论文只给出了自己的结果,没有把OVVAD那篇结果也拿过来,所以我手动比较了一下。跨域性能还是有明显下降的,四个值里三个都下降,从UCF跨到XD的ACC降了巨多。

本论文结果

OVVAD结果

消融实验

作者算是提出了非常多的小点,放了两个大表来验证每一个创新点,这个我倒是没仔细看,既然放出来了应该就是挺理想的。

下面这个图则是group的结果,可以看见XD上也就是把Abuse、Fighting、Shooting、Riot放在一起,CarAccident和Explosion都单独group,UCF上则是整体分成了4个group,这个工作量不是很大,直观也能看出来,感觉确实不需要LLM。但是这种prompt的方法还是挺新颖的。

作者对时序编码用了很老的LSTM,可能是被审稿人质疑了,所以补充材料里多放了个Transformer的时序编码结果(放都放了,为什么不把原来LSTM的结果也放到这个表里……补充材料又不限制页数),他们解释是因为Transformer参数多容易过拟合,但是结果感觉不是很能说服我。在XD上,总ACC下降,特别是novel的ACC下降最多,这个比较符合过拟合的解释,但是在UCF上,novel的ACC反而上升,这一点就很奇怪了。

总结

总的来说,从目前看来,算是一篇比较中规中矩的文章,在放出最终版本和开源代码之后可能会打消一些我的疑虑。在我看来,group的创新点有点过于简单,Dual stream的创新点则因为测试时忽略一个stream而不够扎实,motivation不算特别有趣,一些标签泄露的疑惑也存在。