编者按:
《书李世南所画秋景》
--苏轼
“野水参差落涨痕,疏林欹倒出霜根。
扁舟一棹归何处?家在江南黄叶村。”
宋代诗人张舜民在《跋百之诗画》中,曾经写道:“画是无形诗,诗是无形画”。这句诗展现了古代语言与视觉之间的融合,而在如今的人工智能领域,这句诗亦可用来表现,自然语言理解与计算机视觉两个领域的交融。
因此,当我们来读苏轼的《书李世南所画秋景》,第一句的“野水参差落涨痕,疏林欹倒出霜根”,是从秋景中提取信息来生成自然语言描述的过程,即Image Captioning,而第二句的“扁舟一棹归何处?家在江南黄叶村”,则是从视觉内容结合“黄叶村”这一背景信息来生成问答的过程,即融合了external knowledge的Visual Question Answering。
在从视觉到语言这一问题上,人类通过对周围世界不间断的感知和学习,能达到如诗中融会贯通的效果。然而相比而言,机器却只能达到人类三四岁小朋友的水平,其间还有很大的差距需要我们科研人员来填补。
今天,来自澳大利亚阿德莱德大学的沈春华教授,将为大家介绍,从视觉到语言,如何利用深度学习来填补机器与人之间的落差。
文末提供文中提到参考文献、代码及数据库的下载链接。

本次报告给大家分享一下过去差不多两年的时间里我们做的Natural Language Processing,NLP和Computer vision,CV的交叉的工作,主要是Image Captioning和Visual Question Answering。

我下面介绍的工作主要是之前组里两个非常优秀的博士后做的:王鹏,现在是西北工业大学的教授;以及吴琦,现在是我们阿德莱德大学的讲师。









提到VQA,其实如果要真正彻底解决VQA,一定要解决QA,在自然语言处理(NLP)里面,所有的研究问题,最终都可以转成QA的问题。如果把QA解决了, 其实也就是解决了自然语言处理,大家知道NLP远远没有解决,还有很多研究的问题。那么Question Answering问题,和其他传统的计算机视觉问题相比是一个非常大的挑战。 要正确回答这个问题,你可能要依赖很多的知识(knowledge), 这个知识不一定在图像里面。



在CVPR 2016的论文里,我们做了一个工作,怎么样把相关的知识找出来,主要使用的External knowledge是维基百科。维基百科拥有几十万的英文文章. 基本是思想是给你一张图片,可以根据图像相关的属性得到标签,然后再用SPARQL(SPARQL是一个数据库搜索的语言),去搜DBpedia,DBpedia是Google做的基于维基百科的结构化数据库。得到之后,我们再去找到相关的维基百科里面的英文文章,得到相关的描述。最后要让文本参与计算,我们用了Doc2vec,把它转换成一个向量,然后再输入给LSTM,然后再做神经网络的训练。用这样的方法把相关知识利用起来。这可能是当时第一个把External knowledge利用起来,应用在VQA领域的工作. 这个工作只是往前走了一小步,还远远不够。


如果要正确的利用这样的结果,这里有几个研究问题要解决,其中一个是,首先这些off the shelf的算法的结果不一定百分之百是正确的,有可能是错的。怎么样把错的结果给过滤掉?第二个问题是因为我们产生这些结果的时候,我们并不知道用户要问的问题是什么. 我们需要在给出一个问题的时候,去挑选那些相关的facts,把那些不相关的仍掉,这里面得有一个机制,去掉错的或者噪声,来选择正确的facts来回答我的问题。在去年的CVPR论文里,我们提出一个Co-attention Model来做这个事情。







这些工作做完之后,我们在利用External knowledge上面,其实已经往前走了几步了,为了更好的做VQA这个问题,其实它还是有一些局限性的。第一个是可扩展性,它不够好,因为所有的知识都是从Questions and answers这样的问题和回答里面学出来的。 knowledge可以是非常大的。如果说要有一个编码解码这样的模型,一个递归神经网络,把所有的人类所知道的这些知识全部包含进去,全部学出来的话,可能是非常难的问题。
还有就是推导过程,目前我们只能rank一下它用到的Facts的重要性,它其实没有一个相关性,怎么显性的推理过程是没有的。第一个可扩展性非常重要,我们有没有可能把我们知道的那些knowledge base全部用上,来回答你的这个问题,把它用到这个VQA上面。其实这个在NLP里面有很多相关的工作,不过做视觉的很少关注到,这个肯定是有可能的,也需要把knowledge base这些技术跟视觉技术结合起来。


第一步,给你一个图片,我们去产生concept,这个其实是图片理解的过程,得到了图像信息之后,我们可以跟DBpedia对应起来。第二个模块其实是要理解输入的问题,因为你有个自然语言,NLP描述了一个问题,我们对这个问题做删选,然后做一个映射,得到这个映射之后,就得到了Query,去搜索这个knowledge base。





这里面有几个例子,为了去生成这个query,我们只能回答有限类型的问题。例如,像第一个,Is the image ...“这里面有没有”。


刚才说到的VQA,因为回答的问题有限,所以在这个基础上又更进了一步,我们希望把生成query,改用学习的方法得到,这样的话可以不局限于只能回答有限的问题。

最后提一下今年做的工作,是今年CVPR的一个oral paper,这个工作的背景是我们把GAN用到VQA上。让这个算法生成更像人说的这些自然语言,这里给大家看几个例子,这个人说的话,大概会比较长,会有更多的信息在里面,如果用机器来生成非常简短。

这个是我们提的框架,这里面加了鉴别器,这个鉴别器的任务就是来区分这是人说的话还是机器产生的,然后得到这个分数之后,再来指导这个generator,让它生成更像人说的话,这里面也会用到一个Co-attention model。在训练的时候,我们会固定一个训练好的判别器模型,把它当作一个reward function. 然后使用policy gradient,这样在训练生成器的时候,我们可以不提供ground truth,只通过sampling的方式,然后将sampling好的结果送入判别器,再通过reward计算policy gradient,来调节生成器,期望得到更好的sampling。



文中提到参考文献下载链接:
https://pan.baidu.com/s/1hH9Z-WOXfIEpjQY_jIPYlw 密码: niw2
代码及数据集开放链接为:
DAQUAR数据集:
https://www.mpi-inf.mpg.de/departments/computer-vision-and-multimodal-computing/research/vision-and-language/visual-turing-challenge/
COCO-QA数据集:
http://www.cs.toronto.edu/~mren/imageqa/data/cocoqa/
VQA数据集:
http://www.visualqa.org/download.html
Visual Genome数据集:
https://visualgenome.org/api/v0/api_home.html
FVQA 数据集:
https://www.dropbox.com/s/iyz6l7jhbt6jb7q/new_dataset_release.zip?dl=0
CO-attention code:
https://www.dropbox.com/s/siofu0gj6ocoirw/HieCoAttenVQA_v2_clean.zip?dl=0
Attributes captioning/VQA code:
https://www.dropbox.com/s/ur15xi828k2j4a9/ACK_Code.zip?dl=0