本帖最后由 马猴烧酒 于 2018-8-27 11:37 编辑
1 简介
VisualQA数据集是用于可视化的问答数据集,可视化的问答即根据图片的内容进行提问与回答,如图1-1,将视觉与语言结合起来。这个数据集的基本信息如下
- 265,016张图片(COCO和抽象场景);
- 每张图片至少有3个问题(平均5.4个问题);
- 每个问题有10个基本事实答案;
- 每个问题有3个似乎合理(但可能不正确)的答案;
- 自动评估指标。
复制代码
图1-1
2 内容
数据集有VQA1和VQA2两个版本,VQA1版本的数据集内容如图2-1所示。VQA2版本的数据集内容如图2-2所示。
图2-1
图2-2
VQA1和VQA2版本的数据集都分为真实图片和抽象图片,真实图片是用于问答的数据集,抽象图片是用于对图片内容进行抽象,生成标题的数据集。两者的共同点是都被分成训练集,验证集,测试集,真实图片的数据集分为问题(比如Training questions 2015 v1.0),答案(比如Training annotations 2015 v1.0)json文件。问题(questions)数据集被用来当做输入数据集,而答案(annotations)数据集被用来当做验证的数据集。抽象图片也分为输入数据集和验证数据集,下面一一介绍这些数据集的格式,首先介绍下真实图片的答案(annotations)的数据集格式。 真实图片的annotations数据集 annotations的json文件最外层是个字典,包含info,data_type,license,data_subtype,annotations五个键。info键存储的值描述数据集的信息,如下所示。 - {
- "info" : info,
- "data_type": str,
- "data_subtype": str,
- "annotations" : [annotation],
- "license" : license
- }
复制代码 data_type键值描述数据集属于真实图片,还是抽象图片,data_subtype键值描述数据集属于训练集,验证集还是测试集,并且描述数据集的年份。license键值描述数据集的授权文件,annotaisons键值描述问题对应的答案,是个列表,列表中每个元素是如下所示的字典。- {
- "question_id" : int,
- "image_id" : int,
- "question_type" : str,
- "answer_type" : str,
- "answers" : [answer],
- "multiple_choice_answer" : str
- }
复制代码
answers中每个元素也是个字典,其形式如下。- {
- "answer_id" : int,
- "answer" : str,
- "answer_confidence": str
- }
复制代码 answer_id描述答案唯一的id,answer描述答案,answer_confidence描述答案可信度。
真实图片的questions数据集 questions的json文件最外层也是个字典,包含如下的5个键值对。 - {
- "info" : info,
- "task_type" : str,
- "data_type": str,
- "data_subtype": str,
- "questions" : [question],
- "license" : license
- }
复制代码 info,data_type,data_subtype,license键值描述的内容和annotations数据集的一样,重点关注task_type,questions键值。task_type键值描述问题的类型,问题分为多个类型:是多选题,开放性题,还是有标准答案的题。questions描述各个具体问题。questions列表中每个字典元素question如下所示。 - {
- "question_id": int,
- "image_id": int,
- "question": str
- }
复制代码 question_id描述问题id,image_id描述问题对应的图片id,question描述问题。上述是常规的问答questions数据集格式,除了常规问答还有选择题问答,选择题的questions数据集格式与常规问答questions不同的地方在于question多了 multiple_choices键,而最外层的字典多了num_choices键。如下所示。 - "num_choices": int
- question{
- "multiple_choices" : [str]
- }
复制代码 num_choices描述选择题的选择项个数,multiple_choices描述选择题选项,是个字符串列表。 真实图片的数据集介绍完了,再来看看抽象图片的数据集。 抽象图片的输入数据集 真实图片的输入数据集是questions数据集,而抽象图片的输入数据集略有不同,最外层的字典如下所示。 - {
- "info" : info,
- "data_type": str,
- "data_subtype": str,
- "compositions" : [composition],
- "images" : [image],
- "license" : license
- }
复制代码 info,data_type,data_subtype,license键值描述的内容与真实图片一致,在此不做赘述。compositions描述的是图片id和图片名称的组合,这里的图片名称指对应场景(图片id)合成的图片名称,意思是一个场景对应着多幅描述这个场景的图片。compositions格式如下。 - {
- "image_id" : int,
- "file_name" : str
- }
复制代码 image_id是图片id,file_name是图片名称。images是图片列表,包含图片id,图片名称,图片链接,图片地址,图片宽高。images中图片名称是指图片id所对应的图片名称,即场景本身,而compositions中的图片名称指的是从另外的角度来描述场景的图片,比如场景中切割的图片来描述场景。iamges图片列表中每个字典元素如下所示。 - {
- "image_id" : int,
- "file_name" : str,
- "url" : str,
- "height" : int,
- "width" : int
- }
复制代码抽象图片的验证数据集 抽象图片验证数据集的json最外层依然是个字典,如下所示。 - {
- "info" : info,
- "task_type": str,
- "data_type": str,
- "data_subtype": str,
- "annotations" : [annotation],
- "images" : [image],
- "license" : license
- }
复制代码 info,task_type,data_type,data_subtype,images,license键值前面都介绍过,这里描述的内容与前面介绍的一致,不再赘述,而annotations里面的annotation发生了一些改变。annotation的结构如下所示。 - {
- "id" : int,
- "image_id" : int,
- "caption" : str
- }
复制代码 id是annotation的唯一id,image_id是图片id,caption是为图片id对应的图片生成的标题。 3 其他 另外一些值得注意的地方,开放数据集的作者引入了一个新的评估指标,该指标对于表达答案的人际差异具有很强的可靠性,指标如下
回答正确率等于人类提供的答案个数/3,和1之间的最小值。其次为了与“人类精确度”保持一致,机器精度在所有10种选择的9套人类标注器上取平均值。 对外发布的数据集对原始数据集进行了以下预处理: - 问题和回答字符串的拼写校正(使用必应拼写器)
- 问题标准化(第一个字符大写,最后一个字符' ? ')
- 答案标准化(所有字符小写,除小数点外无句点,数字单词- >数字,条形文字(a, a, a))
- 如果缺少缩进,则添加撇号(例子如"dont" 转换成"don't")
4 小结
VisualQA数据集是一个非常适合视觉问答的数据集,其分成真实图片数据集和抽象图片数据集,真实图片数据集用于视觉问答,抽象图片数据集用于图片标题生成,抽象图片数据集也可以用于视觉问答,因为官网也提供了其和真实图片数据集的输入验证格式相同的json文件。除此之外VisualQA提供了在线测试图片,可以上官网http://vqa.cloudcv.org/自己上传图片试试效果。
|