VideoAgent: A Memory-augmented Multimodal Agent for Video Understanding¶
会议: ECCV 2024
arXiv: 2403.11481
代码: https://github.com/YueFan1014/VideoAgent
领域: LLM Agent / 视频理解
关键词: 视频理解Agent, 结构化记忆, 多模态工具使用, 长视频理解, LLM Agent
一句话总结¶
提出 VideoAgent,一个记忆增强的多模态 Agent,通过构建结构化记忆(temporal memory 存储事件描述 + object memory 存储物体跟踪状态)并利用 4 个工具与记忆交互,零样本完成长视频问答任务,在 NExT-QA 上平均 +6.6%、EgoSchema 上 +26.0%,接近 Gemini 1.5 Pro 的性能。
研究背景与动机¶
领域现状:视频理解尤其是长视频问答是极具挑战性的任务。现有方法主要分为两类:(a) 端到端视频 LLM(如 Video-ChatGPT、VideoChat),将视频帧直接送入多模态模型;(b) 基于 Agent 的方法,利用 LLM 的推理和工具调用能力来理解视频。
现有痛点: - 端到端方法的上下文窗口有限,难以处理长视频(几分钟到几十分钟),通常只能均匀采样少量帧,丢失大量时序信息 - 已有 Agent 方法缺乏对视频的结构化表示,每次查询都需要重新处理视频内容,效率低且容易忽略全局时序关系 - 视频中的长程时序关系(如因果推理、事件顺序)和物体跨帧追踪是核心难点,但现有方法都没有很好地同时处理这两方面
核心矛盾:长视频包含海量信息,LLM 的上下文窗口无法直接容纳。如何在保持信息完整性的同时,让 LLM 能高效地按需获取视频中的关键信息?
本文目标: - 如何为长视频构建一个紧凑但信息完整的结构化表示? - 如何让 LLM Agent 按需检索和利用这些信息来回答复杂问题?
切入角度:借鉴人类理解视频的方式——先形成整体印象(事件流),同时记住关键物体的出现和状态变化(物体记忆),回答问题时按需回溯查找。将这种认知模式形式化为"结构化记忆 + 工具调用"的 Agent 框架。
核心 idea:用结构化记忆(事件描述 + 物体状态数据库)预处理视频,再让 LLM 用 4 个专门工具与记忆交互来回答问题。
方法详解¶
整体框架¶
VideoAgent 采用两阶段流程:
阶段一:记忆构建(Memory Construction) - 输入:原始视频 - 处理步骤:将视频切分为 2 秒片段 → 分别构建 temporal memory 和 object memory - 输出:结构化记忆存储
阶段二:推理回答(Inference) - 输入:用户问题 + 结构化记忆 - 处理步骤:LLM 根据问题选择工具 → 多步交互 → 综合信息生成答案 - 输出:文本答案
这种"先理解后问答"的设计让记忆构建只需执行一次,之后可以反复回答不同问题,大幅提高效率。
关键设计¶
-
Temporal Memory(时序记忆):
- 功能:存储视频的时序事件流,包括每个片段的描述、文本特征和视觉特征
- 核心思路:将视频按 2 秒切分为片段序列 \(\{s_1, s_2, ..., s_n\}\)。对每个片段,使用视频描述模型(video captioning model)生成事件描述文本 \(c_i\)。同时计算每个片段的文本特征和视觉特征(用于后续的相似度检索)。所有信息存入 temporal memory:\(M_{temp} = \{(c_i, f_i^{text}, f_i^{visual})\}_{i=1}^{n}\)
- 设计动机:事件描述以文本形式捕获"发生了什么",便于 LLM 直接阅读理解;视觉/文本特征用于基于查询的片段定位。2 秒的粒度在信息密度和处理开销之间取得平衡
-
Object Memory(物体记忆):
- 功能:跟踪和存储视频中所有物体的类别、视觉特征、出现时段等信息
- 核心思路:使用目标检测器在各帧中检测物体,然后通过一种新颖的重识别(re-identification)方法进行跨片段物体追踪。关键创新在于 re-ID 方法——利用 CLIP 视觉特征计算不同帧中物体的相似度,维护一个全局物体 ID 表。物体信息存入 SQL 数据库中,每个物体包含字段:类别(category)、CLIP 特征(features)、出现的片段列表(appearing segments)
- 表示形式:\(M_{obj} = \text{SQL\_DB}\{(\text{id}, \text{category}, \text{clip\_feat}, \text{segments})\}\)
- 设计动机:很多视频问答涉及特定人物或物体(如"穿红衣服的人做了什么?"、"那个杯子最后放在哪里?"),需要物体级别的跟踪信息。SQL 数据库的形式让 LLM 可以通过结构化查询精确获取信息
-
工具集(Tool Set): VideoAgent 设计了 4 个与记忆交互的工具,LLM 通过零样本工具使用能力来调用它们:
(a) Caption Retrieval(事件描述检索): - 输入:起始片段 \(s_i\) 和结束片段 \(s_j\) - 功能:从 temporal memory 中提取 \([s_i, s_j]\) 之间的所有事件描述(最多 15 条) - 用途:了解某段时间内发生了什么事
(b) Segment Localization(片段定位): - 输入:文本查询 \(q\) - 功能:根据查询特征与 temporal memory 中存储的片段特征的相似度,定位最相关的视频片段 - 用途:找到"关键动作发生的时刻"
(c) Visual Question Answering(视觉问答): - 输入:问题 + 目标视频片段 - 功能:使用 video LLM 对指定的短视频片段进行描述和问答 - 用途:对特定片段进行深入视觉分析
(d) Object Memory Querying(物体记忆查询): - 输入:关于特定物体/人物的问题 - 功能:查询 SQL 数据库,检索物体的类别、出现时间、特征等信息 - 用途:回答物体/人物相关的问题(如"谁出现在第二个场景?")
-
多步推理过程:
- 功能:LLM 作为中央控制器,根据问题进行多步推理,每步调用一个工具
- 核心思路:每一步包含三个部分:
- Chain of Thought(思考):LLM 分析当前掌握的信息和还缺少什么
- Action(行动):选择调用哪个工具及参数
- Observation(观察):工具返回的结果
- 循环直到 LLM 认为信息足够,输出最终答案
- 设计动机:多步推理让 Agent 能处理复杂问题——先定位相关片段,再读取描述,必要时深入分析特定帧,最后综合推理得出答案。这比一次性处理整个视频灵活得多
损失函数 / 训练策略¶
VideoAgent 是一个零样本框架,无需针对特定任务训练: - 各组件使用现成的预训练模型:视频描述模型用于生成 captions,CLIP 用于计算特征和物体重识别,video LLM 用于视觉问答 - LLM 的工具使用通过 prompt engineering 实现(in-context learning),不需要微调 - 唯一关键的设计决策是 prompt 的构建和工具描述的撰写
实验关键数据¶
主实验¶
在长视频问答基准上的对比(NExT-QA 和 EgoSchema):
| 方法 | 类型 | NExT-QA Acc (%) | EgoSchema Acc (%) |
|---|---|---|---|
| InternVideo | 端到端 | 60.0 | 32.1 |
| Video-ChatGPT | 端到端 | 54.4 | 36.0 |
| SeViLA | 端到端 | 73.4 | 25.7 |
| LLoVi (GPT-3.5) | Agent | 67.7 | 50.3 |
| Gemini 1.5 Pro | 闭源端到端 | — | 63.2 |
| VideoAgent | Agent | ~71.3 | ~60.2 |
| vs 最强开源基线提升 | — | +6.6 (avg) | +26.0 |
关键发现: - VideoAgent 在 EgoSchema(长达数分钟的自中心视频)上取得了巨大提升 +26.0%,说明结构化记忆对长视频理解帮助极大 - 接近闭源 Gemini 1.5 Pro 的性能(EgoSchema 60.2 vs 63.2),但完全基于开源模型 - NExT-QA 上的提升相对温和(+6.6%),因为 NExT-QA 视频较短,结构化记忆的优势没有充分体现
消融实验¶
记忆组件和工具的消融分析:
| 配置 | NExT-QA | EgoSchema | 说明 |
|---|---|---|---|
| Full VideoAgent | 最高 | 最高 | 全部组件 |
| 去掉 Object Memory | 下降 | 下降 | 无法回答物体相关问题 |
| 去掉 Segment Localization | 下降 | 显著下降 | 长视频中定位能力关键 |
| 去掉 Caption Retrieval | 显著下降 | 显著下降 | 事件描述是核心信息源 |
| 仅用 VQA 工具 | 最低 | 最低 | 退化为逐帧问答 |
关键发现¶
- Caption Retrieval 是最关键的工具:去掉后性能下降最多,说明预先生成的事件描述是 Agent 理解视频的主要信息来源
- Object Memory 对人物/物体相关问题至关重要:在 EgoSchema(大量涉及手部操作和物体交互)中作用尤其明显
- Segment Localization 在长视频中不可或缺:帮助 Agent 快速定位到相关时间段,避免在整个视频中大海捞针
- 2 秒片段粒度:是实验中发现的最佳平衡点——更短会增加 captions 数量导致冗余,更长会丢失精细事件信息
- 多步推理比单步显著更好:Agent 平均需要 2-4 步工具调用才能回答一个问题,说明问题确实需要多步信息聚合
亮点与洞察¶
- 结构化记忆是视频 Agent 的关键差异化设计:不同于直接将视频帧送入 LLM,VideoAgent 预先将视频"翻译"为结构化文本表示(事件描述 + 物体数据库),让 LLM 可以用自然语言和 SQL 查询高效获取信息。这种"先理解-后检索"的范式比"直接看视频"更符合长视频场景
- Re-identification 方法简洁有效:利用 CLIP 特征做跨帧物体匹配,避免了训练专门的 tracker。在 SQL 数据库中维护物体 ID 表,使得物体记忆的查询和更新非常规范化
- 零样本框架的现实意义:不需要任何训练数据,直接组合现成模型,部署成本低。这种 plug-and-play 的设计让框架能够随着各组件模型的升级而自然变强
局限与展望¶
- 记忆构建质量依赖基础模型:事件描述的准确性取决于 video captioning 模型的能力,物体检测/跟踪依赖检测器性能。基础模型的错误会在记忆中积累,无法修正
- 固定 2 秒粒度不够灵活:不同视频内容密度差异很大(如格斗场景 vs 静态对话),固定粒度无法适应。可以考虑自适应分段策略
- 缺少空间关系建模:object memory 只记录物体的类别和出现时段,没有空间位置信息(如"左边的人"、"桌子上面的杯子"),限制了空间推理能力
- 工具调用效率问题:多步推理的每一步都需要调用 LLM,延迟较高。对于实时或近实时应用不太友好
- 仅限问答任务:当前框架针对视频 QA 设计,未覆盖视频生成、编辑、摘要等其他视频理解任务
相关工作与启发¶
- vs LLoVi:LLoVi 也用 LLM 处理视频描述,但缺少物体级记忆和交互式工具调用,本质上是"读 captions 后做 QA"。VideoAgent 的结构化记忆和多工具交互使其能处理更复杂的推理
- vs Video-ChatGPT / VideoChat:端到端视频 LLM 直接处理视频帧,受限于上下文窗口。VideoAgent 通过记忆中转突破了这个限制,但也引入了记忆构建的额外开销
- vs Gemini 1.5 Pro:Gemini 有超长上下文窗口可直接处理整个视频,但它是闭源模型。VideoAgent 作为开源方案已接近其性能,展示了 Agent 范式的潜力
- 启发:记忆增强 Agent 的思路可以推广到其他长序列理解任务(长文档 QA、音频理解等)。核心思想是"先结构化存储再按需检索",本质上是用外部存储扩展 LLM 的有效上下文
评分¶
- 新颖性: ⭐⭐⭐⭐ 结构化记忆(temporal + object)的双记忆设计直觉且有效,re-ID 方法也有创新
- 实验充分度: ⭐⭐⭐⭐ 在 NExT-QA 和 EgoSchema 两个主要基准上验证,有消融和案例分析
- 写作质量: ⭐⭐⭐⭐ 框架图清晰,案例演示直观,易于理解
- 价值: ⭐⭐⭐⭐⭐ Agent+记忆的范式对长视频理解影响深远,EgoSchema +26% 的提升非常显著