论文笔记《Visual Dialog》

一、文章讨论视觉对话,让AI以自然语言与人类进行有意义的对话,讨论视觉内容。应用包括:

1、帮助视障用户理解他们周围的环境或社交媒体内容。

AI:'约翰刚从夏威夷度假时上传了一张照片',

人类:'太棒了,他在海滩吗?

AI: 不,在山上。

2、帮助分析师根据大量监测数据做出决定。

人类:'上周有人进入这个房间吗?'

AI:'是的,有27个实例出现在镜头'

人类:'他们中是否有人携带黑色包?“

3、与人工智能助理互动。

人类:'Alexa - 你能看到宝宝在婴儿监视器中吗?'

AI:'是的,我可以',

人类:“他在睡觉还是在玩耍?”

4、机器人应用(例如搜索和救援任务),操作人员可能处于“情境盲区”并通过语言操作。

人类:“你周围的任何房间都有烟吗?”

AI:'是的,在一个房间里' 

人类:'去那里找人'。

但是尽管视觉和语言取得大的进展,但是我们距离AI能“看”和“沟通”还很远,比如image captioning 和visual question answering,仍然有很大的进步空间,前者没有实现对话,后者只有单论对话,人机交互很糟糕。

于是作者提出视觉对话,任务描述: 给定一张图片I,一段包括一系列QA的对话记录,一个自然语言问题,让AI回答这个问题。

论文笔记《Visual Dialog》

二、相关工作:

1、视觉和语言:视觉和语言结合的工作有很多: image captioning, video/movie description , text-to-image coreference/grounding, visual storytelling,  visual question answering (VQA) ,不过它们都没有对话。

2、视觉图灵测试:图灵测试是一个系统,要求模板化的二进制问题。我们的数据集自由、多样,每张图片10对QA。

3、基于文本的QA:

4、对话模型和聊天机器人:视觉对话可以说是基于文本的对话的变体,早期聊天机器人是基于规则,现在基于学习的端到端的方法很多。


三、数据集VisDial

四、模型

输入:图片I、对话历史(包括图片描述)论文笔记《Visual Dialog》,其中C是caption,QA是问答

有100个候选回答At = 论文笔记《Visual Dialog》,需要返回其中一个值。


Decoder:两种类型的解码器

1、生成解码器G:在训练期间,最大化真实回答序列的对数似然率。 为了评估,我们使用模型的对数似然率分数和排名候选答案

2、判别(softmax)解码器D:计算每个选项的后验概率,在训练期间,最大化正确选项的对数似然率。 在评估过程中,选项根据后验概率进行简单排序。

Encoder:三种编码器,将(I,H,Qt)融合为一种表达。

1、后期融合LF:把H看作整个历史的串联(H0,...,Ht-1)

论文笔记《Visual Dialog》

2、分层递归HRE:

论文笔记《Visual Dialog》

3、记忆网络MN:

论文笔记《Visual Dialog》

五、实验

1 下载数据集,预处理数据集

python prepro.py
生成data/visdial_data.h5(tokenized captions, questions, answers, image index) 和 data/visdial_params.json (vocabulary mappings and COCO image ids).

2 VGG16提取图片特征

sh scripts/download_model.sh vgg 16   

 得到 data/data_img.h5

th prepro_img_vgg16.lua 

得到data/models/vgg16

3 训练

th train.lua  

得到checkpoints/

4 评估

th evaluate.lua

5 Beam Search ,可视化结果

th generate.lua
得到vis/results/results.json

python3 -m http.server
在网站localhost:8000看到结果