想象你是一所特殊学校的命题老师。这所学校只收一种学生——AI 模型,考试内容只有一门:视觉推理。你用真实世界照片当考卷时发现一个麻烦:背景太乱、光线太杂,学生究竟是“看懂了”还是“蒙对了”根本分不清。于是你干脆自己搭了一间“积木玩具房”:桌上摆着红方块、蓝球、绿圆柱,每种物体的颜色、大小、材质、位置都由你说了算。考题也由你精心设计——数一数有几个绿色方块;最大的物体是什么;蓝球右边的物体又是什么。每道题都附上标准解题步骤。考完不公布总分,只出一份“分题型体检报告”:哪类题错得多,AI 的推理短板就暴露在哪。这座积木考场,就是多模态推理领域大名鼎鼎的诊断基准——CLEVR。
对 AI 从业者来说,学会读懂 CLEVR,就等于拿到一套给多模态模型做“能力体检”的标准模板:它教你用控制变量、程序化标注与分层报告,精确定位模型的推理短板,为改进提供可执行的方向。
目录
可视化演示
展示CLEVR视觉推理评测:图像与问题到答案的推理流程、属性/比较/关系问题类型、诊断模型推理能力短板,通过交互理解诊断性视觉推理基准。
本节配有交互动效(进入视口后自动加载,约 3KB)。
视觉推理:图像+问题→答案 合成图像含几何物体 依据问题推理作答 Img+Q→Ans 评估空间与逻辑推理
CLEVR设计理念:一场“只考能力、不考运气”的诊断考试
以往的真实世界视觉问答考试,就像一份语文数学合卷,最后只给一个总分。翻开真实照片的卷子,背景里有人有猫有树,光看问句里的高频词搭配,学生甚至不用看图就能蒙对一半——这种“运气分”让老师没法判断学生到底懂不懂。命题老师想要一场纯净的考试:环境完全受控、每题单独计分、答案有标准推导。
于是 Johnson 等人在 2017 年提出 CLEVR(Compositional Language and Elementary Visual Reasoning,组合式语言与基础视觉推理)。它用 Blender 三维渲染引擎“搭积木”,合成出成千上万张场景图。因为图像是程序生成的,考场上的每一个变量——物体有几个、摆在哪、什么颜色——都由命题老师说了算。这种控制变量思想,是 CLEVR 一切设计的基石。
CLEVR 的定位不是训练集,而是诊断型评测基准。它把“视觉推理”这个大学科拆成若干子题型分别计分,模型在哪类题上失分,哪里就是短板。这正好击中传统 VQA 的两大痛点:其一,自然图像混入大量无关视觉信息,难以归因;其二,真实问答语料存在语言先验(language prior),模型不“看图”,仅凭问句的统计偏差就能猜出答案。合成场景把这两类噪声都清除了,让“每一分都有据可查”成为可能。
就像体检报告把“视力、听力、心肺”分开打分,CLEVR 用分类别准确率取代一个总分——学生哪一科弱,老师一眼就能看到,后续“补课”也有了方向。
- 类别下标 c先把问题按推理类型分组,下标 c 指其中某一类(属性查询、计数、比较、空间关系)
- 逐题判对对第 c 类中的第 i 题,比较模型输出 $\hat{y}_i$ 与标准答案 $y_i$,一致记 1、不一致记 0
- 求平均得分类成绩把判对结果求和后除以该类总题数 $N_c$,就得到该类准确率
物体属性系统:考卷上的“标准积木”
好的考卷不会出现超纲词汇。命题老师把积木限定为 3 种形状、8 种颜色、2 种材质、2 种大小——词汇表固定,每个学生才可能被公平考查。如果桌上忽然冒出一只猫,学生答错就分不清是“不认识猫”还是“不会推理”了。
在 CLEVR 中,每个物体由四类属性精确刻画:形状(正方体、球体、圆柱体)、颜色(灰、红、蓝、绿、棕、紫、青色、黄色共 8 种)、材质(金属、橡胶)、大小(大、小)。此外每个物体都有精确的三维坐标,空间位置也是受控属性。整张图像就是一份完整标注的场景图(scene graph),模型看到的一切“考题素材”都在考纲内。
这套属性系统带来两个好处。一是控制变量,真实世界里的狗、猫、树、人等杂乱概念全部排除,评测目标始终聚焦“空间推理与逻辑组合”。二是组合复杂度可控且透明:每个积木都能明确归入 96 种类型之一,模型认不出哪种,报告里一目了然——就像体检单上“色盲测试”一栏直接亮红灯。
考纲越透明,偏科判定越精准——若模型连“金属大正方体”都认不出,说明最基础的属性识别这关就没过,后面的组合推理更无从谈起。
- 因子列出先把四个属性的可选个数分别写出来,它们是乘法公式中的四个因子
- 逐项相乘从左到右依次相乘,3 种形状乘 2 种大小得 6,再乘 2 种材质得 12,最后乘 8 种颜色
- 结果解读$N_{\text{type}}=96$ 表示场景中任意一个积木都能归入 96 种类型之一,考纲完全透明
问题类型体系:覆盖四种“推理肌肉”
一份好的诊断卷子不会只出一种题型。命题老师设计了四大类问题,每一类都像一块独立的“推理肌肉”:属性查询练“认物”,计数存在练“扫描”,比较练“量级判断”,空间关系练“方位感”。四块肌肉分别打分,才能看出 AI 是“偏科”还是“全才”。
CLEVR 的问题由模板化引擎批量生成,全部属于四个大类:属性查询(蓝色球是什么颜色?)、计数与存在(图中有几个绿色方块?有没有大的金属球?)、比较推理(左边的球比右边的大吗?),以及空间关系(蓝色球左边的物体是什么?)。每类问题还可以层层嵌套成多跳问句,比如“红色正方体左边的蓝色金属球右边的大正方体是什么颜色”,需要先定位、再过滤、再查询。
问题类型的设计体现了两个原则。一是均衡性:模板与实例数量在不同类型间大致平衡,防止模型靠“多数类”蒙混过关——就像考试不能全是选择题。二是组合性:语言模板刻意使用相近句式,让“换了问法就不会答”的模型暴露语言先验。模型如果只记住了句子结构而没有真正看懂图,换个表达方式准确率就会骤降。
四种题型就像四块不同的“推理肌肉”,CLEVR 把它们分开练、分开考。模型在哪种题上失分,就等于告诉老师哪块肌肉需要加练。
- 计数分支$t=\text{count}$ 时,答案是对场景 $S$ 中满足条件 $\phi$ 的物体做集合计数,$|\{\}|$ 表示集合大小
- 存在分支$t=\text{exist}$ 时,答案退化为布尔值,只回答“有没有”
- 查询分支$t=\text{query}$ 时,先找到唯一目标 $o^{\ast}$,再取出它的某个属性值
- 关系分支$t=\text{relate}$ 时,返回以 $b$ 为参照物、满足 left\_of 关系的物体集合,可被后续模块继续消费
程序化标注:每道题都附“标准解题步骤”
好考卷不光给标准答案,还附解题步骤。CLEVR 的命题老师在出题时就写好了每一步推理:先过滤出蓝色球,再找它左边的物体,最后数一数有几个。学生就算蒙对了答案,老师也能拿步骤对照,看它是真懂还是瞎猜。
这一设计对应 CLEVR 最核心的机制——功能程序(Functional Program)。每个问题都对应一串模块化函数,比如 filter(shape=sphere) → filter(color=blue) → relate(left) → count。程序在场景图上逐步执行,最终输出标准答案。与自然语言问句不同,程序没有歧义:每一步操作、每个参数都严格定义,因此它是“可解释的推理路径”。
具体生成流程是“先推理、后造句”:先从约 60 种函数原语(scene、filter、unique、count、exist、query、relate、and/or 等)组合出程序模板,再把程序反写为一句自然语言问题。这样保证了问题文本与标准答案严格对齐,也能自动化批量生成海量样本——这正是 CLEVR 能产出超过 100 万道题的秘密。
就像考试附带答题步骤一样,程序的每一环都有据可查。模型若在某个模块上出错,错误可以被精确锁定到“哪一步”,而不是笼统的一句“答错了”。
- 输入场景图$S$ 是完整的场景图,包含每个物体的属性与三维坐标
- 函数组合 $\circ$程序是函数的复合,从右往左执行,前一个函数的输出喂给后一个
- 模块化原语每个 $f_k$ 是一次原子推理(过滤、计数、查询、关系定位),它们像积木一样拼出复杂推理
空间推理测试:考“方位感”的试金石
空间关系题就像考卷里的“左右手”题:蓝球右边是什么?这类题最容易让模型犯迷糊,因为答题必须分两步走——先锁定参照物,再按方位去搜索场景,任何一步出错都会跑偏。而在真实照片里,物体互相遮挡、角度倾斜,“左右”的判定更是难上加难。
CLEVR 把空间推理放进了完全受控的坐标系。每个物体有精确的三维坐标,left/right/front/behind 等关系由坐标大小严格定义,不依赖任何模糊的视觉线索。更重要的是,空间关系经常与其他能力叠加成多跳问题,比如“红色正方体左边的蓝色金属球右边的大正方体是什么颜色”——这是一条需要连续定位的关系链,考验模型的组合泛化能力(compositional generalization)。
此外,空间条件还常与逻辑操作融合:问句可能要求“在……左边 且 是金属的 或 蓝色的”。模型必须把集合操作(filter、intersect、union)组合起来,才能得到正确答案。这比单纯“看图识物”难了一个量级,也是模型注意力机制最容易失效的地方——注意力若没有精准绑定参照物,很容易漂移到无关物体上。
方位题看似简单,却是检验机器是否真正“看懂空间”的试金石。能在积木考场里稳定做对关系链的模型,才有资格谈真实世界的空间理解。
- 锁定参照物 $b$先明确“以谁为参照”,通常由唯一化操作确定唯一目标
- 坐标判定条件对场景中每个物体 $a$,检查它的 $x$ 坐标是否小于 $x_b$,同时 $y$ 坐标足够接近,排除“斜对角”的误判
- 输出物体集合满足条件的物体构成答案集合,可继续被计数、查询等模块消费
模型诊断报告:读出体检单上的“偏科清单”
考试结束,最重要的不是总分,而是那份“偏科清单”。CLEVR 的官方评测会按问题类型、甚至按问题模板输出准确率表,像体检报告一样把每一项标红或标绿。研究者拿到手的不是一句“你 70 分”,而是“属性查询 92%,计数 85%,比较 70%,空间关系 40%”。
诊断报告的第一层看分层准确率(per-type accuracy),第二层做失败模式分析(error analysis):错误集中在哪些模板?是视觉识别错(看错颜色)还是推理错(关系链断裂)?CLEVR 论文还提供人类表现作为参考上限,让模型分数有了“对标系”。一个值得警惕的信号是:如果模型换一种问法准确率就骤降,说明它依赖语言先验而不是真正的场景推理——这属于典型的表面拟合。
有了分层报告,模型的改进方向就清晰了。空间关系差就补充关系类样本、调整注意力机制;比较推理差就强化数量感知模块。评测不再是“好坏”的定性判词,而是“哪里弱、补哪里”的施工图。这也是 CLEVR 作为多模态模型评测工具最被看重的价值:它让能力诊断变得可操作、可追踪。
体检报告的意义从来不是“你得了几分”,而是“哪项指标亮了红灯”。CLEVR 的分层报告正是这样一盏探照灯,照出模型在无数指标中真正需要补课的那一格。
- 找最强项先取出该模型在所有题型上的最高准确率,代表它“最擅长”的能力水平
- 与最强项做差用最高分减去第 $c$ 类的分数,得到能力落差
- 短板宣言$\text{gap}_c$ 越大,说明该类题型与最强项差距越悬殊,改进优先级越高
影响与局限:积木考场的边界
积木考场虽好,毕竟只是“玩具房”。学生在玩具房考满分,不代表他走进真实厨房也能正确完成“把锅放在灶台上”的空间推理——这就是合成数据逃不开的边界。命题老师很清楚:玩具房是体检仪器,不是真实生活。
CLEVR 的影响深远。它让“程序化标注 + 控制场景 + 分层报告”成为多模态评测的标准配方,催生了 GQA、CLEVR-Hyp、CLEVR-Ref+ 等一系列后续基准,也让合成数据从“训练资源”升级为“诊断工具”。在多模态模型评测体系中,CLEVR 成了视觉-语言推理能力的一把标准尺,几乎所有主流视觉语言模型都会在它上面“过一遍”。
但局限同样明显。其一,合成场景与真实图像存在域差距(domain gap),模型在 CLEVR 上高分,不代表在真实场景中同样可靠;其二,问题由模板生成,语言多样性不足,模型可能学到的是“模板与答案的对应关系”,而非真正的组合推理能力;其三,它评估的是受限世界内的推理,不覆盖开放世界的常识与知识。后续研究一直在尝试把合成的可控性与真实场景的丰富性折中起来,比如用真实图像搭配程序化问答。
玩具房里的体检依然是最靠谱的能力扫描仪,但别忘了那句忠告:考试满分不等于生活全能。CLEVR 的价值在于“照亮短板”,至于短板补完之后能否迁移到真实世界,还需要更多真实数据的检验。
- 合成分布的期望在 CLEVR 合成测试集上计算模型平均损失,可近似为样本平均
- 真实分布的期望把同一模型放到真实场景分布下计算平均损失
- 做差解读$\Delta_{\text{oos}} > 0$ 说明真实场景表现更差,存在明显的域差距
AI 应用场景
场景一:多模态大模型上线前的“偏科体检”
阶段:模型评测与回归测试
解决的问题:团队微调完一个视觉语言大模型,传统做法只看整体准确率——92%,看起来不错,但用户反馈总说“数不清物品”“分不清左右”。整体分数掩盖了空间推理短板。用 CLEVR 的分层报告,可以精确到“空间关系类准确率仅 35%,属性查询类 92%”,短板无所遁形。
具体案例:某多模态团队在发布新版模型前,用 CLEVR 测试集跑了 5000 道题,报告显示 relate 类问题正确率骤降到 31%,而 query 类高达 90%。进一步失败分析发现,模型对“参照物定位”不稳,往往把参照物右侧的物体也算进左侧。团队针对性补充了 20 万张带左右关系的合成场景训练数据,并将该题型加入每轮回归测试。
场景二:合成数据驱动的组合泛化训练
阶段:数据工程与预训练
解决的问题:自然图像无法穷尽所有属性与关系的组合,模型对没见过的组合方式容易“失灵”。CLEVR 开创的合成渲染思路,可以无限生成受控场景与程序化标注,专门用于强化组合泛化能力。
具体案例:某自动驾驶视觉团队自建了一套基于 Blender 的“积木渲染器”,批量生成 100 万张包含不同颜色、形状、相对位置的程序化场景图,先用这批数据做预训练,再在真实街景数据上微调。结果显示,模型对“信号灯在左转箭头右侧”这类组合问题的准确率提升了 12%。
场景三:评测流水线上的“自动体检机器人”
阶段:CI/CD 与模型发布管理
解决的问题:模型频繁迭代,人工评测成本高且口径不一。把 CLEVR 评测接入自动化流水线,每次代码提交后自动跑一遍“分层体检”,让能力波动在发布前就被发现。
具体案例:某公司的 MLOps 平台集成了 CLEVR 评测任务,每晚自动在测试集上运行 1000 道题,生成按题型分层的准确率趋势图。某次更新后,计数类问题准确率从 82% 掉到 74%,趋势图立刻标红,团队定位到是注意力模块改动影响了数量感知,随即回滚。
Python 演示
# -*- coding: utf-8 -*-"""迷你CLEVR评测: 用功能程序答题, 输出分层诊断报告""" # 1. 积木场景: 每个物体带形状/颜色/大小/x坐标scene = [ {"shape": "cube", "color": "red", "size": "big", "x": 1.0}, {"shape": "sphere", "color": "blue", "size": "big", "x": 3.0}, {"shape": "cube", "color": "green", "size": "small", "x": 4.0}, {"shape": "cylinder", "color": "red", "size": "small", "x": 2.0}, {"shape": "sphere", "color": "green", "size": "big", "x": 5.0}, {"shape": "cube", "color": "blue", "size": "small", "x": 3.5},] # 2. 功能程序原语: 类似CLEVR的模块化函数def filter_attr(objs, attr, value): return [o for o in objs if o[attr] == value] def count(objs): return len(objs) def query(objs, attr): return objs[0][attr] if objs else None def exist(objs): return len(objs) > 0 def relate_left(objs, attr, value): target = filter_attr(objs, attr, value) if not target: return [] t = target[0] return [o for o in objs if o["x"] < t["x"]] # 3. 题目集: 每道题由题型名 + 功能程序组成questions = [ ("count", lambda s: count(filter_attr(s, "shape", "cube"))), ("count", lambda s: count(filter_attr(s, "size", "big"))), ("query", lambda s: query(filter_attr(s, "shape", "sphere"), "color")), ("query", lambda s: query(filter_attr(s, "shape", "cylinder"), "color")), ("exist", lambda s: exist(filter_attr(s, "color", "green"))), ("exist", lambda s: exist(filter_attr(s, "color", "yellow"))), ("relate", lambda s: relate_left(s, "color", "blue")), ("relate", lambda s: relate_left(s, "shape", "cube")),] # 4. 待测模型: 空间关系类题目永远答错, 其余照抄参考答案def mock_model(qtype, gold): if qtype == "relate": return None return gold # 5. 执行评测, 按题型分层统计report = {}for qtype, program in questions: gold = program(scene) pred = mock_model(qtype, gold) hit = int(pred == gold) item = report.setdefault(qtype, {"hit": 0, "total": 0}) item["hit"] += hit item["total"] += 1 print("=== 分层诊断报告 ===")for qtype, item in sorted(report.items()): acc = item["hit"] / item["total"] print("%-6s 准确率: %d/%d = %.0f%%" % (qtype, item["hit"], item["total"], acc * 100)) weak = min(report, key=lambda k: report[k]["hit"] / report[k]["total"])print("短板定位: %s 类问题最弱, 需要重点提升" % weak)
scene = [...]用字典列表搭建“积木考场”,每个物体带属性与坐标,对应 CLEVR 的受控场景图def filter_attr(objs, attr, value)功能程序原语,类似 CLEVR 的 filter 模块,按属性过滤物体def relate_left(objs, attr, value)空间关系模块:用 x 坐标判断“在参照物左边”,对应 left_of 的坐标判定questions = [...("relate", lambda s: relate_left(s, "color", "blue"))...]把题型名与功能程序绑定,模拟 CLEVR 的问题模板机制def mock_model(qtype, gold)模拟一个“空间关系偏科”的模型,其余题型照抄标准答案item = report.setdefault(qtype, {"hit": 0, "total": 0})按题型分层累计答对次数,生成诊断报告的原始数据weak = min(report, key=lambda k: ...)自动找出准确率最低的题型,对应 CLEVR 的短板定位
常见误区
误区CLEVR 看起来就是一堆图片和问题,那我把它当训练集,让模型多学几遍,能力自然就上去了。
正解CLEVR 的原始定位是“诊断考卷”而不是“课本”。它的价值在于评测和定位短板:先在其他数据上训练模型,再在 CLEVR 上做分层体检。虽然确实有研究用 CLEVR 训练样本来预训练,但这属于二次利用,不是它的设计初衷。把考卷当课本反复刷,刷出来的分数含金量也要打个问号。
为何常见:大众习惯把“数据集”一律理解为“喂给模型学习用的原料”,很少注意到还有一类专门用于评测和诊断的基准数据集。
误区模型在 CLEVR 测试集上拿到 95% 的准确率,那它一定具备了通用视觉推理能力,可以放心部署到真实场景。
正解CLEVR 是合成积木世界,场景受控、问题模板化,模型可能只是学会了“这个模板对应那个答案”的表面映射。一旦遇到真实照片——光照变化、物体遮挡、背景杂乱——分数往往大幅下降,这就是合成域与真实域的差距。CLEVR 高分是“应试能力强”的证据,但不是“通用推理强”的充分条件。
为何常见:看到漂亮的数字就联想到“智能”,这是外行最容易踩的坑;评测基准的分数只有在同一分布内才有可比性。
误区把每张图里的物体都识别出来,颜色、形状都标对,CLEVR 的题自然全对。
正解识别只是第一步。大量 CLEVR 问题需要多跳组合推理:先过滤出蓝色球,再找到它左边的物体,接着数一数有几个,最后查颜色。每一步都依赖前一步的输出,相当于在场景图上执行一条函数流水线。只做单步识别,面对“蓝球左侧的绿色圆柱右边的方块是什么颜色”这种题会直接卡壳。
为何常见:初学者容易把“视觉问答”简化为“看图识物”,忽略了问题文本里嵌套的关系与逻辑结构。
误区模型在 CLEVR 上得分低,那就继续加大训练数据,数据越多,分数肯定越高。
正解CLEVR 的问题由程序模板生成,测试分布和训练分布高度重叠,盲目堆数据很容易让模型学到模板表面的语言先验,而不是真正的组合推理。更有效的做法是看诊断报告:哪个题型弱就补哪个题型的数据,并针对性地调整模型结构(如注意力绑定参照物)。没有分层报告指导的“大力出奇迹”,往往只是把分数刷在已经擅长的题型上。
为何常见:“数据越多越强”在大模型时代深入人心,但诊断型基准的用途恰恰是告诉你:问题的关键往往不在数据总量,而在能力分布。
面试题
Q1. CLEVR 最主要的作用是什么?
- A.一个用于图像分类的合成图片数据集
- B.一个诊断视觉推理能力的评测基准← 正确答案
- C.一个用于语音识别的音频语料库
- D.一个用于目标检测的实拍照片集
答案:B。CLEVR 全称 Compositional Language and Elementary Visual Reasoning,核心定位是诊断型评测基准,就像一座“积木体检考场”,专门用来评估模型的组合式视觉推理能力,而不是用来做图像分类或目标检测。
Q2. CLEVR 的图像是如何生成的?
- A.从网络爬取大量真实生活照片
- B.利用 GAN 生成模糊的合成图像
- C.用 3D 渲染引擎合成的积木场景← 正确答案
- D.对真实照片做裁剪与数据增强
答案:C。CLEVR 用 Blender 三维渲染引擎程序化地合成积木场景,这样每个物体的形状、颜色、大小、材质和位置都完全可控。GAN 生成的图像不够精确,无法满足“程序化标注”的严苛要求。
Q3. CLEVR 场景中的三种物体形状是?
- A.正方体、圆锥体与三棱柱体
- B.长方体、圆球体与六棱柱体
- C.正方体、球体与圆柱体← 正确答案
- D.三角锥、球体与八面体
答案:C。CLEVR 只使用正方体、球体、圆柱体三种简单几何体,这是“控制变量”思想的体现——形状种类越少,推理能力的归因越干净,模型不容易因形状多样性而分心。
Q4. CLEVR 中物体属性组合共有多少种?
- A.属性组合数共计 96 种类型← 正确答案
- B.属性组合数共计 48 种类型
- C.属性组合数共计 24 种类型
- D.属性组合数共计 192 种类型
答案:A。按乘法原理,物体类型数 = 3 种形状 × 2 种大小 × 2 种材质 × 8 种颜色 = 96。48 是漏乘了材质或大小,24 少乘了颜色,192 则是误把材质数算成 4 倍,只有 96 正确。
Q5. 下列哪类问题不属于 CLEVR 的标准题型?
- A.属性查询类的问题
- B.计数与存在类问题
- C.比较与推理类问题
- D.情感与观点类问题← 正确答案
答案:D。CLEVR 问题围绕视觉推理设计,包括属性查询、计数/存在、比较推理、空间关系。情感与观点属于主观判断,既不依赖场景中的客观属性,也无法用功能程序给出标准答案。
Q6. 功能程序(Functional Program)在 CLEVR 中起什么作用?
- A.为模型提供训练时的对抗扰动
- B.把问题拆成可执行的模块化步骤← 正确答案
- C.对合成图像进行超分辨率重建
- D.将真实照片转化为积木风格
答案:B。功能程序把问题拆成 filter、count、relate 等模块化函数,执行后得到标准答案,相当于每道题附带的“标准解题步骤”。它不是数据增强或图像处理工具,而是答案生成与可解释推理路径的核心机制。
Q7. CLEVR 相比传统 VQA 基准的优势有哪些?
- A.合成场景可控,变量能精确调配← 正确答案
- B.问题分层分类,便于短板诊断← 正确答案
- C.标注直接取自真实照片自动采集
- D.每道题配有程序化的标准答案← 正确答案
答案:ABD。CLEVR 的优势在于合成场景可控、问题按类型分层、程序化标注可解释。C 描述的是真实照片自动采集,与 CLEVR 的合成数据路线相反,传统 VQA 往往使用人工标注的真实图片,但这恰是 CLEVR 想规避的。
Q8. 某模型在属性查询类正确率 90%,空间关系类只有 40%,最可能的解释是?
- A.模型过拟合了训练时常见问法
- B.测试样本中空间关系题偏少
- C.模型不擅长多跳组合的推理← 正确答案
- D.模型只能识别单一的物体属性
答案:C。CLEVR 保证各题型数量均衡,B 不成立;过拟合问法(A)会影响所有题型,不会单独指向空间关系。空间关系题要求“定位参照物→关系判定→继续查询”的多跳组合,与单步属性查询相比推理链更长,模型恰恰容易在这类组合推理上失分。
Q9. CLEVR 合成数据的高可控性体现在哪些方面?
- A.可控制图像中物体的数量与分布← 正确答案
- B.可生成多样且均衡的问题模板← 正确答案
- C.场景来自真实拍摄,无渲染误差
- D.每个物体的属性与坐标均已知← 正确答案
答案:ABD。合成渲染让物体数量、布局、属性、坐标全部精确可控,问题模板也能由程序批量生成并保持均衡。C 与事实相反——CLEVR 恰恰是合成渲染而非真实拍摄,正因如此才能做到“每个物体属性坐标均已知”的完美标注。
Q10. 关于 CLEVR 问题与功能程序的对应关系,以下说法正确的是?
- A.先定义程序再反写为问句← 正确答案
- B.程序由函数原语组合而成← 正确答案
- C.程序执行结果即标准答案← 正确答案
- D.问题全部靠人工逐句手写
答案:ABC。CLEVR 的生成流程是“先有程序、再造句子”:从函数原语组合出程序,再把程序反写为自然语言问题,程序执行结果就是标准答案。这样做既保证了语言与推理步骤严格对齐,又支持自动化批量生成,无需人工逐句手写,因此 D 错误。