[论文笔记]MirrorGAN: Learning Text-to-image Generation by Redescription
1、文献综述 文章链接:链接
文章题目:《MirrorGAN: Learning Text-to-image Generation by Redescription》
代码尚未公布
2、文献导读 首先看看摘要部分:摘要的大体内容:
文章中提出一种新的模型MirrorGAN模型,该模型实现 text-to-image 生成。模型包块三个模块:STEM、GLAM和STREAM。STEM是语义文本嵌入模块:生成单词和句子级别的嵌入;GLAM用于级联图像生成的全局局部协作注意力模块:可以从粗略到精细的尺度生成目标图像,同时利用局部单词注意和全局句子注意来逐步增强所生成图像的多样性和语义一致性;STREAM语义文本再生和对齐模块:试图从生成的图像中重新生成文本描述,该图像在语义上与给定的文本描述保持一致。
3、文献详细介绍 本文主要贡献有三点,如下所示:
? We propose a novel unified framework called MirrorGAN for modeling T2I and I2T together, specifically targeting T2I generation by embodying the idea of learning T2I generation by redescription. (提出了一个称为MirrorGAN的新型统一框架,用于一起对T2I和I2T进行建模,通过体现通过重新描述学习T2I生成的思想来专门针对T2I生成。)文章中提出的MirrorGAN的整体架构
? We propose a global-local collaborative attention model that is seamlessly embedded in the cascaded generators to preserve cross-domain semantic consistency and to smoothen the generative process. (提出了一个全局局部协作注意力模型,该模型无缝嵌入到级联生成器中,以保持跨域语义一致性并平滑生成过程。)
? Except commonly used GAN losses, we additionally propose a CE-based text-semantics reconstruction loss to supervise the generator to generate visually realistic and semantically consistent images. Consequently, we achieve new state-of-the-art performance on two benchmark datasets.(除了常用的GAN损失外,还提出了基于CE的文本语义重构损失,以监督生成器以生成视觉上逼真的和语义上一致的图像。)
文章图片
从上图可以看出,该结构由三部分组成,接下来分别介绍这三部分。
STEM: Semantic Text Embedding Module 该模块是基于循环神经网络(RNN),其中包括单词嵌入w和句子嵌入s。
w , s = R N N ( T ) w,s=RNN(T) w,s=RNN(T)
其中 T = { T l ∣ l = 0 , . . . , L ? 1 } T=\lbrace{T_l|l=0,...,L-1}\rbrace T={ Tl?∣l=0,...,L?1} L表示句子长度。 w = { w l ∣ l = 0 , . . . , L ? 1 } ∈ R D × L w=\lbrace{w^l|l=0,...,L-1}\rbrace\in R^{D×L} w={ wl∣l=0,...,L?1}∈RD×L是每个单词的隐藏状态 w l w^l wl的级联, s ∈ R D s\in R^{D} s∈RD是最后一个隐藏状态。
由于不同的描述文本可能具有相似的语义,那么生成的图像就同样应是相似的。因此,为了提高模型的鲁棒性,还使用了StackGAN中提出的conditioning augmentation method,从而产生更多的图像-文本对数据,增强对条件文本流形上的小扰动的鲁棒性。
特别地,这里仍然用到了条件增强模块:
s c a = F c a ( s ) s_{ca}=F_{ca}(s) sca?=Fca?(s)
GLAM: Global-Local collaborative Attentive Module in Cascaded Image Generators GLAM是由三个依次堆叠的图像生成网络组成,文章是采用AttnGAN中的基本结构,因为它具有良好生成逼真的图像的性能。我们用 { F 0 , F 1 , . . . , F m ? 1 } \lbrace{F_0,F_1,...,F_{m-1}}\rbrace { F0?,F1?,...,Fm?1?}表示视觉变压器,用 { G 0 , G 1 , . . . , G m ? 1 } \lbrace{G_0,G_1,...,G_{m-1}}\rbrace { G0?,G1?,...,Gm?1?}表示图像生成器。每个阶段的visual feature f i f_i fi?和generated image I i I_i Ii?可以表示为:
f 0 = F 0 ( z , s c a ) , f_0=F_0(z,s_{ca}), f0?=F0?(z,sca?),
f i = F i ( f i ? 1 , F a t t i ( f i ? 1 , w , s c a ) ) , ???????? i ∈ { 1 , 2 , . . . , m ? 1 } , f_i=F_i(f_{i-1},F_{att_i}(f_{i-1},w,s_{}ca)),\,\,\,\,\,\,\,\,i\in\lbrace{1,2,...,m-1}\rbrace, fi?=Fi?(fi?1?,Fatti??(fi?1?,w,s?ca)),i∈{ 1,2,...,m?1},
I i = G i ( f i ) , ???????? i ∈ { 1 , 2 , . . . , m ? 1 } , I_i=G_i(f_i),\,\,\,\,\,\,\,\,i\in\lbrace{1,2,...,m-1}\rbrace, Ii?=Gi?(fi?),i∈{ 1,2,...,m?1},
其中 Z ~ ( 0 , 1 ) Z~(0,1) Z~(0,1)表示随机噪音,F a t t i F_{att_i} Fatti??是一个由 A t t i ? 1 w Att^w_{i-1} Atti?1w?和 A t t i ? 1 s Att^s_{i-1} Atti?1s?两个部分组成的全局局部协同注意模型。
具体实施:首先,使用AttnGAN中提出的单词水平注意力模型来生成一个注意的单词上下文特征。 它在每个阶段都将单词嵌入w和视觉特征f作为输入。单词嵌入w首先被感知层 U i ? 1 U_{i-1} Ui?1?转换为视觉特征的底层公共语义空间,即 U i ? 1 w U_{i-1}w Ui?1?w,然后再乘以可视特征 f i ? 1 w f_{i-1}w fi?1?w以获得注意力分数,通过计算注意力分数与 U i ? 1 w U_{i-1}w Ui?1?w之间的内积,获得注意力词的语境特征:
A t t i ? 1 w = ∑ l = 0 L ? 1 ( U i ? 1 w l ) ( s o f t m a x ( f i ? 1 T ( U i ? 1 w l ) ) ) Att^w_{i-1}=\sum_{l=0}^{L-1} (U_{i-1}w^l)(softmax(f_{i-1}^T(U_{i-1}w^l))) Atti?1w?=l=0∑L?1?(Ui?1?wl)(softmax(fi?1T?(Ui?1?wl)))
然后提出一个句子级别的注意力模型,以在生成过程中对生成器施加全局约束。 类似于单词级别注意模型,首先将增强的句子矢量 s c a s_{ca} sca?通过感知层 V i ? 1 V_{i-1} Vi?1?转换为视觉特征的底层公共语义空间,即 V i ? 1 s c a V_{i-1}s_{ca} Vi?1?sca?。 然后,将其与视觉特征 f i ? 1 w f_{i-1}w fi?1?w逐元素相乘以获得注意力得分。 最后,通过计算注意力分数和 V i ? 1 s c a V_{i-1}s_{ca} Vi?1?sca?的逐元素相乘来获得注意力句子上下文特征:
A t t i ? 1 s = ( V i ? 1 s c a ) ?? o ?? ( s o f t m a x ( f i ? 1 ?? o ?? ( V i ? 1 s c a ) ) ) Att^s_{i-1}=(V_{i-1}s_{ca})\,\,o\,\,(softmax(f_{i-1}\,\,o\,\,(V_{i-1}s_{ca}))) Atti?1s?=(Vi?1?sca?)o(softmax(fi?1?o(Vi?1?sca?)))
其中的 U i ? 1 w U_{i-1}w Ui?1?w和 V i ? 1 s c a V_{i-1}s_{ca} Vi?1?sca?为各自的空间转换矩阵。
STREAM: Semantic Text REgeneration and Alignment Module 采用一种广泛应用的基于编码器的图像字幕框架(encoder-decoder-based image caption framework)作为基本的STREAM体系结构。图像编码器是在ImageNet上预训练的卷积神经网络(CNN),而解码器是RNN 。由末级生成器生成的图像 I m ? 1 I_{m-1} Im?1?馈入CNN编码器和RNN解码器如下:
x ? 1 = C N N ( I m ? 1 ) , x_{-1}=CNN(I_{m-1}), x?1?=CNN(Im?1?),
x t = W e T t , ???????? t ∈ { 0 , . . . , L ? 1 } , x_t=W_eT_t,\,\,\,\,\,\,\,\,t\in\lbrace{0,...,L-1}\rbrace, xt?=We?Tt?,t∈{ 0,...,L?1},
p t + 1 = R N N ( x t ) , ???????? t ∈ { 0 , . . . , L ? 1 } , p_{t+1}=RNN(x_t),\,\,\,\,\,\,\,\,t\in\lbrace{0,...,L-1}\rbrace, pt+1?=RNN(xt?),t∈{ 0,...,L?1},
首先将图片经过CNN网络形成 x ? 1 x_{-1} x?1?作为RNN的输入。 W e W_e We?主要是将单词嵌入向量映射为可视化特征矩阵。 p t + 1 p_{t+1} pt+1?表示建立在这些单词上的预测的概率。特别的是,与当训练整个网络时,固定此STREAM模块参数不变,这样做的好处是让整个训练过程更加稳定。
介绍完整个框架的三个部分,接下来看看网络生成器和判别器的损失函数。
1)生成器loss函数
L G i = ? 1 2 E I i ~ p I i [ log ? ( D i ( I i ) ) ] ? 1 2 E I i ~ p I i [ log ? ( D i ( I i , s ) ) ] {\mathcal L}_{G_i}=- \frac{1}{2}E_{I_i~ p_{I_i}}[\log(D_i(I_i))]-\frac{1}{2}{\Bbb E}_{I_i~ p_{I_i}}[\log(D_i(I_i,s))] LGi??=?21?EIi?~pIi???[log(Di?(Ii?))]?21?EIi?~pIi???[log(Di?(Ii?,s))]
其中第一项是visual realism adversarial loss,用于区分图像是视觉上真实的还是伪造的,第二项是text-image paired semantic consistency adversarial loss,用于确定基础图像和句子是否语义是一致的。
另外在模型STREAM阶段loss函数
L s t r e a m = ? ∑ t = 0 L ? 1 l o g ? p t ( T t ) {\mathcal L}_{stream}=-\sum_{t=0}^{L-1} log\,p_t(T_t) Lstream?=?t=0∑L?1?logpt?(Tt?)
所以最终生成器的loss函数为上面两种loss函数的相加:
L G = ∑ i = 0 m ? 1 L G i + λ L s t r e a m {\mathcal L}_{G}=\sum_{i=0}^{m-1}{\frak L}_{G_i}+\lambda {\mathcal L}_{stream} LG?=i=0∑m?1?LGi??+λLstream?
2)判别器loss函数
L D i = ? 1 2 E I i G T ~ p I i G T [ log ? ( D i ( I i G T ) ) ] ? 1 2 E I i ~ p I i [ log ? ( 1 ? D i ( I i ) ) ] {\mathcal L}_{D_i}=- \frac{1}{2}{\Bbb E}_{I_i^{GT}~ p_{I^{GT}_i}}[\log(D_i(I_i^{GT}))]-\frac{1}{2}{\Bbb E}_{I_i~ p_{I_i}}[\log(1-D_i(I_i))] LDi??=?21?EIiGT?~pIiGT???[log(Di?(IiGT?))]?21?EIi?~pIi???[log(1?Di?(Ii?))]
????????????????? ? 1 2 E I i G T ~ p I i G T [ log ? ( D i ( I i G T , s ) ) ] ? 1 2 E I i ~ p I i [ log ? ( 1 ? D i ( I i , s ) ) ] \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,- \frac{1}{2}{\Bbb E}_{I_i^{GT}~ p_{I^{GT}_i}}[\log(D_i(I_i^{GT},s))]-\frac{1}{2}{\Bbb E}_{I_i~ p_{I_i}}[\log(1-D_i(I_i,s))] ?21?EIiGT?~pIiGT???[log(Di?(IiGT?,s))]?21?EIi?~pIi???[log(1?Di?(Ii?,s))]
所以最终判别器的loss函数为:
L D = ∑ i = 0 m ? 1 L D i {\mathcal L}_{D}=\sum_{i=0}^{m-1}{\mathcal L}_{D_i} LD?=i=0∑m?1?LDi??
4、实验结果 【[论文笔记]MirrorGAN: Learning Text-to-image Generation by Redescription】在与其他模型进行实验结果比较时,作者从定量和定性两个方面进行比较:
1)定量:首先先看看作者选用的两个评价指标:
Inception Score 用于评价生成图像的清晰度和多样性(值越高越好)
R-precision scores(借鉴于AttnGAN) 用于评估所生成图像及其对应的文本描述之间的视觉语义相似性(值越高越好)
文章中针对不同数据集以及不同网络结构StackGAN++、AttnGAN等做了各种实验。实验数据如下:
文章图片
2)定性:先看看实验效果图,实验数据为COCO数据集,实验效果图如下:
文章图片
通过人的视觉选出实验好的结果如下:
文章图片
作者在完成与其他模型比较后,进行了消融实验,目的就是表明各个模块之间的重要性,详见原文。
推荐阅读
- 亦正亦邪话余罪???——我看《余罪:我的刑侦笔记》
- 读书笔记(《小狗钱钱》--给孩子的理财入门书)
- 电商练习项目笔记
- 小将阅读笔记之《如果大雪封门》22
- 笔记|直接利用pycharm打包python的一些经验总结()
- Effective|Effective Java学习笔记---------枚举和注解
- IT电子|一位IT人的新加坡出海笔记
- MyBatis-Plus笔记|MybatisPlus学习笔记------CRUD操作---insert操作
- 痛并快乐着
- linux笔记二(进程、用户、文件、网络)