【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]这是李飞飞团队 2018 年被 CVPR 接收的一篇文章 PDF 下载链接为 https arxiv org abs 1804 01622 2018 7 6 添加 Github 代码下载链接 https github com google sg2im 在这里放上我 CSDN 的下载链接 https download csdn net download luolan9611

这是李飞飞团队2018年被CVPR接收的一篇文章。PDF下载链接为:https://arxiv.org/abs/1804.01622

(2018.7.6添加)Github代码下载链接:https://github.com/google/sg2im

在这里放上我CSDN的下载链接:

https://download.csdn.net/download/luolan9611/

文件包里有我根据这篇论文做的讲解PPT(如果你要向别人做分享的话,可以在我PPT的基础上进行修改)、这篇论文带注释的PDF,还有这篇论文中提到的几篇论文比如StackGAN,比如GoodFellow大神的GAN的论文等。如有错误,请多指教!

摘要

现有的根据自然语言生成图像的方法,难以生成语言描述中包含多个物体和之间关系的图。于是,作者提出了一个图像生成网络模型,该模型用图卷积处理输入场景图,根据bounding box等计算场景布局,然后把布局用级联细化网络转换成图像。这个网络是针对一对鉴别模型进行训练的,Dimg和Dobj分别用来鉴别真实图像和真实对象,来确保输出的图像真实自然。

引言

现有的由文本生成图像的方法主要是结合递归神经网络(RNN)和生成对抗网络(GAN)来实现的。此前出现了很多效果让人惊叹的由文本转图的方法,其中有代表性的为ICCV 2016 2017的StackGAN方法,它在生成花鸟方面的效果确实Amazing,而且能达到256*256的高分辨率。要知道,在这篇文章之前,生成图像的分辨率几乎都局限在64*64。

下面展示一下StackGAN根据文本描述语言生成的图像效果:

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

比如上图中第二列的鸟,This bird is white with some black on its head and wings, and has a long orange beak. 这只鸟是白色的,脑袋和翅膀上带点黑色,有一个橘黄色的长喙。生成的效果哇塞,厉害了我的天哪。

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

然而,尽管这些方法生成的效果令人惊艳。但当它们碰到语言描述中包含有多个物体和复杂物体关系的句子时,往往束手无措。

比如这样的描述:

A sheep by another sheep standing on the grass with sky above and a boat in the ocean by a tree behind the sheep.

这句话是什么意思呢哈哈哈哈:

 

一只绵羊和在它旁边的另一只绵羊,

站在草上,

天空在上面,

船在海洋上,

海洋在绵羊后边的树旁边。

多么诗意的画面啊,一首小短诗就这样诞生了。

给大家看看StackGAN生成的这张图是什么效果:

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

额霉zing,这都是些什么东西?我的诗意的画面呢?

让我们来看看李飞飞团队生成的图像吧:

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

嗯,就是分辨率低了点。但是该有的物体都有啦,而且确实是符合我们所描述的复杂关系的。

他们团队是怎么做到的呢?

首先,将文本转化为场景图

 

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

[47]Generatingsemanticallyprecise scene graphsfrom textualdescriptions for improved image retrieval.In EMNLP Vision and Language Workshop, 2015. 1, 2

场景图是一种数据结构,它的节点代表对象,边代表对象之间的关系。作者的团队先将文字描述转换成场景图,然后由场景图作为模型的输入,最后得到生成的图像。

模型

        在讲本文的模型之前,先给大家引入生成对抗网络的概念,“一个 GAN (生成对抗网络)框架,最少(但不限于)拥有两个组成部分,一个是生成模型 G,一个是判别模型 D。在训练过程中,会把生成模型生成的样本和真实样本随机地传送一张(或者一个 batch)给判别模型 D。判别模型 D 的目标是尽可能正确地识别出真实样本(输出为“真”,或者1),和尽可能正确地揪出生成的样本,也就是假样本(输出为“假”,或者0)。而生成模型的目标则和判别模型相反,就是尽可能最小化判别模型揪出它的概率。这样 G 和 D 就组成了一个 min-max game,在训练过程中双方都不断优化自己,直到达到平衡——双方都无法变得更好,也就是假样本与真样本完全不可区分。” 

本文基于两个模型训练:

1.图像生成模型f

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

    模型的输入是描述对象和之间关系的场景图,场景图被Graph Convolution network [1]处理,图卷积网络沿着场景图的边计算所有对象的嵌入向量。这些向量被传入到Object Layout Network[2]中用于预测对象的bounding boxesSegmentation masks,将向量的边界框和掩膜结合就能得到对象的布局,将所有对象布局结合就能形成scene layout。然后用一个级联细化网络Cascaded Refinement Network(CRN)[3]将布局转换为生成图像。这个模型是针对一对鉴别器网络进行对抗训练的,训练的时候模型观察真实的对象边界框和分段掩膜,测试的时候这些用的是预测的值。

[1]图卷积网络是由多个图卷积层构成的,单个图卷积层如下所示:

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

[2]对象布局网络由两部分组成,一部分是Mask regression network,一部分是Box regression network,如下图所示:

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

[3]级联细化网络Cascaded Refinement Network

 

CRN由一系列的卷积细化模块构成,每个模块之间是2倍空间分辨率的关系,这就允许以一种由粗到精的方式去生成图片。每个模块接收根据模块输入的分辨率下采样(缩小)后的场景布局和前一个模块的输出。这些输入串联并传递到卷积层,然后在传递到下一个模块之前对输出进行上采样(放大)。

2.一对判别模型Dimg和Dobj

 

图像判别器Dimg确保生成的图像的整体外观是真实的,它将规则间隔,重叠的图像块集合分类为真实或伪造。

 

对象判别器Dobj确保图像中的每个对象看起来都是真实的;其输入是一个对象的像素,使用双线性插值法裁剪并重新缩放到固定大小。除了将每个对象分类为真实还是假的,Dobj还确保每个对象都可以使用预测对象类别的辅助分类器来识别; Dobj和f都尝试最大化Dobj正确分类对象的概率。

训练过程简介

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

训练的时候有6个loss值:

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

实验结果

1.可以生成多对象的场景,甚至是同一对象类型生成多种实例。

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]   

比如(d)中的两辆公交车不同,(f)中不同的花椰菜,(g)中三个人都是不一样的。(左边四列是基于visual genome数据集的,右边四列是基于coco的。 )

2.生成的例子表明该方法生成图像时遵循了对象之间的关系。

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

3.具有生成复杂图像的能力

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

评估结果

作者及团队在Amazon Mechanical Turk平台上做评估,分别用StackGAN和自己的方法根据Caption生成图片,让用户选择更匹配caption的图片,发现结果比StackGAN要好1倍。

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

又让用户辨认图中的单个物体,对象的召回率和背景的召回率也都比StackGAN强很多。

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

 

好啦,今天的论文分享就到这里,欢迎交流。在这里我放上CSDN的下载链接(如果你要向别人做分享的话,可以在我PPT的基础上进行修改)https://download.csdn.net/download/luolan9611/,文件包里有我根据这篇论文做的PPT、这篇论文带注释的PDF,还有这篇论文中提到的几篇论文比如StackGAN,比如GoodFellow大神的GAN的论文等。如有错误,请多指教!

PPT小图示例:

【CVPR 2018】Image Generation from Scene Graphs从场景图中生成图像 [文本转图]

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208126.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午12:17
下一篇 2026年3月19日 下午12:18


相关推荐

  • 数据仓库——数仓分层

    数据仓库——数仓分层数仓分层一 分层的作用二 ODS opreationald 三 DWD datawarehous 四 DIM 五 DWS datawarehous 六 DM datamarket 七 APP ADS 一 分层的作用数仓分层的目的是 逐层解耦 减少重复计算 降低烟囱式开发 越到底层 越接近业务发生的记录 越到上层 越接近业务目标 具体如下 清晰数据结构 每一个数据分层都有它的作用域和职责 在使用表的时候能更方便地定位和理解 实现业务数据解耦

    2026年3月17日
    2
  • gis如何加载影像图_怎么使用倒车影像倒车

    gis如何加载影像图_怎么使用倒车影像倒车SAGA的全称为SystemforAutomatedGeoscientificAnalyses,它是免费的地理信息系统开源软件,SAGA有多个标准的模块库,详细介绍可参考:https://en.wikipedia.org/wiki/SAGA_GIShttps://sagatutorials.wordpress.com/about-saga-gis/(1)使用SAGAGIS导…

    2026年1月24日
    5
  • Windows 自己主动关机命令 shuntdown

    Windows 自己主动关机命令 shuntdown

    2021年12月1日
    64
  • Spring 事务隔离级别有哪些?

    Spring 事务隔离级别有哪些?DEFAULT 采用 DB 默认的事务隔离级别 READ UNCOMMITTED 读未提交 READ COMMITTED 读已提交 REPEATABLE READ 可重复读 SERIALIZABLE 串行化 Spring 事务的传播机制有哪些 propagation required 当前方法 必须在一个具有事务的上下文中运行 如有客户端有事务在进行 那么被调用端将在该事务中运行 否则的话重新开启一个事务 如果被调用端发生异常 那么调用端和被调用端事务都将回滚 propa

    2026年3月26日
    3
  • css中padding中样式的顺序含义

    css中padding中样式的顺序含义

    2022年1月19日
    79
  • Java 和 Python 有哪些区别?「建议收藏」

    Java 和 Python 有哪些区别?「建议收藏」区别一、python虚拟机没有java强,java虚拟机是java的核心,python的核心是可以很方便地使用c语言函数或c++库。二、python是全动态性的,可以在运行时自己修改自己的代码,java只能通过变通方法实现。python的变量是动态的,而java的变量是静态的,需要事先声明,所以javaide的代码提示功能优于pythonide。三,python的产生几十年了,几十年前面向过程是主流,所以用python有好多程序用的是面向过程设计方法,很多概念从c语言过来的,class在python中是

    2022年7月8日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号