【论文学习】文本-图像生成算法 AttnGAN

2,187 阅读7分钟

Fine-Grained Text to Image Generation with Attentional Generative Adversarial Networks

源码链接

简介

根据自然语言描述自动生成图像是艺术生成和计算机辅助设计等许多应用中的一个基本问题。基于生成对抗网络( Generative Adversarial Networks , GANs)的文本-图像合成方法(text-to-image synthesis methods) 是最进流行的策略。

基于GANs的方法中,一种常用的策略是将整个文本描述编码成一个全局的句子向量,作为基于网络的图像生成的条件,然而这种策略仅仅局限于全局句子向量,缺乏单词层面的重要细粒度信息,从而阻碍了高质量图像的产生。为克服这个问题,文中提出了一种注意力驱动的、多阶段的细粒度文本-图像的注意力生成对抗网络(Attentional Generative Adversarial Network, AttnGAN) 模型,模型由两个新组件构成:

  • 第一个组件为一个注意力生成网络,其中对生成器(generator)使用了一个注意力机制,通过聚焦与被绘制的子区域(sub-regions)最相关的单词来绘制图像的不同子区域。(如图1所示)
  • 另一个组件为深度注意多模态相似度模型(a Deep Attentional Multimodal Similarity Model , DAMSM),DAMSM能够利用全局句子级别信息和细粒度词级别信息计算生成的图像与句子的相似度,因此DAMSM为训练生成器提供了额外的细粒度图像-文本匹配损失。

image.png

注意力生成对抗网络 AttnGAN

AttnGAN的架构如图2所示,包含两个组件:1、注意力生成网络;2、深度注意力多模态相似度模型。

image.png

注意力生成网络

在本节中提出了一种新的注意力模型,其生成网络能够根据与子区域最相关的词来绘制图像的不同子区域。

如图2所示,注意力生产网络拥有mm个生成器(G0,G1,...,Gm1)(G_0,G_1,...,G_{m-1}),其使用隐含状态h0,h1,..,hm1h_0,h_1,..,h_{m-1}作为输入,生产从小-大规模的图像(x^0,x^1,...,x^m1)(\hat{x}_0,\hat{x}_1,...,\hat{x}_{m-1})。具体如下:

image.png

zz为一个噪声向量,通常从一个正态分布中取样。eˉ\bar{e}为一个全局句子向量,ee为词向量矩阵。FcaF^{ca}表示 Conditioning Augmentation,作用是将eˉ\bar{e}转换为条件向量(conditioning vector)。FiattnF^{attn}_i表示在AttnGAN中第ii阶段的注意力模型,Fca,Fiattn,Fi,GiF^{ca},F^{attn}_i,F_i,G_i均被建模为神经网络。

Fattn(e,h)F^{attn}(e,h)有两个输入,词向量 eRD×Te\in \mathbb{R}^{D\times T}和来自前一个隐含层的图像特征 hRD^×Nh\in \mathbb{R}^{\hat{D}\times N}。首先,通过增加一个新的感知器层( perceptron layer),将词特征转化为图像特征的公共语义空间,即:e=Ue,URD^×De'=Ue, U\in \mathbb{R}^{\hat{D} \times D}。然后,根据图像的隐含特征hh (query),对图像的每个子区域计算词上下文向量(word-context vector),即hh中的每一列为图像一个子区域的特征向量。对于第jj个子区域,其词上下文向量为词向量关于hjh_j的一个动态表示,其计算方法为:

cj=i=0T1βj,iei,where  βj,i=exp(sj,i)k=0T1exp(sj,k)c_j=\sum^{T-1}_{i=0}\beta_{j,i}e'_{i},\pmb{where}\ \ \beta_{j,i}=\frac{exp(s'_{j,i})}{\sum^{T-1}_{k=0}exp(s'_{j,k})}

其中,sj,i=hjTeis'_{j,i}=h^T_je'_i,且βj,i\beta_{j,i}表示模型在生成第jj个子区域时对第ii个单词的权重。然后,为图像特征集hh定义词上下文矩阵通过:Fattn(e,h)=(c0,c1,....,cN1)RD^×NF^{attn}(e,h)=(c_0,c_1,....,c_{N-1})\in \mathbb{R}^{\hat{D}\times N}。最后,将图像特征与相应的词上下文特征相结合,生成下一阶段的图像。

为了生成具有多级(句子级和词级)条件的真实图像,将注意力生成网络的最终目标函数定义为:

L=LG+λLDAMSM,where LG=i=0m1LGiL=L_G+\lambda L_{DAMSM},\pmb{where} \ L_G=\sum^{m-1}_{i=0}L_{G_i}

λ\lambda为式中两项(即LL)的平衡参数。

第一项为GAN损失,它集合了联合近似条件分布和无条件分布。在AttnGAN的第ii阶段,生成器GiG_i有一个对应的鉴别器DiD_i,则GiG_i的对抗损失定义为:

image.png

其中无条件损失决定图像的真伪,而条件损失决定图像与句子是否匹配。

对于GiG_i的训练,每个鉴别器DiD_i通过最小化交叉熵损失被训练用于将输入分类为真假两类,则该损失定义为:

image.png

xix_i来自图像在第ii个规模时的真实分布PdataiP_{data_i}x^i\hat{x}_i来自相同规模下的模型分布PGiP_{G_i},AttnGAN的鉴别器在结构上是不相交的,因此它们可以并行训练,并且每个鉴别器都聚焦在单个图像尺度上。

第二项LDAMSML_{DAMSM}为一个词级别的细粒度图像-文本匹配损失,由DAMSM计算得到,将在下一节中详细说明。

深度注意多模态相似模型 DAMSM

DAMSM学习两个神经网络,将图像的子区域及句子的单词映射到一个共同的语义空间,从而在单词水平上度量图像-文本的相似度,计算出用于生成图像的细粒度损失。

文本编码器(The text encoder):为一个双向长短时记忆网络(LSTM),用于从文本描述中提取语义向量(semantic vectors)。在双向LSTM中,每个单词对应两个隐藏状态,每个方向对应一个隐藏状态,因此,连接它的两个隐藏状态来表示一个词的语义意义。所有词的特征矩阵表示为eRd×Te\in \mathbb{R}^{d\times T}eie_i的第ii列为第ii个词的特征向量。DD为词向量的维度,TT为词的数量。同时,双向LSTM的最后一个隐藏状态会被拼接为全局句子向量,用eˉRD\bar{e}\in \mathbb{R}^D表示。

图像编码器(The image encoder) :为一个卷积神经网络(CNN),用于将图像映射为语义向量,CNN的中间层学习图像中不同子区域的局部特征,后一层学习图像的全局特征,具体的说,图像编码器是建立在通过ImageNet预训练的Inception-v3模型上的。首先,将输入图像缩放为299 × 299像素,然后从Inception-v3中的 mixed_6e 层提取局部特征矩阵fR768×289f \in \mathbb{R}^{768\times 289}(从768×17×17768\times 17 \times 17缩放),ff的每一列是图像中一个子区域的特征向量,768为局部特征向量的维数,289为图像中的子区域数。同时,从Inception-v3的最后平台池化层中提取全局特征向量fˉR2048\bar{f}\in \mathbb{R}^{2048}。最后,通过添加一个感知器层,将图像特征转换为文本特征的公共语义空间:

v=Wf,vˉ=Wˉfˉv=Wf,\bar{v}=\bar{W}\bar{f}

其中:vRD×289v \in \mathbb{R}^{D\times 289},它的第iiviv_i表示图像第ii个子区域的世界特征向量。vˉRD\bar{v} \in \mathbb{R}^{D}为整张图像的全局向量,DD表示多模态(文本和图像模态)特征空间的维度。

注意驱动图像-文本匹配得分(The attention-driven image-text matching score):该评分被设计用于度量图像-句子对的匹配程度,基于一个介于图像和文本间的注意模型。首先计算句子中所有可能的单词组合和图像中子区域的相似度矩阵:

s=eTvs=e^Tv

sRT×289s \in \mathbb{R}^{T\times 289}si,js_{i,j}为句子中第ii个词和图像中第jj个子区域间的点积相似度(dot-product similarity)。文章作者发现,将相似矩阵归一化效果更好:

sˉi,j=exp(si,j)k=0T1exp(sk,j)\bar{s}_{i,j}=\frac{exp(s_{i,j})}{\sum^{T-1}_{k=0}exp(s_{k,j})}

然后,建立一个注意力模型来计算每个单词(查询)的区域上下文向量,区域上下文向量(region-context vector)cic_i为一个图像子区域与句子中第ii个单词关联的动态表示,为所有区域视觉向量的加权和:

ci=j=0288αivi,α=exp(γ1sˉi,j)k=0288exp(γ1sˉi,k)c_i=\sum^{288}_{j=0}\alpha_i v_i, \alpha=\frac{exp(\gamma_1\bar{s}_{i,j})}{\sum^{288}_{k=0}exp(\gamma_1\bar{s}_{i,k})}

γ1\gamma_1为在计算一个单词的区域上下文向量时,决定对其相关子区域的特征给予多少关注的一个因子。

最后,用ci,eic_i,e_i间的余弦距离定义第ii个从和图像间的关联性,即:R(c1,ei)=(ciTei)/(ci ei)R(c_1,e_i)=(c^T_ie_i)/(||c_i||\ ||e_i||)。受语音识别中最小分类误差公式的启发,整张图像(用QQ表示)和整个文本描述(用DD表示)间的注意驱动图像-文本匹配得分定义为:

R(Q,D)=log(i=1T1exp(γ2R(ci,ei)))1/γ2R(Q,D)=\log(\sum^{T-1}_{i=1}exp(\gamma_2 R(c_i,e_i)))^{1/\gamma_2}

其中,γ2\gamma_2为一个决定如何放大最相关的词-区域-上下文对的重要性的因素。当γ2\gamma_2 \rightarrow \infty时,R(Q,D)R(Q,D)约等于maxi=1T1 R(c1,ei)\max^{T-1}_{i=1}\ R(c_1,e_i)

DAMSM损失:该损失被设计用于学习在半监督方式下的注意力模型,其中唯一的监督是整个图像和整个句子(一个词序列)间的匹配。对于一组(batch)图像-句子对{(Qi,Di)}i=1M\{(Q_i,D_i)\}^M_{i=1},和句子DiD_i及其匹配图像QiQ_i的后验概率计算为:

P(DiQi)=exp(γ3 R(Qi,Di))j=1M exp(γ3 R(Qi,Dj))P(D_i|Q_i)=\frac{exp(\gamma_3\ R(Q_i,D_i))}{\sum^M_{j=1}\ exp(\gamma_3\ R(Q_i,D_j))}

此处的γ3\gamma_3是通过实验确定的平滑因子。对于这组句子,只有DiD_i与图像QiQ_i匹配,将其余M1M-1个句子视为不匹配的描述。定义损失函数为图像与其对应文字描述(ground truth)匹配的负对数后验概率(negative log posterior probability)(ww表示word):

L1w=i=1MlogP(DiQi)L^w_1=-\sum^M_{i=1}\log P(D_i|Q_i)

对称的,最小化:

L2w=i=1MlogP(QiDi)L^w_2=-\sum^M_{i=1}\log P(Q_i|D_i)

其中:

P(QiDi)=exp(γ3 R(Qi,Di))j=1M exp(γ3 R(Qj,Di))P(Q_i|D_i)=\frac{exp(\gamma_3\ R(Q_i,D_i))}{\sum^M_{j=1}\ exp(\gamma_3\ R(Q_j,D_i))}

为句子DiD_i与图像QiQ_i匹配的后验概率。类似的方式可以得到L1s,L2sL^s_1,L^s_2(此处的ss为sentence)。

最终 DAMSM损失定义为:

LDAMSM=L1w+L2w+L1s+L2sL_{DAMSM}=L^w_1+L^w_2+L^s_1+L^s_2