此文章仅作为交流讨论之用,文章中如果有我理解不到位的地方欢迎指出。文章中大部分内容来源于VQA Datasets Alogritgms and Future Challenge这篇文章,因为本人的认知容易出现错误,建议大家阅读原文对内容有个直接的认识。
首先视觉问答是把图像和关于图像的自然语言问题作为输入,针对问题生成自然语言答案作为输出。可以看到这实则是一个跨领域的任务,既包含了计算机视觉(CV),又包含了自然语言处理(NLP)。同时视觉问答因为问题的不同,可以被划分到多个计算机视觉领域。比如:
数据包括图像数据和问题数据,两者成对出现,我们先了解问题是什么样的。大致有这么两种模式,一种是开放式问题(Open-Ended),一种是选择题(Multiple-Choice)。
开放式问题一般没有固定答案。选择题则是针对特定的问题,提供一些候选答案,系统只需要在多个答案中进行选择即可。相当于把问答转换成了分类。选择的结果优于开放式问题的结果,但是所有的方法都比人表现的差很多。
最早的数据集,也是最小的之一。328,000张图像,91种目标类别,2M个标签实例,平均每张图像5个描述标签,它包括基于NYU-DepthV2数据集的图像的6795个培训和5673个测试问答对。
如果仅使用其中37个类别就得到了DAQUAR-37,包括3825个训练和297个测试问答对。
最早的数据集,问题也比较多。
数据集基于COCO图像数据集,把COCO划分成四种问题,仅限于COCO标题描述的种类,其中包括counting(7.47%), location(6.10%), color(16.59%), object(69.84%)。 使用图像描述算法生成的描述,然后对之建立了问题,比如对描述中的物体提问,举个例子,A boy is playing Frisbee可以生成问题What is the boy playing? 这时,连答案也都一同产生了。感觉这个过程有点类似于bert的mask技术。
数据量包括78,736个训练和38,948个测试问答对,每个问题的答案都是一个词,因为比较好生成。也因此,这么多问题,只有435个无重复答案。同时一个词的答案,评估也就更加容易一些。
问题在于NLP算法生成的句子,不能很好的应对词法和句法的变化,会导致尴尬的提问句子和许多语法错误。
数据来源于COCO的真实图像和合成的抽象卡通图像,比较侧重于COCO的真实图像,真实场景的部分又叫COCO-VQA,合成部分叫SYNTH-VQA。
其中COCO-VQA相对其他数据集,数据量算是非常大的,总共14,163个问答对,其中包括248,349 训练, 121,512 验证还有244,302个测试数据。
SYNTH-VQA包含50000张卡通合成场景,100个不同目标,30个不同动物模型,20个人类模型,包含变形的四肢,八种不同的面部表情,囊括不同的年龄,性别和种族。每张图像三个问题,每个问题十个答案。通过生成可以创建更多多样化和平衡的数据集。
问题类型包括单选和开放式,单选包含18个不同的选项。
数据集问题:
另一个基于COCO的数据集,原始问题收集是中文的,提供了英文翻译。
数据集允许答案是完整的句子,所以很难使用指标评价,作者建议人类来评估,主要来判断答案是否由人提供,以及评估答案的等级质量{0,1,2}。所以代价昂贵,难以开发和部署。
由108249张图像组成,图像同时出现在YFCC100M和COCO中,平均一张图17个问题答案对,总共1.7M问答对。相比于其他数据集,问题多样性更丰富,1000个最常出现的答案仅仅覆盖了0.65的答案。
问题的多样性给指标评估带来巨大挑战,答案倾向于选择更加简洁的回答,来消除答案的多样性。
尽管答案的长度具有长尾分布的特性,但是相对于其他数据集较好,一个单词的答案占比57%, COCO-VQA是88%, COCO-QA是100%,DAQUAR是90%。
提问有两种形式,一是自由提问,自由提问的时候标注者容易问图像全面信息的问题;另一种是基于边框对图像区域提问,这是作者鼓励的方式。
问题类型可概括为六W问题,即Waht,Where,How,When,Who,Why。没有回答是否的问题。
Visual Genome的子集,包含其中47300张数据,这些数据同样出现在COCO中。此外还包括指向性任务(which提问的问题),相对于Visual Genome,在6W提问的基础上加了一种which的问题,例如Which object can you stab food with?
使用单选框架作为标准评估,评估过程中使用四个可能的答案,干扰选项是通过让标注者不看图像回答问题得到的合理的答案。对于指出性问题,选项则是围绕答案的四个合理的边界框。
有不同的排列,类型,颜色变化,形状,属性,关系和位置的数据组成,这样创建了大量数据,而不会其他数据集中的bias(偏向)问题。总共由244个独立的问题组成,每个问题都会询问数据集中的64张图像,以实现偏向的消除和数据平衡。
所有的问题都是是否类型,许多问题需要对形状的布局和属性进行位置推理。如针对下图中的问题。
通常来说一个好的数据集,应该足够大以捕捉真实世界场景中问题和图像内容中的各种可能性,还应该有一个公平的评估方案。评价指标大多和数据相关,这里大致整理一下常用的评价指标。
选择问题可以使用简单的准确率作为度量指标,比较好评价是对的是错的。但是准确率很难使用在开放式问题上,如果要使用,则需要预测答案完全匹配真实答案,这个通常是很难的。
但是使用准确率的有点在于,简单而且容易解释。适用于少数独特的答案。缺点同样很明显,那就是错误不能够进一步的区分,对于不同错误惩罚是相同的。比如答案是秃鹰的时候,鹰和鸟就应该比斑马更接近正确答案,而不该有相同的惩罚。答案的完全匹配也不适用答案是句子或者短语的情况,同时会带来特殊答案的大量生成。
上述提到不同的错误的需要有区分,就有想法通过语义来度量这个区分性,有些答案与真实标注更加接近,则应该具有较少的惩罚。依赖于WordNet提出语义树,来对答案和基本事实中的词语构建相似性距离来度量预测结果与答案之间的差距。根据两个单词的语义找到最不常见的使用,并根据需要遍历语义树的距离找到该共同使用者,然后分配相似性分数,取值范围在
通常来说语义相似但是不相同的参数惩罚相对较小。例如bald eagle和eagle的相似性是0.96,而bald eagle和bird的相似性是0.88。但是即便非常不相关的词,WUPS分配的相似性也不是很小,为了克服这一点,提出了基于阈值的WUPS,低于阈值的分数将会以一个比例缩小,比如阈值设置为0.9,低于阈值的分数将乘以0.1。这种方法常用于DAQUAR和COCO-QA性能的标准度量。
也因此,这种指标具有易于评估简单的特点,同时对答案之间的未系哦啊差异变化和错误比较宽容。即便如此这种指标还是会存在一些问题。比如依赖于语义相似性,对于语义的差异刻画的不是很准确,黑色,绿色和红色的相似性也都很高。而且只能在小词的条件下工作,不适于句子和短语。并且只有在词汇之间具有WordNet含义时才起作用。
DAQUAR数据集,为每个问题平均收集5个标注。然后指向以下两种度量。平均共识(average consensus):最终分数会通过加权倾向于标注者提供的更流行的答案,有多个独立的Ground Truth答案,设置频率最高的是正确的。最小共识(min consensus):答案需要至匹配一位标注者。
而在VQA数据集中,与准确率度量一起使用, A c c u r a c y V Q A = m i n ( n 3 , 1 ) Accuracy_{VQA}=min\left(\frac{n}{3},1 \right) AccuracyVQA=min(3n,1)。意味着如果预测结果与3个人以上的标注的答案一致,这就是完全正确。这样就能够较好的解决歧义问题。
这个指标也会存在很多问题,比如在COCO-VQA使用这种方式上实现的最高准确率是0.833,不可能完全准确。而且有59%的why问题答案少于三个标注者,
这种评价的优点在于可以处理相同答案的常见差异,如果差异答案也很常见,也可能正确。而且一旦收集了标注数据之后,比较容易评估。
但是缺点也比较明显,收集真实答案比较麻烦,因为通常需要多个标注。而且不同的人之间缺乏共识,允许一个问题具有多个正确答案,甚至有些答案是完全相反的语义(在…左边,在…右边)。还有13%的yes/no数据同时存在两种情况,并且两种情况都超过三个人,也就意味着都是对的。这就是因为多数的答案没有在权重上起到作用。这些问题也使得评估结果更好,在所有回答是否的问题上回答yes,分数是71%。
这种指标反而不适用于开放性问题。
就是使用人类来判断评估答案是否正确。在FM-IQA中提出两种评价方法,第一种指标是判断答案是否由人产生的。但是显然单独使用这个指标无法很好的指示系统的性能,而且评价容易被潜在先验操纵。
第二种通过3-point评分正确性,把答案的级别分为三级然后对答案的性能进行评级,0:完全错误,1:部分正确,2:完全正确。
手动评价的优点在于变化的答案容易被评价,也能够很好的处理句子短语答案和句子答案。但是随之而来的缺点就是成本高,需要耗费时间和资源,并且很难反复的训练测试来提升算法的性能,因为每一次训练和测试都是很大的人力开销。除此之外使用人力评估,必须制定明确标准的指导方案,以便在判断之间产生良好的协议,能够正确评估。
认真去学习,感觉这里的内容真的是非常多,我也写的累了,感觉本文已经达到了别人太长不看的标准了,但是好像VQA的相关算法才是重点,见下一篇文章。