一、背景
1. 以往VQA数据集存在明显的语言先验问题。
2. 数据集中多数问题没有用到组合式的语言,从而仅仅测试了模型的物体识别能力,模型缺乏基于视觉的推理能力。
3. 之前的数据集缺乏将问题中的关键词与图中的区域相联系的标记信息,使得研究者难以定位模型出错的原因。
二、构造流程
(1)获取每张图像的场景图(这一步用的另一个数据集:Visual Genome数据集的研究成果);
(2)遍历图中的对象,对象的属性以及对象之间的关系,生成语义丰富且多样的问题;
(3)使用潜在的语义形式来减少条件答案分布中的偏差从而产生一个平衡的数据集,该数据集对快捷方式和猜测更为稳健。
(4)讨论问题函数表示(functional representation),解释了如何使用它来计算问题之间的蕴涵,支持新的评估度量(给出回答一个问题的所需要的推理步骤)。
最终构建好的GQA数据集包含22,669,678个问题和113,018张图片,要想回答这些问题,需要模型具有多种的推理技巧和推理步骤。(数据集中覆盖的词汇量有3,097个,答案类型有1,878个。)
三、构造细节
1. 场景图归一化(Scene Graph Normalization)
场景图作为图像的形式化表示:每个节点表示一个对象,比如人、苹果;每个节点有指定位置和大小,包含1-3个属性,比如形状、颜色;对象之间由边连接,表示动作、空间关系。
2. 问题引擎(The Question Engine)
问题引擎是一个核心步骤,负责生成不同程度的、多样的、相关的问题。生成过程利用了两种资源:一种是场景图,为引擎提供了关于对象、属性、关系的丰富内容信息,另一种是结构模式,该模式可以将内容塑造为一个问题。
为了增加问题的多样性,除了使用对象、属性的同义词外,还使用概率的形式选择短语或者替换表达式。并且为每个对象引用一组直接或者间接的候选答案,其中直接的答案应用于对象可以被唯一检测到时,间接答案应用于多步推理时。另外,还设置一组诱导答案,在设置诱导答案时,会根据概念手动定义,排除过于干扰的答案,比如粉色和橙色。
3.功能表示和蕴涵(Functional Representation and Entailment)
每个问题模式都和功能程序的结构表示相关联,一组程序由原子操作组成,比如对象选择、沿关系边遍历或属性验证等,然后将这些原子操作连接在一起创建具有挑战性的推理问题。
这种语义上的明确表示带来了许多优势。第一,更好地评估模型的好坏;第二,帮助平衡数据集的分布,减少问题的语言先验,防止有根据的猜测;第三,识别问题的蕴涵和等价关系。
4. 取样和平衡(Sampling and Balancing One)
现有VQA数据集的主要问题之一就是普遍存在问题条件偏差,这种偏差允许模型在不真正理解图像内容的情况下进行有根据的猜测,但是在GQA数据集中,问题语义的精确表示可以极大的缓解这种缺陷。
对于一个问题的功能程序,会有两个标签,全局和局部。全局标签分配问题的答案类型,比如颜色,局部标签进一步区分,比如苹果的颜色。使用标签根据先全局后局部将问题划分为不同的组,使每个组的答案分布尽可能均衡。
这个方案的优点是保留了实际的趋势,将分布调整到一个合适的状态。
最后根据问题类型进行抽样,控制数据集的类型组合,并去掉语义上过于相似的冗余问题。 数据集最终被分类成70%的训练集,10%的验证集,10%的测试集,10%的挑战集。
四、新的评估指标
1. 一致性
考察模型回答问题的一致性:对于同一张图片,当面对一个新问题时,模型给出的答案不应该与过去的回答相矛盾。在GQA中,由于问题数据的高度结构化,这种逻辑等同的问题很容易通过程序被聚集在一起,形成一组组entailed questions(当得知了其中任何一个问题的答案时,其余问题的答案都可以被直接推断出来)。随后,当一个问题被模型回答正确时,模型回答其对应的entailed questions的平均准确率则可以衡量出该模型的Consistency。
2. 有效性
这个指标考察模型的回答是否在问题涉及的范围里,比如,当面对一个颜色的问题时,模型的回答必须是一种颜色。由于GQA内部维护了一个分类的词汇表,所以可以计算该指标。
3.合理性
与Validity类似,同样考察模型回答的合理范围,但更加严格,要求模型的回答必须是符合常识的。通过统计答案是否曾和问题的主语一同在训练数据中出现过,我们可以计算出该指标。
4. 分布分数
衡量模型预测的答案分布与真实答案分布的距离,当模型只预测常见的答案而忽略那些少见的答案时,这一指标的得分就会比较低。
5. Grounding
针对那些使用了attention机制的模型,这个指标考察了模型是否将注意力集中到了准确的区域。
五、可视化
1. 数据集结构
GQA数据集由三个部分组成:场景图、问题和图像。场景图包含了训练集和验证集中每一张图像的场景图信息;问题包含了回答这个问题所需要的一些推理步骤;图像这个文件夹下面除了有图片,还储存了每张图像中包含的所有对象的特征和每张图像的空间特征。
2. 图像特征
对象特征和全局空间特征都存储在h5文件中。每张图像的空间特征是用Resnet-101提取的2048*7*7维度的向量。每张图像里面的对象特征用faster r-cnn提取,并限制最多有100个对象,提取出来的特征是一个2048长度的一维向量,同时另外还保存了每个对象的bounding box的信息。
3. 场景图
场景图信息都存在json文件里,一张图像的场景图包含了这个表里面的这些信息:图片的长、宽、拍摄地点、天气、图像里面的目标,目标的属性、目标的位置和关系等等。
左边这两张图标注的是图中对象的位置和类别信息,右边打印了对象的ID,属性,以及它和其他对象之间的关系,比如:吸管是白色的、塑料的,在香蕉的右边。
4. 问题
对于问题信息的标注,GQA数据集针对每个问题都标注了上述表中这些信息,除了包含必须要有的图片id、问题和答案,这里还有问题分组信息、问题类型、语义信息、回答该问题的推理过程等。这里面很多的参数其实是在构建数据集的时候使用的,比如说用于控制数据分布均衡。
我们训练模型时要用的主要是问题、图像id和答案这三个参数。但是如果要研究VQA模型的推理过程和鲁棒性,这三个参数显然是不够的,所以这个数据集还标注了一个语意结构的信息。比如说要从上面图像推理得到问题的答案,第一步就是先在图片中选择蔬菜,第二步判断是否存在,然后选择坚果,判断是否存在,最后进行一个“或”的逻辑判断。