Text to image论文精读 DM-GAN: Dynamic Memory Generative Adversarial Networks for Text-to-Image Synthesis 用于文本图像合成的动态记忆生成对抗网络

  • 一、原文摘要
  • 二、关键词
  • 三、为什么提出DM-GAN?
  • 四、模型结构
    • 4.1、模型组成
    • 4.2、动态记忆机制
      • 4.2.1、Memory Writing
      • 4.2.2、Key Addressing
      • 4.2.3、Value Reading
      • 4.2.4、Response
    • 4.3 记忆写入门
    • 4.4 响应门
    • 4.5、损失函数
      • 4.5.1、对抗损失
      • 4.5.2、CA损失
      • 4.5.3、DAMSM损失
  • 五、实验
  • 六、注意力与动态记忆
  • 扩展阅读

这篇文章提出了动态记忆生成对抗网络(DM-GAN)来生成高质量的图像。该方法可以在初始图像生成不好时,引入动态存储模块来细化模糊图像内容,从而能够从文本描述中更加准确地生成图像。

文章被2019年CVPR(IEEE Conference on Computer Vision and Pattern Recognition)会议收录。

论文地址: https://arxiv.org/abs/1904.01310?context=cs

代码地址: https://github.com/MinfengZhu/DM-GAN

本博客是精读这篇论文的报告,包含一些个人理解、知识拓展和总结。

一、原文摘要

在本文中,我们着重于从文本描述生成真实的图像。现有的方法首先生成形状和颜色粗糙的初始图像,然后将初始图像细化为高分辨率图像。大多数现有的文本图像合成方法都存在两个主要问题。(1) 这些方法在很大程度上取决于初始图像的质量。如果初始图像没有很好地初始化,以下过程很难将图像细化到令人满意的质量。(2) 当描述不同的图像内容时,每个单词都具有不同的重要性,但是,在现有的图像细化过程中使用不变的文本表示。在本文中,我们提出了动态记忆生成对抗网络(DM-GAN)来生成高质量的图像。该方法在初始图像生成不好时,引入动态存储模块来细化模糊图像内容。设计了一个记忆写入门,根据初始图像内容选择重要的文本信息,使我们的方法能够从文本描述中准确地生成图像。我们还利用响应门自适应地融合从存储器读取的信息和图像特征。我们在加州理工大学UCSD Birds 200数据集和Microsoft Common Objects in Context数据集上评估DM-GAN模型。实验结果表明,我们的DM-GAN模型与最先进的方法相比具有良好的性能。

二、关键词

Text-to-Image Synthesis, Generative Adversarial Nets, Computer Vision

三、为什么提出DM-GAN?

在DM-GAN之前的多阶段图像生成的方法(StackGAN、StackGAN++、AttnGAN)存在两个问题。

1、生成结果在很大程度上取决于最初合成的图像(即第一阶段的图像)的质量。如果初始图像生成不好,则图像细化过程无法生成高质量图像。

2、每个单词在描述图片内容上都有不同等级的信息,而之前的方法仅仅使用相同的单词影响度。
就是说每个单词对图片的内容的作用都不一样,重要性也不一样,怎样将单词与要生成的图像的不同内容很好的关联。

本文对以上问题提出了解决方案:

对于第一个问题,引入一个记忆机制来处理生成的初始图像。
在GAN里添加一个键值存储结构。将初始图像的粗略特征送入键值存储结构来查询特征,利用查询到的结果来对初始图像进行修正

对于第二个问题,引入了一个记忆写入门来动态选择与生成的图像相关的单词。利用图像信息确定每个单词的重要性,进行细化,这使得生成的图像很好地依赖于文本描述。
响应门用于自适应地接收来自图像和存储器的信息,在每个图像细化过程中,根据初始图像和文本信息动态地写入和读取存储器组件。

比如:AttnGAN对所有单词都一视同仁,它使用了一个相同的注意模块来表示单词。但DM-GAN提出的存储模块能够发现图像生成的这种差异,因为它基于初始图像内容动态地选择重要的单词信息。

四、模型结构

4.1、模型组成

模型由两个阶段组成:初始图像生成和基于动态记忆的图像细化。

初始图像生成阶段:与之前的模型相似,首先通过文本编码器将输入文本描述转换为一些特征向量(如句子特征向量和单词特征向量),然后句子特征通过CA模块(流形插值+加入随机噪声)、生成器部分(全连接层+上采样+卷积)生成具有粗糙形状和少量细节的初始图像。

动态记忆生成阶段:将更多细粒度的视觉内容添加到模糊初始图像中,以生成照片逼真图像xix_{i}xi​,xi=Gi(Ri−1,W)x_{i}=G_{i}\left(R_{i-1}, W\right)xi​=Gi​(Ri−1​,W),其中Ri−1R_{i-1}Ri−1​是上一阶段的图像特征,即细化阶段可以重复多次。

动态记忆的图像细化阶段由四个部分组成:记忆写入、键寻址,键值读出,响应(Memory Writing, Key Addressing, Value Reading, and Response ),利用记忆写入门来突出重要单词信息,利用响应门自适应地融合从存储器读取的信息和图像特征。

Memory Writing:将文本信息存储到key-value结构化记忆中以供进一步检索
Key Addressing和Value Reading:从记忆模块读取特征,以改善和细化低质量图像的视觉特征。
Response:控制图像特征和记忆的读取的融合

4.2、动态记忆机制

记忆网络使用显式的存储和注意力的观念,可以更有效地推理记忆中的答案。它首先,将信息写入外部存储,然后根据关联概率从记忆插槽(memory slot)中读取信息。

首先定义 W为输入的单词特征,x为图像,RiR_iRi​为图像特征,T为单词的数量,NwN_wNw​是单词特征的维数,N为图像像素数,图像像素特征是NrN_rNr​维向量 。动态记忆通过键和值之间的非平凡变换,使用更有效的方式融合文本和图像信息,从而优化图像。
W={w1,w2,…,wT},wi∈RNwRi={r1,r2,…,rN},ri∈RNr\begin{array}{l} W=\left\{w_{1}, w_{2}, \ldots, w_{T}\right\}, w_{i} \in \mathbb{R}^{N_{w}} \\ R_{i}=\left\{r_{1}, r_{2}, \ldots, r_{N}\right\}, r_{i} \in \mathbb{R}^{N_{r}} \end{array}W={w1​,w2​,…,wT​},wi​∈RNw​Ri​={r1​,r2​,…,rN​},ri​∈RNr​​

4.2.1、Memory Writing


mi=M(wi),mi∈RNmm_{i}=M\left(w_{i}\right), m_{i} \in \mathbb{R}^{N_{m}}mi​=M(wi​),mi​∈RNm​

其中,M(·)表示1×1卷积运算.

记忆写入就是编码先验知识,记忆写入将文本特征经过一次1*1卷积运算嵌入到n维的记忆特征空间中。

4.2.2、Key Addressing

αi,j=exp⁡(ϕK(mi)Trj)∑l=1Texp⁡(ϕK(ml)Trj)\alpha_{i, j}=\frac{\exp \left(\phi_{K}\left(m_{i}\right)^{T} r_{j}\right)}{\sum_{l=1}^{T} \exp \left(\phi_{K}\left(m_{l}\right)^{T} r_{j}\right)}αi,j​=∑l=1T​exp(ϕK​(ml​)Trj​)exp(ϕK​(mi​)Trj​)​

其中exp(x)是高等数学里以自然常数e为底的指数函数:exe^xex
ϕK()\phi_{K}()ϕK​()是将键(key)特征映射到相应维度上的1*1卷积核。
αi,j\alpha_{i, j}αi,j​表示第i个记忆和第j个图像特征之间的相似概率、相似度

键寻址就是使用key memory取得相关的记忆, 计算每个记忆位置的权重

4.2.3、Value Reading

oj=∑i=1Tαi,jϕV(mi)o_{j}=\sum_{i=1}^{T} \alpha_{i, j} \phi_{V}\left(m_{i}\right)oj​=∑i=1T​αi,j​ϕV​(mi​)

ϕV()\phi_{V}()ϕV​()表示值(value)特征映射到相应维度上的1*1卷积核。
记忆表达形式定义为根据相似概率对值记忆进行加权求和。

4.2.4、Response

在接收到输出后,将当前图像和输出表示结合起来,以形成新的图像特征,新的图像特征为:
rinew =[oi,ri]r_{i}^{\text {new }}=\left[o_{i}, r_{i}\right]rinew ​=[oi​,ri​]
得到RnewR^{new}Rnew后,通过上采样、残差块将新的图像特征放大为高分辨率图像,最后通过3*3的卷积得到细化图像。

4.3 记忆写入门


首先将图像特征和单词特征变换成同维度,相结合,形成记忆写入门:giwg_{i}^{w}giw​

giw(R,wi)=σ(A∗wi+B∗1N∑i=1Nri)g_{i}^{w}\left(R, w_{i}\right)=\sigma\left(A * w_{i}+B * \frac{1}{N} \sum_{i=1}^{N} r_{i}\right)giw​(R,wi​)=σ(A∗wi​+B∗N1​∑i=1N​ri​)
其中,giwg_{i}^{w}giw​是内存写入门,σ是sigmoid函数,A是1*NwN_wNw​的矩阵,B是1*NrN_rNr​的矩阵。

然后结合图像和文字特征编写记忆slot(插槽):mim_{i}mi​

mi=Mw(wi)∗giw+Mr(1N∑i=1Nri)∗(1−giw)m_{i}=M_{w}\left(w_{i}\right) * g_{i}^{w}+M_{r}\left(\frac{1}{N} \sum_{i=1}^{N} r_{i}\right) *\left(1-g_{i}^{w}\right)mi​=Mw​(wi​)∗giw​+Mr​(N1​∑i=1N​ri​)∗(1−giw​)
其中,mim_{i}mi​是记忆slot(插槽),MwM_{w}Mw​和MrM_{r}Mr​表示1*1的卷积运算。

4.4 响应门


利用自适应选通机制,来动态控制信息流和更新图像特征
gir=σ(W[oi,ri]+b)rinew =oi∗gir+ri∗(1−gir)\begin{aligned} g_{i}^{r} &=\sigma\left(W\left[o_{i}, r_{i}\right]+b\right) \\ r_{i}^{\text {new }} &=o_{i} * g_{i}^{r}+r_{i} *\left(1-g_{i}^{r}\right) \end{aligned}gir​rinew ​​=σ(W[oi​,ri​]+b)=oi​∗gir​+ri​∗(1−gir​)​
其中,girg_{i}^{r}gir​是信息融合的响应门,σ是sigmoid函数 ,W是参数矩阵,b是偏移量。

4.5、损失函数

总的损失函数为:L=∑iLGi+λ1LCA+λ2LDAMSML=\sum_{i} L_{G_{i}}+\lambda_{1} L_{C A}+\lambda_{2} L_{D A M S M}L=∑i​LGi​​+λ1​LCA​+λ2​LDAMSM​

其有三项,第一项为对抗损失(各个生成器的损失),第二项为CA(条件反射增强 )损失,第三项为DAMSM(深层注意多模态相似模型)损失,λ1和λ2为权重。

4.5.1、对抗损失

对抗损失就是生成器的损失,相关介绍可看:StackGAN++博文,损失函数为:
LGi=−12[Ex∼pGilog⁡Di(x)+Ex∼pGilog⁡Di(x,s)]L_{G_{i}}=-\frac{1}{2}\left[\mathbb{E}_{x \sim p_{G_{i}}} \log D_{i}(x)+\mathbb{E}_{x \sim p_{G_{i}}} \log D_{i}(x, s)\right]LGi​​=−21​[Ex∼pGi​​​logDi​(x)+Ex∼pGi​​​logDi​(x,s)]

与之前相同,第一项是使生成的图像尽可能真实的无条件损失,第二项是使图像与输入句子匹配的条件损失。

其中的D:
LDi=−12[Ex∼pdata log⁡Di(x)+Ex∼pGilog⁡(1−Di(x))⏟unconditional loss ,Ex∼pdata log⁡Di(x,s)+Ex∼pGilog⁡(1−Di(x,s))]⏟conditional loss ,\begin{aligned} L_{D_{i}} &=\underbrace{-\frac{1}{2}\left[\mathbb{E}_{x \sim p_{\text {data }}} \log D_{i}(x)+\mathbb{E}_{x \sim p_{G_{i}}} \log \left(1-D_{i}(x)\right)\right.}_{\text {unconditional loss }}, \\ & \underbrace{\left.\mathbb{E}_{x \sim p_{\text {data }}} \log D_{i}(x, s)+\mathbb{E}_{x \sim p_{G_{i}}} \log \left(1-D_{i}(x, s)\right)\right]}_{\text {conditional loss }}, \end{aligned}LDi​​​=unconditional loss −21​[Ex∼pdata ​​logDi​(x)+Ex∼pGi​​​log(1−Di​(x))​​,conditional loss Ex∼pdata ​​logDi​(x,s)+Ex∼pGi​​​log(1−Di​(x,s))]​​,​

4.5.2、CA损失

LCA=DKL(N(μ(s),Σ(s))∥N(0,I))L_{C A}=D_{K L}(\mathcal{N}(\mu(s), \Sigma(s)) \| \mathcal{N}(0, I))LCA​=DKL​(N(μ(s),Σ(s))∥N(0,I))
其中µ(s)和∑(s)是句子特征的均值和对角协方差矩阵。

4.5.3、DAMSM损失

利用DAMSM损失来衡量图像和文本描述之间的匹配程度。DAMSM损失使得生成的图像更好地基于文本描述。损失函数可见:AttnGAN博文介绍。

五、实验

数据集:COCO、CUB
评价标准:Inception Score (IS), Fréchet Inception Distance (FID), R-precision
评价结果:实验结果表明,DM-GAN模型生成的图像质量高于其他方法,DM-GAN学习了更好的数据分布,且DM-GAN生成的图像更好地适应给定的文本描述,这进一步证明了所采用的动态记忆的有效性。

实验效果:


六、注意力与动态记忆


如上图,可视化了AttnGAN和DM-GAN选择的最相关的单词。注意到,当初始图像没有很好地生成时,注意机制无法准确地选择相关单词。

而本方法基于全局图像特征的动态存储模块来选择最相关的单词。如图6(a)所示,尽管生成了具有不正确红色胸脯的鸟,但动态存储器模块选择单词,即“白色”来校正图像。

DM-GAN在两个步骤中选择并组合单词信息和图像特征(参见图6(b))。memory writing步骤首先粗略地选择与图像相关的单词并将它们写入记忆。然后,key addressing步骤进一步从记忆中读取更多相关单词。

扩展阅读

下一篇:CogView: Mastering Text-to-Image Generation via Transformers(通过Transformer控制文本生成图像)

导航搜索:
文本描述生成图像博文一站式导航搜索(Text to Image博文汇总目录帖 T2I博文一站回顾)

Text to image论文精读 DM-GAN: Dynamic Memory Generative Adversarial Networks for t2i 用于文本图像合成的动态记忆生成对抗网络相关推荐

  1. 生成式对抗网络(GAN)-(Generative Adversarial Networks)算法总结(从原始GAN到....目前)

    本文将按时间顺序总结gan的paper(非所有,会挑选个人认为比较重要的),并将参考其它博客(会给出链接),如有侵权,请私信删除. 更新于:2020/08/19 IS 可以反应图像的生成质量(越大越好 ...

  2. GAN(Generative Adversarial Nets (生成对抗网络))

    一.GAN 1.应用 GAN的应用十分广泛,如图像生成.图像转换.风格迁移.图像修复等等. 2.简介 生成式对抗网络是近年来复杂分布上无监督学习最具前景的方法之一.模型通过框架中(至少)两个模块:生成 ...

  3. 生成对抗网络(GAN)的前沿进展(论文、报告、框架和Github资源)汇总

    生成模型(GenerativeModel)是一种可以通过学习训练样本来产生更多类似样本的模型.在所有生成模型当中,最具潜力的是生成对抗网络(Generative Adversarial Network ...

  4. AttnGAN: Fine-Grained Text to Image Generation with Attentional Generative Adversarial Networks论文解读

    题目:AttnGAN:具有注意的生成对抗网络的细粒度文本到图像生成 时间:2018 作者:Tao Xu, Pengchuan Zhang, Qiuyuan Huang, Han Zhang, Zhe ...

  5. 简单理解与实验生成对抗网络GAN

    from:https://blog.csdn.net/on2way/article/details/72773771 之前 GAN网络是近两年深度学习领域的新秀,火的不行,本文旨在浅显理解传统GAN, ...

  6. 生成对抗网络(GAN)的统计推断

    ©PaperWeekly 原创 · 作者 | 尹娟 学校 | 北京理工大学博士生 研究方向 | 随机过程.复杂网络单位 引言 该论文从统计学的角度去研究生成性对抗网络.GAN 在当前是一种非常流行的深 ...

  7. 海量案例!生成对抗网络(GAN)的18个绝妙应用

    全文共6531字,预计学习时长13分钟 图片来源:pexels.com/@gravitylicious 生成对抗网络(GAN)是生成模型的一种神经网络架构. 生成模型指在现存样本的基础上,使用模型来生 ...

  8. GAN生成对抗网络入门篇

    笔记整理:王小草 时间:2019年1月 一.GAN简介 1 背景 全称:generative adversarial network 生成式对抗网络(不一定是深度学习) 论文:https://arxi ...

  9. DL之GAN:生成对抗网络GAN的简介、应用、经典案例之详细攻略

    DL之GAN:生成对抗网络GAN的简介.应用.经典案例之详细攻略 目录 生成对抗网络GAN的简介 1.生成对抗网络的重要进展 1.1.1986年的RBM→2006年的DBN

最新文章

  1. B样条曲线 及 B样条曲面
  2. gffread处理工具
  3. linux docker 报错 Failed to get D-Bus connection: Operation not permitted
  4. AI:2020年WAIC世界人工智能大会2020年7月9日9:30-12:00开幕式《李彦宏、Elon Musk、马云等大佬演讲》
  5. mysql使用手册_mysql使用手册
  6. burpsuite小米手机抓包_使用burpsuite实现Android APP的HTTPS抓包
  7. nemesis什么车_狂野飙车9TrionNemesis介绍 S级车Trion复仇女神属性详解
  8. 近期状态几点简单思考
  9. Python脚本实现单据体背景色及字段前景色设置
  10. rails 2.3.5 + jquery ui datepicker 不能显示中文
  11. 学习笔记(02):19年录制Zookeeper、Dubbo视频教程 微服务教程分布式教程 SpringBoot教程整合-传统互联网架构到分布式架构的架构演变...
  12. eclipse svn回滚之前版本
  13. 如何在window和mac共用一个移动硬盘
  14. 请仔细核对自己的信息
  15. C语言 数字实现字母表 链表实现字母表
  16. SIW 2021 v11.6.0824 电脑信息综合检测工具技术员单文件版
  17. 计算机鼠标与键盘基本知识,电脑鼠标和键盘的基础设置方法
  18. 魏文王问扁鹊的注释_扁鹊见魏文王是怎么回事 魏文王问扁鹊的典故故事
  19. Hadoop集群中master: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).的解决和思路
  20. 2019下半年,快手准备赚多少钱?

热门文章

  1. 阿里 ahooks介绍(二): useRequest
  2. Linux内核机制总结内存管理之用户页错误文件描述符(二十八)
  3. neo4j安装APOC、aglo插件
  4. 技术人文|声音捐赠,一场PBL式技术预研实验
  5. abp.ajax get,ABP框架中导航菜单的使用及JavaScript API获取菜单的方法
  6. zillow房价预测比赛_Zillow预测: 未来一年美国房价将大幅上涨!
  7. python 取域名的两种方式
  8. 9.4 Example Applications
  9. 转载:开源专访】Sea.js创始人玉伯的前端开发之路
  10. 中国的计算机网络技术学校,计算机系网络营销学校,计算机网络技术有哪些专科学校...