Exemplar2VQA: A Scalable Exemplar-Driven Visual Question Answering Generation Framework via Multi-Agent Coding¶
会议: NeurIPS2026
arXiv: 2609.37655
代码: https://github.com/yingjiayu12/Exemplar2VQA
领域: 多模态 VLM
关键词: 空间视觉问答、样例驱动合成、多智能体编程、几何工具、仿真到现实迁移
一句话总结¶
Exemplar2VQA 将空间问答样例编译成可复用的仿真采图与几何标注程序,以四角色协作及执行反馈减少生成错误,仅用约 10K 合成样本便将 Qwen2.5-VL-3B 在 VSI-Bench 多项选择子集上的作者报告平均分从 35.3 提升至 42.9。
研究背景与动机¶
视觉语言模型(VLM)能识别物体,却不一定能稳定判断跨视角的位置关系、距离或遮挡。人工标注多视图空间问答需要反复核对同一物体及其几何关系,成本高;直接让 VLM 看图生成答案则把原本需要坐标变换与实例对应的问题,交给不可靠的语言预测。LLaVA、ShareGPT4V 式语义描述合成不能自然保证这类标签的几何一致性。
仿真环境提供明确的物体包围盒、相机位姿和场景元数据,使答案可以由程序计算,但传统固定规则又难以适应新的题型。用户若想从“判断物体左右关系”切换到“从另一个物体的视角判断方向”,不仅要改问题文字,还要更换坐标系、实例筛选和视点采集逻辑。把所有工作塞进一个提示,也会让任务解释、代码生成及调试相互干扰。
本文利用编程模型来生成题型级程序,而不是逐题猜答案;人工工程化的几何 API 承担数值计算,仿真与 Python 执行反馈帮助修复脚本。核心 idea:把一个具体空间问答样例转成可执行、可复用的采图和标注逻辑,再在不同仿真场景中实例化训练数据,将语言泛化与几何计算分开。
方法详解¶
整体框架¶
输入包含空间问答样例、相机采集要求以及可用的 3D 仿真环境,输出是图像或视频与问题、答案组成的训练样本。相机轨负责获取符合要求的观察及元数据;QA 轨读取这些元数据,生成并执行调用几何 API 的 Python 脚本。两轨都使用 Architect、Coder、Reviewer、Refiner 四个角色,但全部由同一个 Qwen3-Coder-30B-A3B-Instruct 实例化,差异来自系统提示、隔离上下文和工具权限,而不是四种不同模型。
下面区分离线标签生成、离线监督微调(SFT)及测试时推理。3D 元数据是合成标签时的特权信息,不是测试时 VLM 的输入;测试模型仍需从真实图像或视频和问题中预测答案。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
I["采图要求 + 仿真场景"] --> C["相机轨协作<br/>结构化意图到采图"]
C -->|执行反馈:Reviewer / Refiner| C
E["空间问答样例"] --> Q["QA 轨协作<br/>模板到标注程序"]
C -->|观察及 3D 元数据| Q
Q -->|执行反馈:Reviewer / Refiner| Q
Q --> G["几何 API 编排<br/>计算与歧义过滤"]
G --> R["脚本复用与分布控制<br/>批量实例化标签"]
R --> D["合成图像或视频 + QA"]
D -->|离线 SFT 监督| V["微调后的 VLM"]
T["测试图像或视频 + 问题<br/>不提供 3D 元数据"] -->|推理输入| V
V --> A["预测答案"]
图中的几何 API 编排是 QA 轨生成程序内部的计算环节,并非第三条独立智能体轨。反馈回路允许重试和修补,但不是成功保证:四角色配置的 QA 与相机任务成功率仍分别只有 92.0% 和 84.0%。
关键设计¶
1. 相机轨协作:先明确视点意图,再执行可检查的采图程序
相机要求不能只被理解为一句“绕物体转一圈”。CameraArchitect 将自然语言要求整理成结构化 JSON,明确目标物体筛选条件、轨迹类型、角度及可见像素等约束。针对不同大小的物体,围绕物体的相机半径由固定余量加上包围盒最大尺寸的一半确定,避免同一个固定半径对床和小物体都不合适;不针对特定实例的任务则跳过这项调整。
这里 \(D_o\) 是目标物体包围盒的长、宽、高,\(r_{\mathrm{base}}\) 是预设余量。CameraCoder 把 JSON 意图转成 Python,计算相机位姿并调用 AI2-THOR 获取多视图观察。因而 Architect 输出的是结构化位姿意图,不是已经经过仿真验证的完整轨迹,也不是直接返回训练图像。
CameraReviewer 根据执行记录、报错和约束冲突定位问题,CameraRefiner 再修改导航代码。例如碰撞、视野被墙遮住或越界渲染,需要通过环境反馈发现,而非仅靠阅读程序语法。将诊断与修补分开,使修补角色收到聚焦的错误描述,避免同时改写任务解释和几何实现;但可执行轨迹仍可能不符合原始观察意图。
2. QA 轨协作:把一个问题样例还原成跨场景可实例化的逻辑
QA Architect 接收具体样例,把其中的物体名称、数量条件和图像标识等替换为参数,提取问题格式及所需比较关系。例如“从某物体视角判断另一物体的方位”不能只替换名词,还必须保留参考视角和目标实例之间的关系。得到的模板是生成程序的规格,而不是让语言模型随意扩写相似问题。
QA Coder 基于该规格和已捕获的场景元数据编写 Python,筛选满足条件的物体组合、调用几何函数、填入问题和答案。QA Reviewer 与 QA Refiner 在 Python 执行环境中处理语法错误、类型不匹配、API 使用错误及逻辑缺陷。通过检查后的脚本再遍历场景中的候选组合,生成许多具体 QA,而不是为每个 QA 都调用一次 LLM。
两轨的依赖边界很重要:相机轨对 AI2-THOR 中的观察和物理约束负责,QA 轨对这些观察所对应的元数据及问题逻辑负责。单纯“没有抛异常”不是合格标签;作者将生成成功定义为最终结果在数学及语义上都正确,附录也明确记录了正常执行却生成错误答案的失败模式。
3. 几何 API 编排:把坐标计算移出语言预测,并筛掉不明确关系
API 库由人工设计,包含将 3D 物体信息投影到 XZ 平面、计算平面角度、判定方向关系、计算投影距离及类别间 3D 包围盒距离等函数。QA Coder 的职责是按任务需求安排调用依赖。例如判断物体中心视角下的方向,先用 get_object_xz_points 得到平面投影,再用 is_spatial_relation_satisfied 判断关系;不能用流畅的语言解释代替这条计算链。
质量控制还包括 is_angle_ambiguous 一类启发式过滤,将靠近方向边界的布局排除,减少“左还是前”这类标签不稳定样本。原文 API 示例给出角度歧义阈值 10、方向关系参数 th=0.15,但未在该示例中完整解释后者的单位与全套实现,因此不将其扩写为精确的几何判定公式。
“确定性”成立于代码、元数据和 API 实现正确的条件下:同样的几何输入交给固定程序,可以得到明确计算结果。LLM 的语义解析、工具选择及代码编写本身并不因此成为确定性过程。论文有“完全消除幻觉”等强表述,但剩余错误和生成成功率表明,更准确的结论是减少对隐式空间猜测的依赖,而非保证所有标签无误。
4. 脚本复用与分布控制:把生成成本从逐题调用转到题型级编译
一个新空间任务需要先承担双轨规划、代码生成和调试开销;脚本可用后,换场景、换物体组合和填充模板主要由程序执行完成。作者在两张 RTX A6000 上报告相机轨代码合成平均约 3 分钟、QA 轨约 2 分钟。这些时间不是生成整个数据集的总耗时,也不包括后续所有场景的渲染和实例化。
附录 A.6 将后续成本单独列出:相机执行、渲染并保存观察约 15 秒/场景,100 个场景的 QA 实例化总计约 25 秒。多物体问题可能使用最高至 \(\mathcal{O}(M^4)\) 的穷举,其中 \(M\) 是物体数;作者以每室可观察物体通常 \(M\approx20\) 解释当前规模下的可行性,不能据此断言物体数增加时依然廉价。
生成候选池后,可按题型进行定向随机采样,近似维持均衡比例或配置特定比例。ProcTHOR 与 Holodeck 被提出用于扩展房间数量和布局,但正文验证的训练规模仍是约 6K/10K;“无限生成”是关于程序可复用性的设想,不是已经验证了无限的独立场景、语义覆盖或标签质量。
一个完整示例¶
以下是依据方法构造的流程示意,不是论文报告的具体样本或实测轨迹。用户给一个“从物体 A 的视角看,物体 B 在哪个方向”的多项选择样例,并要求绕目标物体采集观察;相机 Architect 先确定目标筛选、围绕轨迹和可见性条件,Coder 再生成 AI2-THOR 脚本。
若一次观察被墙面遮住,Reviewer 分析该视点为何不符合要求,Refiner 修补相机代码后重新执行。采图成功后,QA Architect 将 A、B 及图像标识抽象为参数,QA Coder 遍历具有有效元数据的实例组合,先投影到 XZ 平面,再按参考方向调用关系 API。
如果计算结果落在歧义角度附近,这个候选被过滤;否则程序填入物体名、选项与计算得到的答案。该样本进入离线训练集;测试时的 VLM 只收到观察与问题,不会再次调用这些场景元数据来替自己求答案。静态场景中的相机绕行可产生视频输入,但这不等于生成了物体连续运动或动态追踪的监督。
损失函数 / 训练策略¶
本文没有提出新的 VLM 架构或专用损失,核心贡献是数据生成。约 6K MMSI 格式样本用于 Qwen2.5-VL-7B 的 LoRA 和 full SFT 对照;约 10K VSI 格式样本用于 Qwen2.5-VL-3B 的 full SFT。前者是多图输入,后者把多视图观察组织为连续旋转视频;题型和输出格式参照目标基准,因此不能将全部主实验描述为“未见题型”测试。
附录 A.1 的 3B full SFT 为 3 个 epoch、学习率 1e-5,每卡 batch 4、梯度累积 2;7B LoRA 为 3 个 epoch、学习率 1e-4、rank 16、alpha 32,每卡 batch 2、梯度累积 4。两者在四张 H200 上的有效 batch 都为 32,均采用 cosine 调度、warmup ratio 0.05、weight decay 0.01、DeepSpeed ZeRO-2 与 NEFTune noise alpha 5;7B 最大图像像素数为 1,003,520。附录没有同等详细列出 7B full SFT 的专属超参,不能直接把 LoRA 学习率套给它。
SpaCE-10、ViewSpatial-Bench 和 Spatial-Obj 的零样本迁移使用仅在 MMSI 合成数据上微调的 7B 模型。OSR-Bench 则另生成约 6K 对齐其样例的样本并训练 7B LoRA,属于另一组适配实验,不能混称为前述模型对所有基准的零样本泛化。训练前还人工抽查了部分 QA;人工 API 工程、提供样例与抽查均不应被“无需逐题人工标注”掩盖。
输出格式有一处内部不一致:附录文字称 MMSI 只输出答案字母,但训练和评测模板实际上展示 <answer>A. Above</answer>,包含字母及文本。这里保留这项冲突,不擅自改成作者已经实现了其中某一种协议。
实验关键数据¶
主实验¶
下表按正文 Tables 1–4 记录分数,提升为相对同规模基座的绝对百分点。VSI 的 42.9 仅对应四项多项选择任务,不是完整 VSI-Bench 分数;表内 Avg./Overall 沿用作者聚合值,不自行用展示的子项重算。
| 数据集与范围 | 训练及评测配置 | 基座 | 本文 | 提升 |
|---|---|---|---|---|
| MMSI-Bench Overall | 约 6K;7B LoRA | 25.9 | 28.2 | +2.3 |
| MMSI-Bench Overall | 同约 6K;7B full SFT | 25.9 | 28.0 | +2.1 |
| VSI-Bench 多项选择 Avg. | 约 10K;3B full SFT | 35.3 | 42.9 | +7.6 |
| SpaCE-10 Overall | MMSI 合成数据微调的 7B;零样本 | 33.3 | 42.2 | +8.9 |
| ViewSpatial-Bench Overall | MMSI 合成数据微调的 7B;零样本 | 36.9 | 45.4 | +8.5 |
MMSI 中 LoRA 的 Cam.-Cam. 从 24.7 到 33.3,改善 +8.6 点;但未直接合成监督的动态 Obj. 从 39.5 降到 25.0。另一未覆盖的语义投影 Appr. 从 18.2 到 27.3,不能把这一改善解释成生成器已经支持该语义任务。VSI 未直接训练的 Route Plan* 从 28.9 到 35.1,属于静态几何监督后的零样本子任务迁移。
附录 A.3 的边界也值得保留:OSR 专门适配后 Avg. 从 28.3 到 36.5,训练用四张稀疏环视图、测试用全景;Spatial-Obj 严格零样本 Overall 仅从 69.71 到 70.50。另在相同合成数据上微调 InternVL2,2B 的 VSI Avg. 从 28.2 到 35.6,8B 从 36.7 到 46.1,支持数据对其他骨干也有价值,但不是所有任务都获得同幅度提升。
消融实验¶
Table 5 每种设置评估 100 个种子样例,成功指最终输出满足数学和语义要求。合并角色共享上下文,分离角色各有独立上下文;主拓扑比较使用 Qwen3-Coder-30B 生成器。
| 配置 | QA 生成成功率 (%) | 相机轨迹成功率 (%) |
|---|---|---|
| 1 个智能体:全部角色合并 | 34.0 | 60.0 |
| 2 个智能体:Architect;Coder+Reviewer+Refiner | 72.0 | 74.0 |
| 3 个智能体:Architect;Coder;Reviewer+Refiner | 85.0 | 80.0 |
| 4 个智能体:四角色分离 | 92.0 | 84.0 |
| 4 个智能体:改用 Qwen3.5-9B | 48.0 | 56.0 |
隔离规划阶段使 QA 成功率先增加 38.0 点,完整四角色相对单体增加 58.0 点;相机轨相应总增幅为 24.0 点。小模型对照同时改变模型规模与家族/编程专长,说明更换生成器会影响可靠性,却不能单独识别“参数量”这一因果因素。
Table 6 将作者称为 Gemini3.5-Flash 的模型用于直接标注 10K 合成 VSI 多项选择训练样本,再用同样配置微调同一 3B 基座。该名称按原文保留,未独立核实其具体模型版本。
| 标注/训练配置 | Rel. Dist | Rel. Dir | Route Plan | Appr. Order | Avg. |
|---|---|---|---|---|---|
| Qwen2.5-VL-3B 基座 | 34.7 | 42.6 | 28.9 | 35.0 | 35.3 |
| 直接 LLM 标注后微调 | 31.7 | 40.4 | 34.5 | 6.3 | 28.2 |
| Exemplar2VQA 程序标注后微调 | 43.8 | 52.1 | 35.1 | 40.5 | 42.9 |
关键发现¶
- 直接标注的 Avg. 比基座低 7.1 点,程序标注比直接标注高 14.7 点;尤其 Appr. Order 的 6.3 表明增加合成标签数量并不自动提高监督质量。
- 附录 A.5 的百分比是失败样本内部的构成:QA 的“缺少预期 QA”占比 47.0%→37.5%,执行失败占比 30.3%→25.0%;相机剩余失败中语义不匹配占 62.5%。它们不是全部 100 个种子的错误率。
- SpaCE-10 的 Scene Quant. 从 36.9 降到 24.2,说明实例包围盒监督未必帮助抽象功能区划分;跨域总体改善不代表每种空间语义都改善。
- 附录 Table A4 报告 MMSI 三个训练随机种子的 Overall 为 \(29.33\pm0.99\),但 checklist 第 7 项称未做多随机种子实验。两处直接冲突,且 A4 与主表 28.2/28.0 的配置对应不够明确,不能合并成同一统计结果。
- 附录 Table A5 另报告 VSI 四个数值任务 Avg. 22.5→37.4,但正文强调主比较只覆盖多项选择,且该扩展表缺少同等详细的专属训练说明;不将其与 42.9 拼成全基准结论。
亮点与洞察¶
- 样例不只约束语言风格,还约束参照系、实例筛选及视点条件。将这些内容编译为程序,使题型改变可以复用几何底座,而非为每题支付模型推理成本。
- 角色隔离与几何工具分别解决上下文干扰和数值计算不可靠。只增加智能体而没有可信计算工具,仍可能重复产生空间错误;只给工具而不明确语义,也会运行出错误问题。
- 一个可迁移方向是面向薄弱空间关系生成针对性数据并控制比例。但课程学习和任意分布控制在附录主要作为机制与展望提出,不能当作已经完成的课程学习消融。
局限与展望¶
- 当前生成器面向静态、物体中心的几何配置,不覆盖连续物体运动、复杂时间语义或语义形状投影。相机视频输入和 Route Plan* 的迁移改善均不能替代动态监督覆盖。
- 合成标签依赖准确的仿真元数据及人工 API;若要直接从真实照片合成标签,需要上游重建或感知模型,其误差会重新进入标注链条。代码正常执行也不能排除模板理解错误。
- 92.0%/84.0% 成功率与剩余语义错误限制了自动生成可靠性。可进一步加入题型级语义测试、几何一致性断言及更系统的人工审计,但本文未报告这些改进的量化结果。
- 房间数量、物体类别和布局多样性限制有效数据规模;穷举组合的复杂度也限制大场景吞吐。“无限数据”与“零人工劳动”都超出了现有实验支持。
- 泛化证据是选定空间 VQA 基准上的结果,不是机器人导航、操控或物理部署成功率。统计口径、提示协议及正文/附录冲突也需要后续复现实验澄清。
相关工作与启发¶
- vs CLEVR 式固定规则合成:本文用样例引导生成新的任务程序,提高题型扩展灵活性;代价是代码与语义正确性变成需要审查的环节,而非天然由固定模板保证。
- vs LLaVA / ShareGPT4V 式模型标注:这些工作提供多模态合成监督思路,本文把空间答案交给元数据上的几何程序。优势取决于可信场景信息,不能直接推广成任意真实图像的可靠标注器。
- vs ViperGPT / PAL:共享“模型组织程序、程序承担计算”的思想,但这里主要在离线阶段生成训练标签;下游 VLM 测试时不需要程序推理或特权 3D 元数据。
- vs Code as Policies / Voyager:都利用环境反馈改善代码,但本文最终目标是静态空间问答训练数据,不是学习真实机器人控制策略。因此更适合多模态 VLM 分类,而非机器人控制分类。
评分¶
- 新颖性: 4/5 — 将样例规格、双轨四角色与几何 API 结合成可复用的数据生成器。
- 实验充分度: 3/5 — 有多基准、拓扑及直接标注对照,但统计与扩展训练说明存在缺口。
- 写作质量: 3/5 — 主机制清楚,表号引用、输出协议及随机种子声明存在内部不一致。
- 价值: 4/5 — 提供可复用的空间监督生产思路,价值取决于元数据可信度及语义审查质量。