- 论文 - 《HoloTrace: LLM-based Bidirectional Causal Knowledge Graph for Edge-Cloud Video Anomaly Detection》
- 代码 - Github
- 关键词 - ACM MM2025、边缘-云协作、知识图谱、视频异常检测VAD
1 引言
- 利用异构的边缘-云资源实现低延迟、高精度的VAD已成为工业界和学术界的研究重点。
- 一方面,海量的视频数据使得将所有数据上传至云端进行分析变得不切实际,受限于带宽瓶颈和高往返延迟,从而影响异常检测的实时性。
- 另一方面,边缘设备有限的计算和存储能力使其难以在数据源头完成计算密集型的分析任务。
- 现有方法的局限性
- 零样本泛化能力
- 可解释性
- 推理开销
- 缺乏高质量数据集
- 因果只是图谱 CKG
- 一种能够整合并存储数据内部因果关系及相关知识的模型。
- CKG 展现出强大的因果推理能力,不仅能揭示事件之间的因果关系,还有助于异常事件的推理解析。
- 不足之处:
- 传统的 CKG 通常基于预定义数据集离线构建,且仅包含事件间的单向关联。然而,作者观察到因果推理往往涉及双向的逻辑关系。
- 此外,传统CKG依赖大规模真实世界数据集,限制了其快速构建和动态适应能力。
- 本文方法概述 - HoloTrace
- 定义:一种基于 LLM 的双向因果只是图谱的边缘-云协同 VAD 系统。
- 核心思想:为视频中的关键事件分配专用节点,并在它们之间建立双向发生概率,从而构建双向因果知识图谱(Bi-CKG)。
- 具体介绍
- 边缘端:首先利用 LLM 生成异常分数的惯性特征,确定异常事件的初步范围。随后,基于构建的 Bi-CKG 图,采用隐马尔可夫模型推断每一帧的事件状态。通过前向推理,沿时间顺序方向确定事件状态;通过后向推理,在逆时间方向进行状态推断。综合两个方向的推理结果,得到每一帧的最终事件状态。
- 云端:利用 LLM 的内部知识来构建和更新Bi-CKG图。在离线阶段,LLM根据视频场景生成相关的事件链,并为每种异常类型初始化对应的图结构。为了建立事件之间的双向关联概率,作者通过精心设计的 choice-based prompt 挖掘LLM的内部知识。在在线阶段,LLM根据边缘端上传的关键视频帧生成新图,并对原始图进行更新,从而增强其对视频场景的表征能力。
- 数据集贡献 - SVAD
- 一个包含10类异常、共计632个真实世界视频的大规模VAD数据集。这些视频来自公开资源,并经过人工标注,提供帧级异常标签。

2 SVAD 数据集
这部分简单介绍
- SVAD 数据集
- 视频收集
- 首先从 UCF-Crime 数据集中选取高质量的监控视频,并进行剪辑。
- 接着,通过在 Google 和抖音上使用对应关键词搜索各类异常视频。
- 最后人工筛选,共收集到 632 个视频。
- 帧级标注
- 第一步:手动标注每个视频中异常事件的边界,作为初步估计。注意,每个异常视频仅包含一种异常类型;
- 第二步:在手动确定的边界附近选取多个帧(≥20 帧),并使用 GPT-4o [16] 判断每一帧是否异常;
- 第三步:对于 VLM 判断结果与初始人工判断不一致的帧,进行人工复核,最终形成标注数据集。
- 与现有数据集的对比,如表1所示。
- 视频收集

3 HoloTrace 系统设计
3.1 概述
HoloTrace 的系统架构如图 2 所示。
边缘端
- 初步检测: 计算帧特征与异常关键词特征的余弦相似度,并基于相似度使用 IER 模块(惯性事件推理)生成异常事件的初步边界。
- 边界精修: 计算帧特征与 Bi-CKG 图中事件特征的相似度。基于因果关系,HBR 模块(HMM 双向推理)对边界进行精细化调整。
- 帧选择与传输: 确定异常范围后,选择边界附近若干帧上传云端。帧的选择考虑 事件多样性、带宽开销、云端负载。所传输的帧用于云端更新 Bi-CKG 图,提升检测性能。
云端
- 事件确认:VLM 判断接收帧是否异常,识别事件边界(左/右)。若缺失边界 → 请求边缘端补充帧;否则 → 汇总所有帧的描述,作为事件描述输入 Bi-CKG Builder。
- Bi-CKG Builder 模块
- 离线模式
- LLM 从用户查询提取异常关键词;
- VLM 生成场景描述;
- LLM 结合关键词 + 场景,推理生成异常事件链;
- 构建带双向概率的异常事件知识图谱。
- 在线模式
- LLM 从汇总描述中提取事件链;
- 更新现有 Bi-CKG 图,实现动态演化与持续优化。
- 离线模式

3.2 动态 Bi-CKG 构建
3.2.1 Bi-CKG 图定义
Bi-CKG 图被定义为一个对称有向图 G = \{V, R\} ,其中 V 表示节点集合, R 表示边的集合。一个示例 Bi-CKG 图如图 3 所示。
在 HoloTrace 中,每个节点 V_i \in V 对应一个具体的事件(例如,节点 V_1 表示“行人过马路”)。根据其与异常类型的关联程度,一个节点可被分类为正常节点或异常节点。对于两个按时间顺序发生的事件 V_i 和 V_j ( V_i 发生在 V_j 之前),边 R_{ij} 表示事件 V_i 导致 V_j 发生的概率,称为前向概率。相反,边 R_{ji} 表示在观察到 V_j 的前提下, V_i 已经发生的概率,称为后向概率。
在本节后续内容中,将图中两个事件之间的因果关联表示为 \langle V_c, V_e, I_f, I_b \rangle 。其中, V_c 表示前置事件, V_e 表示后置事件, I_f 表示前向概率, I_b 表示后向概率。

3.2.2 离线阶段
离线阶段的主要目标:利用用户查询和来自边缘设备的帧来初始化 Bi-CKG 图 G 。
-
用户查询与场景理解
- 输入:自然语言查询(例:“视频中是否有抢劫?”)。
- LLM:提取异常相关关键词(例:“抢劫”)。
- VLM + LLM:随机采样最近 k=5 帧 → VLM 提取逐帧场景描述 → LLM 汇总生成整体场景描述。
-
事件链生成
- LLM:结合关键词 + 场景描述 → 生成所有可能的异常事件链。
- 示例(针对“抢劫”):
- “进入商店 → 威胁收银员 → 索要钱财”
- “进入商店 → 浏览商品 → 展示武器 → 收集现金”
- Bi-CKG 图:节点 = 事件,边 = 事件关联。
-
概率建模
- 问题:Bi-CKG 图中边的前向/后向概率未知。
- 解决:
- 单一依赖节点:若节点只有一个前置/后置事件 → 直接赋值概率:
- 前向或后向概率 = 0.9,自环 = 0.1。
- 一般节点:
- 设计 基于选项的提示 (choice-based prompt),利用 LLM 推理确定概率。
- 方法:
- 前向概率 I_f → 询问 “如果事件A发生,最可能的后续事件是哪一个?”
- 后向概率 I_b → 询问 “如果事件B发生,最可能的前置事件是哪一个?”
- 提取 LLM 对选项的 logits,归一化为概率分布。
- 单一依赖节点:若节点只有一个前置/后置事件 → 直接赋值概率:
-
特殊情况:基于对象的异常
- 某些异常是由“异常对象”触发(例:UCSD PED2 → 自行车出现在人行道)。
- 事件链简化为:
- “无<异常对象> → <异常对象>出现”。
- 其余步骤(概率计算、图谱构建)保持一致。
这里不会有数据泄露问题吗?用户的请求“视频中是否有抢劫?”包含了标签信息。

3.2.3 在线阶段
在线阶段的主要目标:使 Bi-CKG 图中的知识与来自边缘端的视频内容保持一致,利用从边缘端选取的视频帧对离线阶段构建的 Bi-CKG 图进行更新。
- 生成帧描述
- 给定一组选中的帧,VLM 首先为每帧生成一个描述。注意,在线阶段生成的描述更侧重于帧内发生的事件。
- 生成事件链和 Bi-CKG 图
- LLM 用于汇总所有帧的事件描述,并生成一条事件链。
- 基于该事件链,按照离线阶段所述的步骤构建一个局部的 Bi-CKG 图 G' 。
- 更新图
-
将该局部图 G' 整合到初始的 Bi-CKG 图 G 中,生成更新后的 Bi-CKG 图。
-
记原图 G 中事件对 (V_c, V_e) 的概率为 (I_f, I_b) ,而在局部图 G' 中相同事件对的概率为 (I'_f, I'_b) 。则 G 中的概率更新如下:
I_f \leftarrow \alpha I'_f + (1 - \alpha) I_f \\ I_b \leftarrow \alpha I'_b + (1 - \alpha) I_b \quad (1)- 其中, \alpha 控制更新比例。
-
如果有新的事件,将插入到原始图 G 中,概率更新后,重新归一化。
-
3.3 因果事件推理
动机:由于边缘设备的网络资源有限,将每一帧上传至云端进行异常检测是不切实际的。
解决思路:设计了一个事件推理器(Event Inferrer),在边缘端执行初步的异常分析。该事件推理器主要包括两个核心模块:惯性事件推理(Inertial Event Reasoning, IER) 和 HMM 双向推理(HMM Bidirectional Reasoning, HBR)。其中,IER 利用异常关键词与视频帧之间的相似性进行初步异常识别,而 HBR 则借助 Bi-CKG 图对异常检测结果进行精细化推理。
3.3.1 惯性事件推理
动机:视频中的异常事件通常持续一定时间。并且,作者发现一个异常事件的异常分数整体趋势通常是:先上升、保持稳定,然后下降,作者将这种特性称为异常事件的“惯性”。
IER流程:
- 异常分数计算
- 使用 CLIP:
- 文本编码器提取异常关键词特征 \xi_T 。
- 图像编码器提取视频帧特征 \xi_I 。
- 余弦相似度作为异常分数:
- 使用 CLIP:
-
利用惯性特性
- 惯性现象:异常分数通常“上升 → 稳定 → 下降”。
- 对 S 进行 指数移动平均 (EMA) 平滑 → 得到 S'。
- 计算相邻帧差值 \text{diff} 以检测趋势。
-
起止位置检测
- 定义窗口长度:上升 w_a、保持 w_h、下降 w_d。以及阈值 \text{thresh}。
- 起始帧 s:若
- 上升帧数 > w_a 且 下降帧数 < w_d;
- 接下来 w_h 帧均满足 S'_j > \text{thresh}; → 记录起始帧 s。
- 结束帧 e:若
- 下降帧数 > w_d 且 上升帧数 < w_a;
- 接下来 w_h 帧均满足 S'_j < \text{thresh};→ 记录结束帧 e。
-
输出
- 最终以 (s, e) 作为异常事件的初始边界。
3.3.2 HMM 双向推理
- 输入:初步异常区间 (s, e),来自云端的对应异常类型的 Bi-CKG 图 G。
- 目标:利用 Bi-CKG 的因果关系,精确定位异常起止位置 (s', e')。
步骤:
-
事件特征提取
- 提取 Bi-CKG 中所有事件 V = \{V_1, ..., V_n\} 的文本描述。
- 使用 CLIP 编码事件文本,计算每帧与各事件的余弦相似度,归一化得事件分数 S_t = \{S^1_t, ..., S^n_t\}。
-
**状态概率建模(HMM 双向推理)**定义 B^i_t:第 t 帧属于事件 i 的概率。
-
前向推理(\alpha^i_t):基于前向因果概率 R_{ij} 从前往后传播。
\alpha^{j}_{t+1} = \sum_{i=1}^{N} \alpha^{i}_{t} R_{ij} |S^{j}_{t+1}|, \quad \alpha^i_1 = (B^i_1)^2 -
后向推理(\beta^i_t):基于后向概率 R_{ji} 从后往前传播。
\beta^j_t = \prod_{i=1}^{N} \beta^i_{t+1} R_{ji} |S^j_t|, \quad \beta^i_T = (B^i_T)^2 -
融合结果:
B^i_t = \alpha^i_t \cdot \beta^i_t
-
-
事件判定与边界优化
- 每帧关联事件:i^* = \arg\max_i B^i_t。
- 根据 Bi-CKG 中事件类型(正常/异常),细化原始边界 (s, e),得到精炼边界 (s', e')。
- 输出:优化后的异常边界 —— HoloTrace-base。
3.4 自适应帧传输
3.4 直接翻译原文了。。。
为了利用视频中的真实事件更新 Bi-CKG 图,并进一步提升异常检测的准确性,作者从边缘端向云端传输异常事件相关的帧。将更多帧上传至云端进行分析有助于构建更贴合现实场景的 Bi-CKG 图,从而提高异常检测精度。然而,这也带来了更高的带宽开销和云端资源消耗。为在性能与资源消耗之间取得平衡,作者设计了一种自适应帧传输机制。
3.4.1 边缘端帧选择
对于一个异常事件的初步边界 s' 和 e' ,作者首先在边界前后各选取 \gamma 帧,构成初始选择范围 [0, 1, \dots, 2\gamma] 。随后,作者对该范围进行优化,以确定起始位置 r_1 和结束位置 r_2 ,其中满足 0 \leq r_1 < \gamma \leq r_2 \leq 2\gamma 。位于 r_1 和 r_2 之间的帧将被传输至云端进行分析。在此过程中,作者优先选择每个异常事件起始和结束附近的多帧,因为这些帧对 Bi-CKG 图更新和异常事件检测最为关键。
为提升异常检测性能,作者定义一个事件覆盖度 C ,用于衡量一系列帧 \{r_1, \dots, r_2\} 所包含的事件多样性。事件覆盖度越大,表示该异常事件描述得越完整。具体地,事件覆盖度 C(r_1, r_2) 定义为:
其中 B_t = \max_i \tilde{B}^i_t 。为避免过度消耗网络带宽和云端资源,作者定义了带宽使用因子 W(r_1, r_2) 和云端负载因子 L(r_1, r_2) ,分别如下:
其中, W_c 表示当前带宽使用量, W_m 表示最大可用带宽; L_c 表示当前云端负载, L_m 表示最大云端负载。
作者的目标是在最小化带宽和云端资源消耗的同时最大化事件覆盖度。综上,边缘端的帧选择问题可形式化为:
约束条件为公式 (6) 至 (7),其中 \lambda_1, \lambda_2, \lambda_3 为权重系数。通过线性规划算法,作者确定应发送至云端用于 Bi-CKG 图更新的帧集合 \{r_1, \dots, r_2\} 。
3.4.2 云端辅助检测
除用于 Bi-CKG 图更新外,所传输的帧还用于云端的辅助异常检测。针对每个异常事件,作者定义“左边界”和“右边界”。具体而言,若连续五帧遵循模式“(正常,正常,异常,异常,异常)”,则这五帧被称为异常事件的左边界,其中第三帧被视为异常事件的起始点。类似地,若连续五帧遵循模式“(异常,异常,异常,正常,正常)”,则这五帧被称为异常事件的右边界,其中第三帧被视为异常事件的结束点。
给定从边缘端传来的帧集合 \{r_1, \dots, r_2\} ,作者在云端使用视觉语言模型(VLM)为每帧生成描述,并利用大语言模型(LLM)判断其是否异常。基于云端的异常检测结果,作者扫描是否存在左边界或右边界。如果某一侧边界未在已传输帧中被识别,则请求边缘端发送额外帧以定位该边界。一旦目标帧被识别,新发送的帧将同时用于 Bi-CKG 图更新和辅助检测。
4 实验
- 性能实验

只测试了AUC、AP指标,没有测试可解释性性能。
- 消融实验

- 与网络带宽、资源利用率相关的实验
