论文笔记《Follow the Rules: Reasoning for Video Anomaly  Detection with Large Language Models》

论文笔记《Follow the Rules: Reasoning for Video Anomaly Detection with Large Language Models》

Administrator 3 2025-06-29
  • 论文 - 《Follow the Rules: Reasoning for Video Anomaly Detection with Large Language Models》
  • 代码 - Github
  • 关键词 - 无需训练、Prompt 工程、视频异常检测VAD、视觉-语言模型VLM、基于规则推理

1 引言

  • 动机
    • 现有的 VAD 方法对检测结果缺乏解释性,阻碍了其在现实世界部署中的公众信任。
    • 而简单引入 LLM 来执行 VAD 并不理想,因为 LLM 的知识主要面向通用语境,可能与特定现实世界的 VAD 应用场景不符,从而导致其对“异常”的理解与实际所需定义存在偏差。然而,针对每个应用场景微调 LLM 成本高昂。
  • 启发:通过提示工程结合“归纳和演绎”两种基本推理形式引导 LLM 适应不同 VAD 场景的需求。
  • 本文工作 - AnomalyRuler
    • 一种新颖的基于规则推理的 VAD 框架。
    • AnomalyRuler 包含两个主要阶段:
      • 归纳阶段,LLM 被输入少量正常样本作为参考,并据此总结出正常模式,从而归纳出一套用于检测异常的规则。
      • 演绎阶段,系统依据所归纳的规则来识别测试视频中的异常帧。
    • 此外,作者还设计了一系列增强策略
      • 规则聚合:通过随机平滑(randomized smoothing)减少规则归纳中的误差;
      • 感知平滑:提出指数多数平滑(Exponential Majority Smoothing)降低感知误差并增强时序一致性;
      • 鲁棒推理:通过“复核机制”确保推理输出的可靠性。
    • 优点:AnomalyRuler 是首个面向无监督 VAD 任务的推理方法,仅需少量正常样本提示,无需完整训练过程,从而能够快速适应各种 VAD 场景。
paper93-1.webp

2 归纳阶段

归纳阶段的目标:从少量正常参考帧中推导出用于 VAD 的规则集。

归纳阶段的组成如图2上半部分,由三个模块组成

  1. 视觉感知模块:利用 VLM ,将少量正常参考帧作为输入,并输出帧的描述。
  2. 规则生成模块:使用 LLM 基于这些描述生成规则。
  3. 规则聚合模块:采用投票机制来缓解规则生成过程中的错误。
paper93-2.webp

2.1 视觉感知模块

基本思路:利用 VLM 将视频帧转换为文本描述。

具体流程

从训练集中随机选取少量正常参考帧 ​ F_{\text{normal}} = \{ f_{\text{normal}_0}, \dots, f_{\text{normal}_n} \} ,该模块输出每个正常参考帧的文本描述:

D_{\text{normal}} = \{ \text{VLM}(f_{\text{normal}_i}, p_v) \mid f_{\text{normal}_i} \in F_{\text{normal}} \},

其中 ​ p_v 是 prompt:“What are people doing? What are in the images other than people?” 。注意这里设计 ​ p_v 将人类和环境分开,以引导模型关注场景中的特定方面,并将任务分解为两个子问题,即人类活动规则和环境对象规则。


2.2 规则生成

基本思路:借助上述 ​ D_{\text{normal}} ,该模块使用冻结的 LLM 生成规则(记为 ​ R )。

具体流程

形式上,​ R = \{ \text{LLM}(d_{\text{normal}_i}, p_g) \mid d_{\text{normal}_i} \in D_{\text{normal}} \} ,其中 ​ p_g 是 prompt(详情见附录 A.2)。作者设计了三种策略,指导 LLM 推导规则:

  1. Normal and Anomaly(正常与异常)​ p_g 引导 LLM 执行对比推理,首先推导出正常规则,然后,通过将异常与正常规则进行对比,生成异常规则。例如:如果“walking”是正常 rule,则将“non-walking movement”纳入异常 rule。
  2. Abstract and Concrete(抽象与具体)​ p_g 帮助 LLM 执行类比推理,从一个抽象概念推广到更具体的例子。例如:如果“walking”是正常 rule,其定义被扩展为“walking,无论是单独还是与他人一起”。而异常规则演变为包括具体的非行走运动,例如“non-walking movement, such as 骑自行车、滑板或滑板车”。
  3. Human and Environment(人类与环境)​ p_g 引导 LLM 分别关注环境元素和人类活动。这丰富了 VAD 任务中的规则集,因为在 VAD 中,异常通常源于人类与其环境之间的交互。

2.3 规则聚合

基本思路:使用 LLM 作为聚合器,并采用投票机制,将从 ​ n 个随机选择的正常参考帧独立生成的 ​ n 组规则(即 ​ R )合并为一组鲁棒规则,表示为:

R_{\text{robust}} = \text{LLM}(R, p_a).

设计目的:缓解先前阶段可能出现的不正确的规则,生成对个体错误更具鲁棒性的规则。

设计灵感:这一策略基于随机平滑(randomized smoothing) 的假设,即错误可能在单个输入上发生,但不太可能在多个随机采样的输入中持续出现。


3 演绎阶段

演绎阶段的目标:精确感知视频中的每一帧,并基于规则使用 LLM 推理该帧是否正常或异常。

演绎阶段的组成如图2下半部分,由三个模块组成

  1. 视觉感知模块:与归纳阶段类似,但是它的处理对象变成了测试视频的连续提取帧,并输出一系列帧描述 ​ D = \{d_0, d_1, \dots, d_t\}
  2. 感知平滑模块:通过提出的 指数多数平滑(Exponential Majority Smoothing) 减少错误,此时提供了初步的检测结果。
  3. 鲁棒推理模块:利用 LLM 对初步检测结果进行复查,并根据规则进行推理。
paper93-2.webp

3.1 感知平滑

动机:视觉感知错误同样可能发生在归纳阶段。

基本思路:提出了一种名为 指数多数平滑 的新机制。该机制通过考虑视频中的时间一致性(即运动是连续的,应随着时间表现出一致的模式),缓解感知错误。将这种平滑的结果用于指导帧描述的修正,从而增强 AnomalyRuler 对错误的鲁棒性。

以下是四个关键步骤

step 1:初始异常匹配

思路:测试视频描述和异常规则之间的关键词匹配。

对于连续帧描述 ​ D = \{d_0, d_1, \dots, d_t\} ,AnomalyRuler 首先匹配异常规则中找到的异常关键词 ​ K (详见论文附录),并为每一帧分类标签 ​y_i ,表示预测标签(只要存在异常关键词就认为是异常帧 ​y_i=1)。得到初始匹配预测 ​ Y = \{y_0, y_1, \dots, y_t\}

step 2:指数多数平滑

目的:通过调整预测结果来反映指定窗口内的最常见状态,从而增强人类或物体运动的连续性。

基本思路:提出了一种结合指数移动平均(EMA)和Majority Vote的方法。

具体步骤如下:

  1. EMA。对于原始预测 ​ y_t ,计算指数移动平均值 ​ s_t ,公式为:​ s_t = \frac{\sum_{i=0}^t (1-\alpha)^{t-i} y_i}{\sum_{i=0}^t (1-\alpha)^i}. 其中,​ \alpha 是影响 EMA 计算中数据点权重的参数。

  2. Majority Vote。在每个 EMA 值 ​ s_i 中心的窗口内应用多数投票,窗口大小为 ​ p 。这意味着对于每个 ​ s_i ,考虑其窗口内的邻近 EMA 值,并根据这些值超过或低于阈值 ​ \tau 的多数情况确定平滑后的预测 ​ \hat{y}_i 。定义该阈值为所有 EMA 值的均值:​\tau = \frac{1}{t} \sum_{i=1}^t s_i 。形式上,平滑后的预测 ​ \hat{y}_i 由以下公式决定:

    \hat{y}_i = \begin{cases} 1 & \text{if } \sum_{j=\max(1,i-p)}^{\min(i+p,t)} \mathbb{1}(s_j > \tau) > \frac{\min(i+p,t)-\max(1,i-p)+1}{2} \\ 0 & \text{otherwise} \end{cases} \tag{1}

    其中,​ \mathbb{1}(\cdot) 表示指示函数。

最终平滑后的预测结果表示为 ​ \hat{Y} = \{\hat{y}_0, \hat{y}_1, \dots, \hat{y}_t\} ,其中每个 ​ \hat{y}_i 为 1 或 0。


step 3:异常分数

基本思路:通过二次指数移动平均进一步计算异常分数。

具体而言,异常分数表示为 ​ A = \{a_0, a_1, \dots, a_t\} ,其中 ​ a_t 的计算公式如下:

a_t = \frac{\sum_{i=0}^t (1-\tau)^{t-i} \hat{y}_i}{\sum_{i=0}^t (1-\tau)^i} \tag{2}

作者将上述过程称为 AnomalyRuler-base,作为一个基线方法,该基线的异常分数与当前 SOTA 方法相当。它提供了一个“哑元答案”(dummy answer),即如果 ​\hat{y}_i=1 则标记为“异常”,否则标记为“正常”。


step 4:描述修改

在这一步骤中,AnomalyRuler 比较 ​ Y ​ \hat{Y} ,并输出修改后的描述 ​ \hat{D}

  • 如果 ​ y_i = 0 ​ \hat{y}_i = 1 ,表明感知模块存在假阴性错误,则 AnomalyRuler 通过在 ​ d_i 中添加“There is a person {k}”来修正描述,其中 ​ k \in K 是窗口大小 ​ w 内最频繁出现的异常关键词。
  • 如果 ​ y_i = 1 ​ \hat{y}_i = 0 ,表明感知模块存在假阳性错误,则 AnomalyRuler 通过移除描述中包含异常关键词 ​ k 的部分来修正 ​ d_i

3.2 鲁棒推理

基本思路:AnomalyRuler 利用 LLM 完成 VAD 的推理任务。

输入:归纳阶段推导出的鲁棒规则 ​ R_{\text{robust}} 作为上下文。LLM 接收每帧的修改后描述 ​ \hat{d}_i ,以及由 AnomalyRuler-base 生成的“哑元答案”​\hat{y}_i

输出​ Y^* = \{\text{LLM}(\hat{d}_i, \hat{y}_i, R_{\text{robust}}, p_r) \mid \hat{d}_i \in \hat{D}, \hat{y}_i \in \hat{Y}\}

这一验证步骤并非直接要求 LLM 分析 ​ \hat{d}_i ,而是通过使用“哑元答案”作为提示来改进决策过程。这种方法帮助 AnomalyRuler 减少漏检(假阴性)现象,并确保其推理更加符合规则。

此外,为了将 AnomalyRuler 与基于阈值化异常分数的最新方法进行比较,作者应用公式 (2),将 ​ \hat{y}_i 替换为 ​ y_i^* \in Y^* ,从而输出异常分数。


4 实现

实验部分略,只介绍一下实现细节。

  • 视觉感知模块(VLM):CogVLM-17B
  • 归纳阶段(LLM):GPT-4-1106-Preview
  • 演绎阶段(LLM):开源模型 Mistral-7B-Instruct-v0.2

实验部分的数据集:UCSD Ped2、CUHK Avenue、ShanghaiTech、UBnormal