MA-EgoQA: Question Answering over Egocentric Videos from Multiple Embodied Agents
Paper: arXiv:2603.09827 Code: KangsanKim07/MA-EgoQA Code reference:
main@67ae23cc(2026-03-11)
1. Motivation (研究动机)
MA-EgoQA 关注的是一个比普通 egocentric video QA 更接近真实部署的问题:未来一个家庭或工作场所里可能同时有多个 embodied agents 持续观察环境,人类提问时需要系统把不同 agent 的第一视角记忆合并起来,而不是只理解单个人的一段短视频。形式化地说,若有 个 agents,各自持续记录 小时视频 ,则系统面对的是 、总长度 的多视角长期记忆;MA-EgoQA 的问题还要求答案依赖两个以上 agent 的观测。
现有 benchmark 的缺口主要有三层。第一,EgoSchema、EgoThink、EgoPlan-Bench 等 egocentric QA/plan benchmark 多数样本仍是分钟级到一小时内的视频,不能覆盖 agent 连续运行数天后的长期记忆检索。第二,EgoLife 虽然提供了 6 人、7 天、266 小时的 shared-house egocentric video,但其 EgoLifeQA 仍按 single-agent assumption 设计,问题通常可以从某一个人的记忆里回答。第三,多智能体系统文献更常评估协作执行或规划,而不是评估系统如何把多个 embodied agents 的并行感知流压缩、通信、对齐并用于 QA。
Figure 1 解读:图中强调 MA-EgoQA 的输入不是一个视频或一个人的 episodic memory,而是来自多个 agents 的长期第一视角视频流。核心难点在于问题可能跨 agent、跨时间、跨地点,并且答案需要同时引用不同人的局部观察;这使得简单把所有 caption 串接到 LLM 的方式既昂贵又容易被无关信息干扰。
这篇论文要解决的具体问题是:构造一个能评估 multi-agent egocentric video QA 的 benchmark,并给出一个 training-free baseline 展示 shared memory + selective retrieval 的必要性。这个问题值得研究,因为一旦 agents 能把分散的个人视角组织成可检索的全局记忆,人类就可以询问“谁先做了某事”“某人误解了什么”“某个物品被哪些人使用过”等真实协作场景中的问题,而系统不必把所有视频帧或所有 caption 暴力塞进上下文。
2. Idea (核心思想)
核心思想是把 multi-agent egocentric QA 拆成“全局事件记忆”和“按 agent 动态追问”两层:先把每 10 分钟所有人的 caption 压缩成 event-based shared memory,用 4W1H 抽象对齐不同人的局部视角;回答问题时再从 shared memory 里找相关全局事件,并让 planner 决定应该去哪个 agent 的原始记忆里检索更细的证据。
MA-EgoQA 的 benchmark 创新在于,它不是把 EgoLife 的单人 QA 简单改写成多人版本,而是设计了 Social Interaction、Task Coordination、Theory of Mind、Temporal Reasoning、Environmental Interaction 五类问题,并通过 zero-context filtering、single-agent filtering、cross-model validation 和 human verification 去掉能靠常识或单人记忆回答的样本。最终保留 1,741 个高质量 QA,所有问题都必须跨多个 agents 的观测来回答。
与 All Caption Concat 或 All Frame Concat 的根本区别在于,后者把“更多上下文”当作答案来源,代价是 128k 到 1M token 或数千到上万帧,并且大量无关信息会稀释有效证据;EgoMAS 则把 shared memory 当成 routing layer,用 BM25 和 planner 先定位相关事件和相关 agent,再只把少量 agent-wise evidence 交给 responder。因此它在更短输入上下文下取得更高准确率。
3. Method (方法)
3.1 整体框架:MA-EgoQA benchmark + EgoMAS baseline
论文包含两个互相支撑的部分。第一部分是 benchmark construction:基于 EgoLife 的 6 人 7 天 shared-house 视频,生成五类多 agent QA,经过多轮自动过滤和人工验证。第二部分是 EgoMAS:一个不训练模型参数的 centralized multi-agent system baseline,核心流程是 shared memory construction、system-level retrieval、agent-wise dynamic retrieval、final response generation。
Figure 2 解读:图中给出五类 MA-EgoQA 示例:SI/TC 关注多人互动和协作分工,ToM 关注某个 agent 的 belief、misunderstanding 或 intention,TR 关注跨 agent 时间线的并发与先后顺序,EI 关注环境物品的分布式使用。每个例子都给出 evidence snippets,说明答案不是单个 clip 的局部识别,而是需要在多人、多时间段记忆之间建立关系。
Figure 3a–3d 解读:统计图展示样本在 category、day、agent reference 和 question type 上的覆盖。它的作用是说明 MA-EgoQA 不是只考一个高频互动模板,而是在 7 天、6 个 agents、多个问题类型上分布;同时,required agents 越多、multi-span 或 temporal comparison 越多,检索和融合难度越高。
3.2 Benchmark construction
3.2.1 数据源与任务定义
MA-EgoQA 建在 EgoLife 上:6 个参与者在同一房子中生活 7 天,持续佩戴第一视角相机,形成 266 小时 egocentric video。论文把 multi-agent egocentric video QA 定义为:给定 个 agents 的视频集合 和用户问题 ,系统必须基于多个 agents 的观测回答;benchmark 设计上要求每个问题需要两个以上 agents 的信息。
3.2.2 五类问题
- Social Interaction (SI):定位并理解跨视频流中的 casual conversations、affiliative behaviors 和 group behaviors,重点是“谁与谁互动、互动中传递了什么信息”。
- Task Coordination (TC):考察协作任务中的角色分配、责任划分、行动顺序和决策过程,贴近 MAS 中 shared goal execution 的场景。
- Theory of Mind (ToM):考察对他人 beliefs、desires、intentions、emotions 的推理;问题通常要求知道某人看到了什么、没看到什么、误解了什么。
- Temporal Reasoning (TR):分为 concurrency 与 comparison,前者问“某人做 X 时其他人正在做什么”,后者问跨 agents 事件的相对顺序。
- Environmental Interaction (EI):追踪物品或环境状态如何被多个 agents 改变,例如谁最先/最后使用某个物品、使用频率如何。
3.2.3 生成与过滤 pipeline
Figure 4 解读:pipeline 先按 category 选择不同生成策略:SI/TC 先生成 single-span QA,再在 embedding space 里把语义相关样本聚类合成 multi-span QA;TR/EI 使用 template-based generation,因为它们常对应时间排序、并发对齐、物品使用计数等结构化目标。之后经过 LLM filtering、single-agent filtering、cross-model validation 和人工验证,去掉能靠常识、单一 agent 或错误选项侥幸通过的样本。
具体过滤阶段如下。Zero-context filtering 用 GPT-5 在没有上下文时尝试回答,若三次中超过两次答对,则认为问题可由常识或选项偏置推断并删除。Single-agent filtering 对问题/答案中出现的人名分别只给该人的 memory;若任一单人 memory 能答对,则删除,因为它不再是 multi-agent QA。Cross-model validation 用 Gemini-2.5-Flash 与 Claude-Sonnet-4 复查问题、正确答案和 distractors,降低 GPT-5 生成偏差。最后 4 名 human verifiers 在完整 captions、transcripts 和 videos 条件下审查 3,436 个候选,选出 1,741 个高质量样本。
3.3 EgoMAS: event-based shared memory
EgoMAS 的第一步是把每 10 分钟窗口内所有 agents 的 captions 交给 centralized manager。manager 不输出平铺摘要,而是抽取事件并记录 4W1H:When、What、Where、Who、How。这样做的直觉是:多人 egocentric memory 的原始 captions 很碎,直接拼接会让 LLM 在海量重复或无关细节里找 needle;event memory 则把跨 agent 看到的片段合并成“可检索事件”,既保留 who/where/when,又降低 token 规模。
Figure 5 解读:左侧是多个 agents 的 10-minute captions 被更新成 shared memory;中间 shared memory 以事件为单位组织;右侧回答时先从 shared memory 检索,再生成 agent-wise queries 去各自 memory 中取细节,最后把 global context 与 per-agent evidence 一起送给 response model。这个设计把“全局定位”和“局部证据补全”分开,避免一次性检索所有人的所有原始记忆。
论文公式与 released code 实现差异:论文把 shared memory 描述为显式 4W1H fields(When/What/Where/Who/How),但 released code 的 SHARED_MEMORY_PROMPT 要求 JSON item 包含 name、action、location、detail,时间由 construct_shared_memory.py 在外层保存为 day/start/end;也就是说 code 没有一个字段名直接叫 When 或 How,而是把 when 放在 metadata,把 how/detail 合并到 detail。
3.4 EgoMAS: agent-wise dynamic retrieval
给定问题 ,EgoMAS 先在 shared memory 中用 BM25 取 top-:
然后 responder 不是直接回答,而是由 planner 基于 和问题生成一组 agent-specific requests:
对每个 agent ,系统在该 agent 的 memory 中检索 top-:
再用阈值 过滤低分结果:
最终把 system-level context 和 agent-level evidence 聚合给 response function:
released code 中的关键默认值来自实际 inference files,而不是 README 或 base defaults:egomas/src/inference_egomas.py 设定 SHARED_MEMORY_TOP_K=20、MODEL_NAME="models/gemini-2.5-flash"、BM25_DATA_PATH="data/MA-EgoQA_bm25.json"、BM25_INDEX_PATH="data/30sec_bm25.pkl";egomas/src/retrieval_helpers.py 设定 DEFAULT_AGENT_MEMORY_TOP_K=5、DEFAULT_RETRIEVE_TOP_K=100、DEFAULT_RETRIEVE_TOP_K_FALLBACK=1000、DEFAULT_SCORE_THRESHOLD=10.0。论文还汇报了 Qwen3VL 等不同 backbone 的 EgoMAS 结果,但 released inference script 默认实现的是 Gemini-2.5-Flash 路径。
3.5 关键组件伪代码(基于 released code)
def construct_shared_memory_10m(cap_10m_dir, files, gemini_client):
tasks = []
for day in range(1, 8):
captions_by_time = load_all_10min_captions(cap_10m_dir, files, day)
for start, end in sliding_10min_windows(day):
context = collect_agent_captions(captions_by_time, start, end)
if context:
tasks.append((day, start, end, context))
memories = []
for day, start, end, context in tasks:
prompt = SHARED_MEMORY_PROMPT + "\n" + context
raw = gemini_client.generate_content(prompt)
memory = parse_json_or_keep_raw(raw)
memories.append({"day": day, "start": start, "end": end, "memory": memory})
return memoriesdef retrieve_for_person(retriever, name, query,
top_k=5, top_k_retrieve=100,
top_k_fallback=1000, score_threshold=10.0):
ids, captions, scores = retriever.retrieve(query, top_k=top_k_retrieve, return_scores=True)
rows = [
{"id": rid, "caption": cap, "score": score}
for rid, cap, score in zip(ids, captions, scores)
if name.upper() in rid
]
if len(rows) < top_k:
ids, captions, scores = retriever.retrieve(query, top_k=top_k_fallback, return_scores=True)
rows = [
{"id": rid, "caption": cap, "score": score}
for rid, cap, score in zip(ids, captions, scores)
if name.upper() in rid
]
return format_retrieved_context(rows, top_k=top_k, score_threshold=score_threshold)def answer_one_maegoqa_item(elem, client, shared_retriever, agent_retriever):
question_prompt = build_question_prompt(elem["question"], elem["options"])
shared_contexts = elem["bm25"][:20]
shared_text = get_context_text(shared_contexts)
planner_prompt = build_planner_prompt(shared_text, question_prompt)
planner_text = client.models.generate_content(
model="models/gemini-2.5-flash",
contents=planner_prompt,
config={"max_output_tokens": 20000},
)
selections = parse_planner_response(planner_text, fallback_question=elem["question"])
retrieved = []
for selection in selections:
retrieved.append(retrieve_for_person(
agent_retriever,
name=selection["name"],
query=selection["query"],
top_k=5,
top_k_retrieve=100,
top_k_fallback=1000,
score_threshold=10.0,
))
answer_prompt = build_answer_prompt(shared_text, retrieved, question_prompt)
pred = client.models.generate_content(model="models/gemini-2.5-flash", contents=answer_prompt)
return normalize_prediction(pred)Code reference:
main@67ae23cc(2026-03-11) — pseudocode and mapping based on this commit
| Paper Concept | Source File | Key Class/Function |
|---|---|---|
| Event-based shared memory | egomas/src/construct_shared_memory.py | _build_tasks, _call_api_one, generate_shared_memory_10m |
| Shared-memory prompt | egomas/utils/prompts.py | SHARED_MEMORY_PROMPT |
| Agent-wise planner | egomas/src/inference_egomas.py | run_planner, process_one_elem |
| Agent memory retrieval | egomas/src/retrieval_helpers.py | retrieve_for_person, retrieval defaults |
| BM25 index/retriever | egomas/src/index_bm25.py | BM25TextRetriever |
| Prompt assembly | egomas/utils/prompt_helpers.py | build_question_prompt, build_planner_prompt, build_answer_prompt |
| Prediction parsing/evaluation | egomas/utils/parsing.py, egomas/utils/eval.py | parse_planner_response, get_prediction_index, compute_accuracy |
4. Experimental Setup (实验设置)
4.1 Dataset and benchmark scale
实验数据来自 EgoLife:6 people、7 days、266 hours 的 shared-house egocentric videos。MA-EgoQA 最终包含 1,741 个多选 QA 样本,分为 SI、TC、ToM、TR、EI 五类;论文报告人工阶段由 4 名 verifiers 审查 3,436 个 candidates 后保留这些样本。SI/TC 还额外构造 multi-span samples,生成阶段分别产生 15.9k 个 SI multi-span candidates 和 16.3k 个 TC multi-span candidates,再经过过滤。
4.2 Baselines
论文比较 16 个 baselines 和 EgoMAS。All Caption Concat 包括 Gemini-2.5-Flash、Llama-3.1-Nemotron-8B、Qwen2.5-7B-Instruct-1M、GPT-5、Qwen3-30B-A3B-Instruct、gpt-oss-120b、gpt-oss-20b;All Frame Concat 包括 VideoChat-Flash、VideoXL-2、Qwen2.5-VL-7B;RAG baselines 包括 VideoRAG、EgoRAG、Ego-R1-Agent-3B、WorldMM-8B、BM25、DPR。EgoMAS 评估了 Gemini-2.5-Flash、Qwen3VL-8B-Thinking、Qwen3VL-8B-Instruct、Qwen2.5VL-7B-Instruct backbones,并给出 Oracle 上界。
4.3 Evaluation metrics and inference settings
主要指标是 multiple-choice accuracy,按 SI、TC、ToM、TR、EI 和 Avg. 汇报。效率分析还在 100 个随机 MA-EgoQA samples 上测 average latency。All Caption Concat 根据模型 context limit 使用 10-minute 或 1-hour captions:Gemini-2.5-Flash、Llama-3.1-Nemotron-8B、Qwen2.5-7B-Instruct-1M 用 10-minute windows,其他模型用 1-hour windows;超过最大 context 时截断 captions。All Frame Concat 为 VideoChat-Flash 采样 10k frames、VideoXL-2 采样 4k frames、Qwen2.5VL-7B 采样 1.9k frames。VideoRAG 使用 InternVideo2 multimodal encoder 为 30-second clips 和 captions 提 embedding,检索 5 个 clips,并从每个 clip 均匀采样 4 frames。
4.4 Training/config details
EgoMAS 是 training-free baseline,没有模型训练 steps、learning rate、batch size 或 GPU training 配置;论文未详细说明硬件。released code 的可复现实验配置集中在脚本常量中:construct_shared_memory.py 从 data/caption/10min 构造 shared memory;inference_egomas.py 默认 MODEL_NAME="models/gemini-2.5-flash",shared-memory top-,agent-memory top-,BM25 初检索 100 条、不足时 fallback 到 1000 条,score threshold 。multiprocess inference 采用 min(32, cpu_count()-1) workers;shared-memory construction 将 workers cap 到 8 以避免 API rate limits。
5. Experimental Results (实验结果)
5.1 Main benchmark results
| Model | Context | SI | TC | ToM | TR | EI | Avg. |
|---|---|---|---|---|---|---|---|
| Random | - | 20.00 | 20.00 | 20.00 | 20.00 | 20.00 | 20.00 |
| Gemini-2.5-Flash concat | 1M | 41.22 | 36.36 | 24.26 | 46.59 | 33.98 | 36.93 |
| GPT-5 concat | 272k | 36.17 | 33.88 | 22.55 | 39.71 | 38.72 | 34.81 |
| BM25 RAG | 8.1k | 44.68 | 37.60 | 30.21 | 33.45 | 30.64 | 36.01 |
| EgoMAS (Gemini-2.5-Flash) | 4.6k | 41.49 | 41.32 | 33.62 | 39.37 | 48.19 | 41.41 |
| EgoMAS (Qwen3VL-8B-Thinking) | 5.4k | 38.03 | 39.88 | 28.94 | 47.39 | 44.85 | 40.26 |
| EgoMAS (Qwen3VL-8B-Instruct) | 7.4k | 43.09 | 39.05 | 24.26 | 35.54 | 40.67 | 37.68 |
| EgoMAS (Qwen2.5VL-7B-Instruct) | 5.4k | 37.77 | 38.64 | 25.96 | 34.15 | 36.49 | 35.55 |
| Oracle (Gemini-2.5-Flash) | - | 86.44 | 97.60 | 70.21 | 88.15 | 81.34 | 83.80 |
最强 naive concat baseline 是 Gemini-2.5-Flash,Avg. 36.93;BM25 RAG 达到 36.01,说明 retrieval 比把所有 caption 暴力拼接更有效。EgoMAS (Gemini-2.5-Flash) 达到 41.41,比 Gemini concat 高 4.48 points,并且只用 4.6k input context。Oracle Gemini 达到 83.80,说明当前系统离“有正确 evidence 时能回答”的上界仍有约 42.4 points gap。
5.2 Benchmark difficulty analysis
Figure 7 解读:限制 EgoMAS 只能使用单个 agent memory 后,准确率明显下降,验证 MA-EgoQA 的问题确实需要 multi-agent memory,而不是普通 single-agent QA 的变体。这也解释了为什么 EgoLifeQA 上有效的单人 episodic memory 方法不能直接迁移。
Figure 8 解读:随着回答所需 agents 数量增加,性能持续下降,说明瓶颈不只是单条长视频检索,而是跨 agents 的 evidence fusion。论文还指出 ToM 是最难类别:多数模型在 ToM 上最低,因为它要求推理潜在 mental states,而不只是抽取可见行为或文本线索。
multi-span / multi-agent 是主要难点。Table 3 中,GPT-5 在 SI single-span 为 37.65,但 SI multi-span 降到 26.92;BM25 在 SI single-span 为 41.05,但 SI multi-span 只有 23.08;EgoMAS (Qwen3-VL-8B-Inst) 在 SI single-span 为 46.30,但 SI multi-span 也只有 23.08。这说明跨非连续时间窗口关联多个事件比单窗口定位更难。
5.3 EgoMAS efficiency and ablations
Figure 6 解读:非检索模型因为要处理长上下文或大量 frames,latency 明显更高;retrieval-based models 更快。论文特别强调 EgoMAS 在 100 个随机样本上只需约 1.3 seconds per query,同时准确率高于大多数 retrieval baselines,说明 shared-memory routing 并不只是提升准确率,也减少了推理负担。
| Shared Memory | Dynamic Retrieval | Accuracy |
|---|---|---|
| ✗ | ✗ | 27.80 |
| ✗ | ✓ | 28.20 |
| ✓ | ✗ | 30.04 |
| ✓ | ✓ | 35.55 |
两个组件同时使用时准确率最高。shared memory 单独使用从 27.80 提升到 30.04,说明全局事件抽象本身有帮助;dynamic retrieval 单独使用只有 28.20,说明如果没有 shared memory 的全局定位,按 agent 检索很容易散;两者结合达到 35.55,表明先全局定位再局部追问的分层结构是关键。
| Sub-module | Variant | Accuracy |
|---|---|---|
| Shared memory structure | Summary | 30.67 |
| Shared memory structure | Triplet | 30.44 |
| Shared memory structure | Chunk | 25.96 |
| Shared memory structure | Graph | 31.99 |
| Shared memory structure | Ours (4W1H) | 35.55 |
| Memory retriever | DPR | 28.67 |
| Memory retriever | Qwen3-Embed-0.6B | 33.03 |
| Memory retriever | NV-Embed-v2 7B | 37.91 |
| Memory retriever | Ours (BM25) | 35.55 |
4W1H memory 比 Summary、Triplet、Chunk、Graph 都高,说明显式事件结构适合跨人对齐。retriever 方面 NV-Embed-v2 7B 的准确率最高(37.91),但论文指出其 computational overhead 更高;BM25 以 35.55 保持竞争力,并在 released code 中作为默认检索器。
Figure S1 解读:shared memory retrieval size 在 20 到 60 左右较稳;太小会漏掉相关全局事件,太大又会把无关 memory 带回来。agent-wise top- 对性能相对不敏感,而过高阈值 会过滤掉大部分 retrieved data,导致回答缺证据。
5.4 Qualitative case and limitations
Figure 9 解读:case study 比较了 Gemini concat、WorldMM 和 EgoMAS。concat 模型拿到所有 caption 后被无关信息干扰;WorldMM 能检索 memory,但没有把 agents 的 fragmented memories 聚合成 shared memory,容易逐人迭代却错过全局事件关系;EgoMAS 先用 shared memory 找到目标事件,再用 agent-wise dynamic retrieval 补充 Jake、Alice、Tasha、Katrina 等人的细节,因此能选出正确答案。
作者承认两个主要限制。第一,MA-EgoQA 只基于 EgoLife,虽然 EgoLife 有 266 小时、6 人、7 天数据,但场景仍局限在 shared house,缺少更多环境与活动类型。第二,即使 EgoMAS 明显优于 baselines,它与 Oracle 仍有约 42.4 points gap,说明未来需要更强 retrieval、hybrid lexical+dense retrieval,以及更好的 multi-agent global state construction。整体结论是:MA-EgoQA 暴露了当前 LLM/VLM 在多 agent 长期 egocentric memory 上的短板,而 EgoMAS 证明 shared memory + selective retrieval 是一个有效但仍远未解决问题的起点。