这项工作是Visual Reasoning领域的开山之作了~
李飞飞&FAIR构建了一个新的Reasoning dataset, CLEVR:
https://cs.stanford.edu/people/jcjohns/clevr/
合成的数据集,由一些简单的几何形状组成的视觉图像。数据集中的问题多涉及到复杂推理,问题类别包括:属性查询(querying attribute),属性比较(comparing attributes),存在(existence),计数(counting),整数比较(integer comparison),这些问题都是程序生成的。
包括一个main dataset,以及用于研究泛化性的CLEVR-CoGenT-A和CLEVR-CoGenT-B (A→A and A→B 两种测试方法)
feifei后续的一篇论文Inferring and Executing Programs for Visual Reasoning,还提出了CLEVR-humans,还是CLEVR的images,question-answer pairs则是人类写的,句式结构更加natural~
下面介绍下paper原文的一些内容
现在的模型很多是直接给出一个答案,而没有中间的推理过程,这使得人们很难分析模型的缺陷,究竟是哪一块出现了问题。
大神这里也提到了CLEVR的提出动机:
https://www.zhihu.com/question/60784169/answer/180518895
VQA是给张图,你可以问任意问题,人工智能系统都需要给出正确答案。
VQA还是被当成个分类问题,没有发掘潜在的推理过程,离真正人类级别的reasoning还很远。
其中一个问题是,直接在自然图片上进行问答系统的研究太难了,很难debug整个系统。
还有个问题是dataset bias,模型也许没有进行推理,而只是通过某种隐式的线索记住了答案,而换了个数据集或者到了真实场景,就会失效。下面这个例子很好:
我自己再举个例子,比如问画面右边的花是什么颜色的,算法回答是红色。但它可能并没有依据画面进行推理,只是知道训练数据里问花的颜色往往是红色,所以凡是这个话题它都无脑蒙一个红色。。
所以希望建立一个物体抽象化的数据集,只能依据推理来判断,而尽量不留下其他可能的答案隐藏线索~
研究者开始通过graphics合成图片的办法来建立绝对可控的VQA数据库,有着丰富的推理过程标注以及最小的dataset bias,这样就可以更好的分析模型的行为。
所以,该数据集叫做Compositional Language and Elementary Visual Reasoning diagnostics (CLEVR), 意思大概就是,组合式语言结合基本视觉的推理诊断。
CLEVR contains 100k rendered images and about one million automatically-generated questions, of which 853k are unique
Test visual reasoning abilities such as counting, comparing, multiple attention(storing information in memory), and logical reasoning
图像比较简单,重点是研究推理的能力
images in CLEVR may be visually simple, its questions are complex
and require a range of reasoning skills.
CLEVR上使用SOTA VQA models,发现它们存在一些缺陷,比如不具备记忆能力以及组合推理能力
这段话说的很好:
Finally, we stress that accuracy on CLEVR is not an end goal in itself: a hand-crafted system with explicit knowledge of the CLEVR universe might work well, but will not generalize to real-world settings. Therefore CLEVR should be used in conjunction with other VQA datasets in order to study the reasoning abilities of general VQA systems.
初衷应该是用于研究VQA方法的推理能力,搞一个hand-crafted system来单纯刷performance没有什么意义
(但是我看之后的一些symbolic方法有针对这个数据集的嫌疑??)
首先定义好了语言函数规则
如物体属性,问题逻辑函数程序,执行函数
生成流程:
Fig. 2 中间的就是functional programs的两个例子,可以对应的填入不同参数,执行这个programs,可以得到一个answer。
先要生成一幅图像(见原文,不细说)
再挑选一个question family,其对应多种不同的表达方式,填入参数可以对应到多个表达模板,依据graph, excute program可以得到一个最终的answer。而text templates再生成一个自然语言表达的question
三要素,Visual image, Qustion, Answer 都生成出来了~
实验部分见原文,不细说
直接看下discussion部分对SOTA VQA models的分析
注意一下, Disentangled Representations就是 Compositional Generalization,比如下面的A&B两种情况,在A上训练B上测试,performance会掉很多。说明比如model只记住了黄色的方块,换个绿的就无法推理了,而这本应该从绿色的球体也类比学习到的: