乐趣区

给-AI-讲故事如何教它脑补画面

阿里妹导读: 视觉想象力是人与生俱来的,AI 能否拥有类似的能力呢?比如:给出一段故事情节,如何让机器展开它的想象力,“脑补”出画面呢?看看阿里 AI Labs 感知实验室的同学们如何解决这个问题。

1. 背景 —— 视觉想象力(Visual Imagination)

1.1 什么是视觉想象力?

视觉想象力是人脑拥有的一个重要功能,可以将一些抽象的概念具象化,进而凭借这些视觉想象进行思考。如图 1 最左列,当我们想到:A yellow bird with brown and white wings and a pointed bill 时,脑海里可能已经想象出了一幅黄色鸟的画面。这就是视觉想象力。我们的目标就是让 AI 逐步具备这种能力。

1.2 AI 拥有视觉想象力后的影响?

AI 如果具备视觉想象力后,将会更懂人的需求,并能够对一些传统行业产生颠覆性影响。下面举两个例子。

图 2 为一个在语义图像搜索领域中的案例。我们在 google 中搜索 man holding fish and wearing hat on white boat,可能返回的结果质量为 (a),引擎只是零星理解了我们的搜索意图。而当机器拥有一定视觉想象力后,它的搜索结果可能是 (b),这将极大提升我们的信息检索效率,而这些信息是承载于图像中的。

另一个例子在语义图像生成领域。试想:当我们用语言描述一个场景时,机器利用其庞大的经验数据便自动生成了这个场景。如图 3,如果我们描述一个人拥有不同的外貌特征,那机器便自动想象出了这个人的样貌,这将对诸如刑侦等领域(如受害人描述犯罪分子样貌)产生怎样的颠覆。

2. 选题 —— 站在巨人的肩膀上

2.1 领域的痛点在哪?

我们将焦点移至文本生成图像(text-to-image synthesis)领域。此领域中,针对简单单一主体的图像生成,例如:鸟、花、人脸等,利用 GAN 的思想而来的一系列算法已经取得了一些令人欣喜的结果,如图 1。然而,当文本中含有多个相互关联的物体时,生成的效果就会大打折扣,如下左图所示。这主要是由过于灵活、非结构化文本所造成的。

因此,Stanford 大学 CV 组的 Johnson 等人在 CVPR2018 中提出了将文本到图像的生成拆分为若干个更加可控的子问题的想法 [5]。这用到了他们之前在 CVPR2015 中提出的一种新的场景表达方式 —— 场景图(Scene Graph)和语义构图(Semantic Layout)[2]。

场景图是一种有向图,含有实体、属性、关系三种要素,可以看做是一种语义模态下的结构化表达。

每个场景图中的实体,在图像中会有一个与之对应的 bbox。如果不看图像本身,单看图中所有的 bbox,就形成了一幅图像的语义构图,因此可以将语义构图看作是一种具有普遍含义的图像结构化表达。

2.2 如何解决?—— 我们眼中的大框架

站在大牛们的肩膀上,我们眼中从文本到图像的生成大致分为下面几个子任务:

为了达到可控生成,信息逐步升维的目的,整个过程大致可拆分为上述子任务。每个子任务都有相应的一些工作,在此不一一具体展开。

2.3 论文的关注点

论文专注于解决子任务 3:如何由场景图生成场景构图?

这个任务之所以重要,是因为由这个任务而始,结构化语义态的信息得以“想象”为图像的结构化表达,是赋予机器以视觉想象力的关键所在。

3. 论文的动机及贡献

3.1 当前的问题

3.1.1 最接近的工作与组合爆炸问题

最接近的工作来自 Stanford Johnson 等人在 CVPR2018 中发表的 sg2im 算法 [5](如图 6)。他们首先利用一个图卷积网络将每个实体进行特征嵌入,继而用这些特征通过一个 object layout 网络去生成语义构图。他们采用的生成方式是由场景图整体到语义构图整体。场景图整体中会包含若干个实体和关系,这些实体和关系的组合所形成的场景图变化极多,使得模型难以有效表达如此多的变化,最终导致了语义构图学习效果的不理想。我们称之为组合爆炸问题。

3.1.2 语义构图评价指标的缺失

另一大挑战是:如何直接自动化评价语义构图生成的好坏?

过去绝大部分工作采用间接自动化评价的方式进行,对由语义构图生成后的图像给予打分,利用 Inception score 或 Image captioning score。这样做根本无法评价语义构图的生成好坏,很大程度上只评估了最终的 GAN 网络是否有效。很多工作还加入了人工评分,虽给出了评分结果,但其几乎不可能被完全复现,这极大地阻碍了本领域的发展。

3.2 Seq-SG2SL 的动机

Seq-SG2SL 是我们针对组合爆炸问题提出的一个由场景图生成语义构图的框架。本节不谈框架本身,先讲个故事。

故事背景:老师需要教学生学习如何通过看建筑图纸去建楼。如图 7。

A 老师教快班。他指着一摞厚厚的图纸对学生们说:“看,这是之前的图纸,上面有按图纸建好的大楼地址,你们拿这些图纸去看看那些大楼,应该就能悟出来大楼是怎么建的了。以后我给你一张新图纸,你们就能建出大楼了。”学生们按照 A 老师的方法,纷纷去学了。当 A 老师测验时发现,几乎没有学生可以照图纸盖出大楼,A 老师生气地说:“还快班呢,这群学生也太没有悟性了,举一反三都不会。”

B 老师教慢班。他对学生们说:“我给大家一些图纸,今天我先教大家怎么建客厅,明天教怎么建厨房。我们的目标是先把每个房间的建造套路学到,再教大家怎么串起来建一整间房。最后再教你们怎么建栋楼。看看这些图纸,不必着急,我会告诉你们每一部分都和实际建筑里的哪一部分相对应,虽然整栋建筑看起来都不一样,但这些局部是很有套路的,掌握以后保管你们都会盖大楼。”果然,在 B 老师的悉心教导下,所有同学都很快通过了测验,连小笨笨源方都学会了怎么看图纸建大楼。

故事中,A 老师的学生虽然是快班的,都很聪明,但是大楼千变万化,学生们通过这些图纸很难学到其中的共性。而 B 老师的学生,虽然整体学习比较慢,记性也不好,但 B 老师通过教授建大楼所需要的一些基础知识,将这些具有共性的要点教给学生,结果笨鸟得以先飞。

场景图就好比建筑图纸,语义构图就好比大楼。A 老师的教学方法其实就遇到了组合爆炸的问题,B 老师通过教授最基础的建楼操作避免了组合爆炸的问题。

由此启发,我们提出了一种全新的视角,去看待由场景图生成语义构图的问题。语义构图是一个结果,我们要学习的不应该是直接这个结果,而是产生这个结果的过程。通过对更基础单元的学习,解决组合爆炸问题。

3.3 SLEU 的动机

为了解决缺乏直接自动化评估指标的问题,我们提出了一个新指标:semantic layout evaluation understudy,简称 SLEU。这个指标是受到著名的机器翻译指标 BLEU 启发而来。

背后的逻辑是这样的:

1)要想完成自动化评估,必须需要真值。
2)SLEU 的设计目的就是要度量一个生成的语义构图与真值之间的差异。

因此,遵循上述逻辑,我们类比了机器翻译指标 BLEU 的设计,将 BLEU 的基本概念由 1D 扩展到 2D,提出了 SLEU。

3.4 论文的贡献

1)提出了一个新的框架 Seq-SG2SL,将语义构图看作是一系列过程叠加的结果。和以往方法不同,AI 学的是生成过程而不是结果。这种序列到序列的学习方式可以解决组合爆炸问题。

2)提出了一个直接自动化评价语义构图生成好坏的指标 SLEU,将会解决本领域存在的结果复现问题,为不同构图生成方法的直接比较提供基础。

4. 方法要点简述

4.1 Seq-SG2SL 框架

什么决定了一张语义构图呢?是关系。因此,一个场景图中的关系三元组(主 – 谓 – 宾),决定了组成一张语义构图中的主语和宾语所对应的两个 bbox。其中主语和宾语所对应的 bbox,分别称为视觉主语(visual subject)和视觉宾语(visual object)。

由此,产生语义构图的过程可拆解为一系列基础动作片段,每一个基础动作片段称为一个 brick-action code segments(BACS)。每一个 BACS 执行的操作就是将一个视觉主语和一个视觉宾语摆放到语义构图中,分别调整他们的类别,位置以及大小。而每一 BACS 恰恰由其在场景图中所对应的关系三元组所决定。一个关系三元组主 - 谓 - 宾顺序相接,三个词组成了一个基础语义片段,我们叫做一个 semantic fragments(SF)。如图 8,tree by sidewalk 就是一个 SF,它对应的图中 BACS Sequence 所示的那 10 个 code(c0002 … h14)就是一个 BACS,而这 10 个 code 执行的结果就是最右侧 layout 图中 tree 和 sidewalk 两个 bbox。

将一系列 SF 进行串联,形成了 SF 序列(SF sequence)。这个 SF 序列所对应的是一个由每一个对应 BACS 所串联形成的序列(BACS sequence)。这两个序列,就像两种语言,我们需要做的只是让机器学习从 SF 语言“翻译”到 BACS 语言就好啦。当然,为了保有 scene graph 中的有向图信息,我们额外维护了一个节点序列(Node sequence),主要为了确定 sequence 中的哪些实体属于同一个实体,并且能够通过节点序列直接将场景图中的实体属性传递到语义构图中的 bbox 上。这样,整个 Seq-SG2SL 框架做到了灵活且通用。

回想一下,这个过程是不是像我们之前讲过的那个老师教学生从设计图纸建楼的故事。我们看到了设计图纸(scene graph)中的一个局部(一个 SF),然后我们去学习大楼(semantic layout)中的这个对应局部是怎么建的(学习一个 BACS),最后再综合,教学生去建整幢建筑。这样做是不是很直观,也符合客观规律,我们不要求我们的学生(模型)都是天才般的存在,但是需要我们这个老师教授方式得法,才能最终达到好的效果。

框架的主要思想就讲完了,细节的话感兴趣的读者可以去看论文。

4.2 SLEU 指标

在介绍 SLEU 之前,我们希望读者已经熟悉什么是机器翻译中的 BLEU 指标。

BLEU 的基础是 n -gram。n-gram 是指文本中连续出现的 n 个词语(word),是基于(n-1)阶马尔科夫链的一种概率语言模型。简单地说,其假设当前第 n 个词出现的概率,仅取决于其前(n-1)个词,而跟更前的词无关。在机器翻译中,BLEU 评估的基本单位是 word,一个 unigram 代表一个 word,评估翻译的充分性,而较长的 n -gram 代表一个 word 序列,评估翻译的流畅性。BLEU 的思想是将句子拆分为 n -grams,评估局部相似度,进而对整体翻译效果进行打分。

对于机器翻译而言,最小可拆分单元是一个 word,那对于语义构图生成问题而言,最小可拆分单元又是什么?是一个关系。因此,对于语义构图生成来说,我们的 unigram 变为了一个关系。评估充分性就是评估单个关系是否匹配;评估流畅性就是评估 n 个关系是否会同时匹配。我们同样做了 n 阶马尔科夫链的假设,即:一个关系的出现,只取决于不超过(n-1)个其他关系,而和更多的关系无关。由于场景图和语义构图中的物体是一一对应的,因此没有 precision 和 recall 的概念,我们称对单个关系的评估,叫做 unigram accuracy,而对多个关系的评估叫做 n -gram accuracy。

具体设计我就不在这里细讲了,将关系看做 unigram 是我们的核心思想。我们的工作只是将这个概念设计出来,将 BLEU 的概念由 1D 推广到 2D 罢了。感兴趣的读者可以参考论文,指标的实现也将会开源。

5. 实验结果预览

上图是一些利用 Seq-SG2SL 在测试集上的生成的结果,其中第一行为输入,第二行为生成的语义构图,第三行是一个参考的语义构图及其对应图像。可以看出,我们的结果可以对含有多个关系的复杂场景进行构图生成。

这里只做个引子,更多定量的分析在论文中详细阐述,主要包括与 baseline 算法的比较,以及一些关于具体设计的必要性实验等。由于只是导读,结论及未来工作等在此也概不赘述啦,感兴趣的读者可以直接看论文。

本文是 ICCV 2019 录用论文《Seq-SG2SL:基于序列到序列学习的由场景图生成语义构图的算法》的导读,并不涉及论文中的全部内容,只重点阐述我们对一些问题的思考。虽以论文为背景,但行文上试图以更科普的形式逐步展示给读者,期望对后续研究及应用场景有所启发。

本文由 @源方执笔,成果是几位小伙伴共同的结晶 @帆月 @坎特 @铭杨,我们来自阿里 AI Labs 感知实验室。如果您对研究感兴趣,或者对业务方向有灵感,欢迎您致信:[boren.lbr@alibaba-inc.com],我们会很高兴和您讨论。

论文下载链接:https://arxiv.org/abs/1908.06592

参考文献:
[1] Qiao et al., MirrorGAN: Learning Text-To-Image Generation by Redescription, CVPR 2019.
[2] Johnson et al., Image Retrieval Using Scene Graphs, CVPR 2015.
[3] https://github.com/SummitKwan/transparent_latent_gan
[4] Zhang et al., StackGan: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks, ICCV 2017.
[5] Johnson et al., Image Generation from Scene Graphs, CVPR 2018.
[6] Krishna et al., Visual Genome: Connecting Language and Vision Using Crowdsourced Dense Image Annotations, IJCV 2017.


本文作者:源方

阅读原文

本文来自云栖社区合作伙伴“阿里技术”,如需转载请联系原作者。

退出移动版