学习
实践
活动
工具
TVP
写文章

《Image Generation from Scene Graphs》

论文分享

作者:刘忠雨

编辑整理:萝卜兔

本周我们来分享一篇利用图卷积模型大大提高生成图像语意丰富性的文章,一作是来自李飞飞实验组的 Justin Johnson,这位小哥的文章总是会有开源代码保证,点个赞先。由语意到生成图像,需要神经网络具有创造能力。所以,本文开头就引用了一句名言: What I cannot create, I do not understand. 神经网络要想真正理解我们的视觉世界,只有识别能力是不行的,还需要有创造的本领。

相关工作

1

图像生成

随着卷积网络特别是生成对抗网络(GAN)的兴起,更高分辨率,更具真实性的图像生成效果也在不断被刷新。以 StackGAN 为代表的生成模型,以自然语言处理为基础去生成图像,这需要整个生成模型能够解析句式,理解语意再去生成图像,当然也同时借用了multi-stage cascaded refinement与GAN的思路让生成的图像更逼真。但是本文则另辟蹊径,用Scene Graph 这一显式的语意表达工具来代替自然语言描述条件语意,这能让模型产生包含更复杂语意关系的图像。

2

Scene Graph

Scene Graph 是一个表示场景语意信息的有向图,节点代表物体,边代表物体之间的关系。一幅图的全部语意,就可以用 Scene Graph 的形式抽取出来。本文用到的数据集,都是人工标记好的 Scene Graph。下图中,可以看到一个Scene Graph 的示例:

本文方法

本文目的是从给定的一个 Scene Graph 中生成包含对应语意的真实图像。要实现这一目的,面临着三大挑战:

需要一个处理 graph structure input 的方法

确保生成的图像与Scene Graph 里面的物体与关系对应上

生成的图像要真实

针对这样的三个挑战,作者提出 image generation network f,输入 scene graph G 和 噪声 z 输出一张图:

f 由Graph Convolution Network、Layout prediction、Cascaded Refinement Network 三部分组成,见下图:

1. Scene Graph

给定物体类别集合C,关系类别集合R,一个 scene graph 可表示为元组 (O, E),其中O是graph中的物体集合 ,E 是graph中的关系集合,边作者将每种物体和关系以embedding vector 的形式输入进网络。

2. Graph Convolution Network

为了对 Scene graph 进行 端对端的学习,作者借用了 Graph Convolution Network 的方法。图卷积是卷积神经网络在 graph domain 的自然推广,其建模思路如下图所示:

这里分别使用了三个函数 (实验中用MLP来学习)来抽象起始节点,关系,终端节点的向量表达:

关系的抽象表达比较简单

起始节点的抽象表达

终端节点的抽象表达

在graph中,有的节点只做起始节点(如上图v1,v3),有的只做终端节点(上图v2,所以上图v2和v3那里有个错误,v2只关联go,v3只关联gs),还有的两种情况都有。我们将计算得到的两种表达送入下式得到节点最终的统一表达:

h 是一个average pooling function,对不同长度的集合都能得到一样长度的表达。

3. Scene Layout

经过前面图卷积的计算之后,每个物体都能得到更高级的特征表达,根据这个特征表达,我们需要预测相关物体在最终生成图中的位置信息和分割信息,模型如下:

分割信息的预测用的是一个 mask regression network,直接预测一个soft binary 的mask,位置信息的预测用的是一个 box regression network,预测四条边的相关位置的比例

4. Cascaded Refinement Network

这里将上一步生成的tensor送到Cascaded Refinement Network里面去进行图像生成工作,具体可以参考 《Cascaded Refinement Network》 的原始论文,主要思路是 coarse-to-fine 的方式进行级联优化。

5. Discriminators

为了让图像更真实,作者加入了分别对image 和 object 加上了对抗损失,保证图像和物体都看上去更真实。

当然,为了每个 object 是可识别的,作者还加了 auxiliary classifier 对每个物体进行分类训练。

6. Training

整个网络的 loss 分为6部分:

Box loss预测物体的位置信息;

Mask loss pixelwise cross-entropy 预测物体的分割信息;

Pixel loss生成的图像与真实的图像在像素上一致;

Image adversarial loss让生成的图像更真实;

Object adversarial loss让生成的图像中的物体更真实;

Auxiliarly classifier loss让生成的物体可被识别。

实验

首先作者对比了与StackGAN方法在 Inception Score 上的衡量结果,Inception 是一个量化的计算指标,值越高,代表图像越真实自然。

这里可以重点看一下如果模型去掉图卷积或relationship模块,Inception值会特别低。当然这个模型的最终表现还是比StackGAN 的效果低一点。但是在生成图像与语意契合度的对比实验上,本文方法要比StackGAN要好的多。

这里作者运用真人问答的方式来统计两种方法的表现,左边是StackGAN,右边是本文方法。同时,作者也对比了两个方法在语意丰富性上面的表现,本文生成的图像在语意层面整体要丰富的多。

总结

相比直接从文字生成图像的方法而言,本文利用图卷积直接从scene graph中显式地去推理物体及其之间的关系,这样生成的图像在语意层面会有更好的保障。当然,可以看到文中模型训练过程是一整个非常大的pipeline,对实验的软实力和硬实力都是一个非常大的挑战,作为普通人的我们,真是羡慕不已。

参考链接:

论文:https://github.com/google/sg2im

StackGAN:

https://arxiv.org/pdf/1612.03242.pdf

Cascaded Refinement Network:

https://arxiv.org/pdf/1707.09405.pdf

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180710A099I900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券