CLEVR 数据集:专门设计来测试视觉推理能力的合成图像——计数、比较、推理

AI technology illustration

2017年,斯坦福视觉实验室放出了一个新数据集。第一眼看到它的人多半会愣一下:图像是电脑渲染的玩具方块,问题却像是考小学生——『右边那个大球是什么颜色?』『有几个方块前面有金属球?』没有一张真实照片,没有复杂场景。当时主流共识是『真实数据万岁』,这个数据集看起来像开倒车。但它后来成了视觉推理领域绕不开的基准——几乎所有研究推理的论文都要在它上面跑一遍,它叫CLEVR。

我最初以为CLEVR只是把物体识别做得更细一点,比如增加一些属性分类。直到我看到这道题:『前方物体数量与立方体数量相同的金属球是什么形状?』——模型得先数出立方体有几个,再数出前方物体有几个,找到数量匹配的那组,再判断材质和形状。这不是一眼扫过去的任务,而是一连串逻辑操作。它测的不是『看到什么』,而是『能否根据约束一步步推出来』。

一张没有真实照片的数据集,凭什么测推理?

标准视觉数据集比如ImageNet、COCO,目标是把物体和场景分类清楚。它们当然也暗含推理,但都被无关因素掩盖了:纹理、光照、遮挡、背景。你想测『识别猫』,模型可能靠的是草地背景而不是猫的形状——这叫捷径学习

CLEVR的思路恰恰相反:把所有容易作弊的因素全砍掉。图像是程序渲染的,背景统一灰色,物体就几个简单的几何形状——正方体、球体、圆柱体,颜色只有8种,大小、材质也都严格控制。这样,模型在CLEVR上表现好坏,几乎完全取决于它是否真的理解了问题里的关系,而不是它有没有见过类似的照片。

问题不是『这是什么』,而是『哪个在哪个左边』

CLEVR的核心不是图像,而是问题。每张图会生成10个左右的问题,全部由程序自动生成,保证答案唯一。问题类型覆盖:计数、比较、空间关系、属性查询、组合逻辑。

给你看几个真实例子:

  • 『有几个棕色的大物体?』——计数+属性过滤
  • 『那个黄色橡胶球前面的金属圆柱体是什么颜色?』——空间链式推理
  • 『绿色物体的数量是否等于红色物体的数量?』——比较
  • 『在灰色球左边的物体中,与金属球数量相同的物体是什么材质?』——多层组合

每个问题不是人工编的,而是从90多个模板里自动组合出来。模板里先留槽位,再用场景中的具体物体填充,最后连成自然语言句子。

# 一个CLEVR问题的简化表示
question: There is a sphere; what color is it? Right of the sphere is a cube.
program:
  scene()
  filter_shape(sphere)
  relate(right)
  filter_shape(cube)
  query_color()
  -> gray

注意后半部分——每个问题都附带一个可执行的程序。这个程序不是给人看的伪代码,而是可以直接在渲染器内部运行的命令序列。它精确对应推理步骤:先定位场景中的球体,再取它右边的物体,再过滤出立方体,最后查询颜色。程序输出就是答案。

这意味着什么?意味着你能拿到每一次推理的中间结果。模型答错了,你可以精确知道它是在‘找物体’那一步错了,还是在‘空间关系’那一步错了。这在真实数据集上完全做不到——真实数据的标注只有最终答案,没有任何推理轨迹。

“CLEVR的设计是为了让模型必须执行基于视觉的推理,而不是凭语言先验或表面统计来猜。”——CLEVR论文原话,作者Justin Johnson等人,2017年CVPR。

合成图像怎么做到完全可控?三句话讲清楚

整个过程分三步,每一步都由固定规则驱动:

  1. 场景生成:随机指定物体数量(3到10个)、每个物体的形状、颜色、大小、材质,再随机放在画布上,互相不重叠。
  2. 图像渲染:用Blender把场景描述变成图像,控制好材质、光照、相机位置,生成144万张图。
  3. 问题生成:先在场景里随机选一个或多个目标物体,再从模板中选择相应的提问方式,最后用程序输出答案。

所有图像和问题都是一一对应的。你想生成100万张还是1000万张?改个随机种子就行。你想专门测空间推理?把非空间问题过滤掉就行。这种按需生成的数据能力,是真实数据永远做不到的。真实数据只能收集,不能创造。

CLEVR 和真实数据集,到底差在哪?

不用感觉,直接看对比:

维度 CLEVR 真实数据集(如COCO)
图像来源 程序渲染,可无限生成 真实世界拍摄,成本高
标注方式 自动生成,100%正确 人工标注,有主观噪声
属性控制 完全可控 不可控,混杂因素多
推理标注 有完整可执行程序 只有最终答案
难度上限 可设定任意复杂逻辑链 依赖真实场景,难以设计
主要风险 域差距,过拟合合成风格 模型走捷径,学不到推理

CLEVR本质上是把视觉问题抽象成了一个封闭的玩具世界。在这个世界里,所有物体都有确定的属性,问题都有唯一的答案。这正是它作为测试基准的价值:你能准确地度量一个模型在纯推理上的能力,而不被视觉感知的噪声干扰。

当模型在CLEVR上考满分,意味着什么?

有趣的事情发生了:在CLEVR上,最好的模型准确率超过了人类。比如MAC网络达到了99.6%,而人类的准确率大概是92.6% (MAC网络论文)。模型「比人类强」,是不是说明AI已经掌握了视觉推理?

别急着下结论。你能考满分,是因为考卷只有那几类题型。CLEVR的问题模板虽然能组合出大量句子,但底层逻辑模式就那些——只要模型学会了『数数』『比较大小』『空间关系』这几个操作,它就能应付所有排列组合。

换句话说,CLEVR像是闭卷考试但划定了范围。考满分只能证明你在范围内掌握得好,不能证明你在开放世界里能推理。真实世界没有模板,没有设定好的答案,更糟糕的是,你连『考试范围』都不知道。

但反过来,CLEVR确实暴露出神经网络一个致命问题:你很难让它们在开放式场景里做同样的事。有一个很长一段时间让我特别困惑的点:为什么模型在合成图上的推理能力,一迁移到真实照片上就崩?后来我想通了——渲染出的物体边缘光滑,阴影规律,材质反射都一致。模型完全可以靠『整体外观』匹配,而不是靠『物体之间的关系』。所谓推理,可能只是记住了特定颜色和形状的组合规律。

这也解释了为什么后来出现了CLEVR类数据集的许多变体:CLOSURE增加更复杂的语言结构,CLEVR-Hyp加入反事实问题,Super-CLEVR引入六个不同物体。它们的共同思路是:把推理链条拉得再长一点,把问题组合做得再刁钻一点。

CLEVR的局限:一个封闭的玩具世界

合成数据的最大价值,恰恰也来自它的最大弱点:封闭性。CLEVR里的推理是精确的、离散的,可枚举的。但现实世界的推理往往需要常识、不确定性处理、语言歧义消解——比如『桌子上的书』和『桌子上方的球』,在CLEVR里是明确的坐标关系,在现实里却是模糊的。模型在CLEVR上精确执行的推理程序,并不能直接转换成对真实世界的理解。

所以对今天的问题,我的看法是:CLEVR不是用来训练一个实用AI的,它是用来检验一个模型是否具备推理的骨架。如果你要做视觉问答系统,真实数据必不可少。但如果你想搞明白『神经网络到底能不能做多步逻辑推理』,CLEVR这种干净可控的封闭环境,依然是最锋利的解剖刀。

它教会我们一件更重要的事:想要测试某个能力,你得先学会排除其他因素的干扰。CLEVR也许永远不能直接用在自动驾驶或医疗影像上,但它的方法论——用合成世界隔离变量——已经成为AI评测中不可或缺的思路。下次你看到一个模型在真实数据上表现亮眼,不妨想想:它是不是也在某个看不见的维度上走了捷径?

原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/810.html

(0)
上一篇 1小时前
下一篇 2026年8月15日

相关推荐