文本到图像的生成是近年来非常热门的研究. 其主要任务就是根据文本描述生成相应图像. 主要研究方法有变分自编码器(variational auto-encoder, VAE)以及生成对抗网络(generative adversarial network, GAN)等. 其中GAN由于其独特的优势成为现在比较受欢迎的研究方法.
文本到图像合成要求合成的图像在逼真的基础上还要在语义层面符合文本描述. 所以训练模型之前要进行自然语言处理[1-5]得到指示图像生成的文本特征. 之后通过GAN网络不断优化结果, 生成与文本匹配的图像. 文本生成图像的任务相较于其他图像合成任务, 例如图像到图像的风格转换[6]、文本问答[7]、标签的生成[8]等挑战性更大. 一是文本描述包含更多的信息, 比标签的语义更复杂, 对合成的图像要求更高; 另外文本到图像的转换是跨模态的, 这要比图到图的风格迁移任务[9]更复杂. 从另一个角度说, 文本生成图像其实就是文本分析和图像生成[10]问题的结合.
为了解决上述难题相关学者不断改进GAN模型, 使文本到图像的生成任务取得了巨大的进展. 在多阶段的堆叠结构提出之前, GAN模型可以根据文本生成粗略的分辨率不高的图像, 缺少必要细节. 2017年在StackGAN中Zhang等人[11]使用多个生成器和判别器结合, 分阶段生成图像, 提高了图像的清晰度. 在此基础上, 出现了很多改进模型提高生成图像的分辨率. 2018年Xu等人提出的AttnGAN模型[12], 增加了跨模态的注意力机制, 首次证明可以根据词级别信息从句子中提取内容来生成图像的不同部分. 2019年Li等人提出的ControlGAN模型[13], 加入空间注意力和通道注意力机制分辨不同属性, 实现通过操纵文本描述控制图像对应部分生成的目的. 虽然这些方法推动了文本图像生成领域的进步, 但依然存在着不可忽视的问题. 一是在分阶段生成图像时, 第2阶段生成的图像的质量会受到第1阶段的影响. 另外, 输入句子的每个单词都表明不同的重要信息, 这些模型在不同的图像细化过程中使用相同的单词表示, 没有考虑每个词对细化的重要性. 所以2020年Chen等人提出了DM-GAN模型[14], 加入动态内存模块存储重要信息, 在初始图像生成不佳时提高模糊图像的质量, 还利用一个响应门来自适应地融合从记忆和图像特征中读取的信息. 上述方法都并没有考虑生成图像的与文本无关的部分, 不能有效地识别其内容. 2020年Li等人针对这个问题提出了ManiGAN模型[15], 加入了对原始图像进行编码重建与文本无关的内容的文本图像仿射组合模块(ACM结构), 以及可以纠正文本-图像不匹配信息, 完成缺失内容的细节校正模块(DCM结构). 但是此模型生成的图片清晰度不是很高, 生成图片的质量不尽如人意. 为了解决上述问题, 本文提出DM-ManiGAN模型. DM-ManiGAN模型产生的图片如图1所示.
1 相关任务 1.1 生成对抗网络
生成对抗网络(GAN)[16]对于生成模型的发展有重大的意义. GAN网络结构灵活, 对生成数据的维度没有限制, 基于这些优点其模型结构被广泛应用. GAN采用对抗的方式训练, 两个神经网络通过反向传播不断优化各自训练结果. 训练过程简单, 生成过程自由, 生成图片效率高. 而且GAN采样步骤简单, 可以直接对新样本采样, 减少了生成样本的时间.
GAN具有一个生成器网络和一个判别器网络[17], 其训练可以被表述为一个双人游戏, 互相博弈. 生成器生成的图像与真实图像一起被判别器判断, 使判别器产生能区分“真假图像”的能力, 同时生成器也要优化提升, 生成更趋近真实样本的图像. 最后二者在理想状态下可以到达一个平衡——纳什平衡, 表明这个网络已经训练成功, 此时生成器的结果最优. 其模型结构如图2所示.
生成器网络输入随机变量z, 输出生成样本, 其训练的目标是生成与真实的图像更为相似的结果. 判别器网络输入真实样本和生成样本, 目标是分辨出其输入样本是生成的还是真实的. 判别器的结果用于计算损失函数, 之后通过梯度更新, 不断优化生成结果.
损失函数
$ \begin{split} \mathop {\min }\limits_G \mathop {\max }\limits_D V(D,G) =& {E_{x\sim p_{\rm{data}}}}[\log D(x)] \\[-2pt] &+{E_{{\textit{z}}\sim p_{\textit{z}}}}[\log (1 - D(G({\textit{z}})))] \end{split} $ | (1) |
在生成器
有条件的生成对抗网络模型[18]通过输入文本描述来生成图像. 就其原理来说是在上述GAN的基础上进行改进, 其基本模型结构如图3所示.
图3中文本编码器
Radford等人首次证明了条件生成网络(DC-GAN)[18]可以根据文本描述生成接近真实的图像. Zhang等人[11]提出的StackGAN堆叠了几个GAN, 利用不同阶段生成不同分辨率的图像. 上述模型都是使用全局句子向量与噪声向量
本文模型在初始图像生成阶段, 通过一个文本编码器将输入的文本描述转换为句向量
2.1 动态记忆网络
输入单词特征
$\left\{ { \begin{split} &W = \left\{ {{w_1}, {w_2}, {w_3}, \cdots, {w_T}} \right\},\; {w_i} \in {R^{{N_w}}} \\ &{R_i} = \left\{ {{r_1}, {r_2}, {r_3}, \cdots, {r_N}} \right\},\; {r_i} \in {R^{{N_r}}} \end{split}} \right.$ | (2) |
其中,
算法1. 初始图像生成算法
输入: 原始图片和文本信息
输出: 粗糙图像
步骤1. 通过一个文本编码器将输入的文本描述转换为句向量
步骤2. 单词特征将会成为下一阶段的输入. 句子向量经过条件增强与随机噪声向量拼接.
步骤3. 拼接结果经过全连接层与句子特征一起输入文本图像仿射组合模块(ACM), 得到图片特征
步骤4.
算法2. 图像细化算法
输入: 上一阶段生成的粗糙图像
输出: 细化之后的图像
步骤1. 经过动态记忆网络, 融合图像文本信息.
(1) 内存写入: 选择相关单词优化细节. 得到单词特征与图像子区域之间的相关概率.
(2) 键寻址、值读取: 通过(1)得到的相关概率计算每个子区域占的权重
(3) 自适应门根据
步骤2. 新的图像特征经过上采样和两个残差模块得到最终图像特征
上述步骤1和步骤2可以多次执行.
步骤3.
记忆写入门细化初始图像, 筛选重要单词优化细节.
$ g_i^w\left( {{{R}}, {w_i}} \right) = {\textit{Sigmoid}}\left( {{{A}} \times {w_i} + {{B}} \times \frac{1}{{{N}}}\sum\limits_{i = 1}^N {{r_i}} } \right) $ | (3) |
其中,A是
$ {m_i} = {M_w}\left( {{w_i}} \right) \times {{g}}_i^w + {M_r}\left( {\frac{1}{N}\sum\limits_{i = 1}^N {{r_i}} } \right) \times \left( {1 - {{g}}_i^w} \right) $ | (4) |
其中,
根据式(5)计算得到第
$ {\alpha _{ij}} = \frac{{\exp ({\phi _k}{{({m_i})}^{{T}}}{r_j})}}{{\displaystyle \sum\nolimits_{l = 1}^T {\exp ({\phi _k}{{({m_l})}^{{T}}}{r_j})} }} $ | (5) |
根据式(6)计算每一个图像子区域
$ {o_j} = \sum\nolimits_{i = 1}^T {{\alpha _{ij}}} {\phi _v}({m_i}) $ | (6) |
式(5)和式(6)的
利用上述得到的权重
$\left\{ { \begin{split} &g_i^r = {\textit{Sigmoid}}(W[{o_j},{r_j}] + b)\\ &r_i^{{\rm{new}}} = {o_j} \times g_i^r + {r_i} \times (1 - g_i^r) \end{split}} \right.$ | (7) |
其中,
ACM作用是融合文本图像跨模态表示. 如图5所示, 文本特征经卷积层后得到隐藏特征
公式如下:
$ {{h'}} = {{h}} \odot W\left( r \right) + b\left( r \right) $ | (8) |
其中,
该模块利用了单词级别特征与图像信息结合. 如图6所示.
图6中
DCM模型中的空间注意力机制和通道注意力机制介绍如下.
空间注意力的本质就是定位目标并进行一些变换或者获取权重在文献[12]中有详细说明.
通道注意力机制计算过程如图7所示. 其中,
$ \alpha _{i, j}^k = \frac{{\exp (m_{i, j}^k)}}{{\displaystyle\sum\nolimits_{l = 0}^{L - 1} {\exp (m_{i, l}^k)} }} $ | (9) |
注意力权重
2.7 目标函数
生成网络的目标函数定义为:
$ L = \sum\limits_i {{L_{{G_i}}}} + {\lambda _1}{L_{CA}} + {\lambda _2}{L_{{\rm{DAMSM}}}} + {\lambda _3}{L_p} $ | (10) |
其中,
$ {L_{{G_i}}} = - \frac{1}{2}\left[ {{E_{x \sim {P_{{G_i}}}}}\log {D_i}\left( x \right) + {E_{x \sim {P_{{G_i}}}}}\log {D_i}\left( {x, s} \right)} \right] $ | (11) |
其中, 第1项是无条件损失, 使生成的图像尽可能真实, 第2项是使图像与输入句子匹配所产生的条件损失. 或对每个鉴别器
$ {L_{{D_i}}} = - \frac{1}{2}\left[ {{L_{{D_{i1}}}} + {L_{i2}}} \right] $ | (12) |
其中,
$ {L_{{D_{i1}}}} = {E_{x \sim {P_{_{{\rm{data}}}}}}}\log {D_i}\left( x \right) + {E_{x \sim {P_{{G_i}}}}}\log \left( {1 - {D_i}\left( x \right)} \right) $ | (13) |
其中,
$ {L_{{D_{i2}}}} = {E_{x \sim {P_{{\rm{data}}}}}}\log {D_i}\left( {x, s} \right) + {E_{x \sim {P_{{G_i}}}}}\log \left( {1 - {D_i}\left( {x, s} \right)} \right) $ | (14) |
无条件损失被用来区分生成的图像和真实的图像, 条件损失决定了图像和输入句子的匹配度.
2.7.2 条件增强损失通过从一个独立的高斯分布中重新采样输入句子向量来增强训练数据, 避免过拟合. 因此, 条件增强损失表示的是Kullback-Leibler
$ {L_{CA}} = {D_{\rm KL}}\left( {N\left( {\mu \left( s \right), \sum {\left( s \right)} } \right)||N\left( {0, I} \right)} \right) $ | (15) |
其中,
DAMSM损失可以衡量文本与生成图像间的相关性, 促使生成的图像更接近于文本描述. 计算方式与文献[12]一致.
感知损失在一定程度限制了生成结果. 如果不对与文本无关的区域(如背景)添加任何约束, 生成的结果可能是高度随机的, 也可能无法与语义上的其他内容一致. 为了减轻这种不可靠性, 使用VGG预训练网络提取图像特征信息. 训练此网络的数据集是ImageNet数据集. 从生成图像
$ {L_p}\left( {I', I} \right) = \frac{1}{{{C_i}{H_i}{W_i}}}\parallel {\varphi _i}\left( {I'} \right) - {\varphi _i}\left( I \right)\parallel _2^2 $ | (16) |
其中,
目标函数(10)中的
文中初始图像生成阶段首先合成分辨率为64×64的图像. 然后, 图像细化阶段将图像细化到128×128和256×256的分辨率. 由于GPU内存的限制, 实验只对动态内存模块重复细化过程两次. 对低分辨率图像(即16×16、32×32)引入动态内存并不能进一步提高性能. 为了提高文本生成图像的质量每次在判别器卷积之后都会使用谱归一化, 用来避免梯度异常. 默认情况下, 将
本文在CUB-200-2011鸟类数据集进行研究实验, 验证方法的可行性与优越性. CUB-200-2011鸟类数据集包含了11 788张200种鸟类的图片. 其中8 855张图片用于训练, 2 933张图片用于测试. 每张图片形态各异, 并且每一个都有相应的10个文本描述. 数据使用之前会对进行预处理. 最终有3万张生成图像来进行评估.
本文的评估方式采用了
本文实验步骤分为3步, 即预训练、图片生成以及测试生成图像质量.
(1)预训练阶段是本文的重点内容, 通过分阶段训练不同的子任务. 获取子任务中文本与图像之间的关系.
阶段1. 使用双向LSTM文本编码器对文本进行编码, 每个单词的特征都对应着两个方向的隐藏状态. 句子向量是根据词向量生成. 由于训练过程与文献[12]相同所以直接使用其预训练好的模型进行实验. 必须首先对文本编码, 因为这是之后模型训练的基础.
阶段2. 运行main.py函数训练DM-ManiGAN的主模型. 运行的batch_size=10, max_epoch= 800. 训练完成将模型保存. 这部分训练结果就是没有加DCM模块的模型该模型也可以用来生成图片, 但是效果不太好, 将会在第3.3节进行对比.
阶段3. 运行DCM.py函数训练DCM模型. batch_size=10, max_epoch= 500. 其余参数设置与主模型一致. 运行模型保存.
(2)图片生成: 训练的全部模型路径写入eval_bird.yml文件, 此文件记录了代码运行所需要的全部参数. 在main.py中加载eval_bird.yml模型参数, 生成图像.
(3)测试生成图像质量: 将生成的图片与原始图片输入fid_score.py和IS.py中分别得到生成图片的FID和IS值.
算法3. 训练DM-ManiGAN的主模型部分参数设置
TRAIN:
BATCH_SIZE: 10
MAX_EPOCH: 800
SNAPSHOT_INTERVAL: 10
DISCRIMINATOR_LR: 0.0002
GENERATOR_LR: 0.0002
NET_E: 'text_encoder200.pth'
SMOOTH:
GAMMA1: 4.0
GAMMA2: 5.0
GAMMA3: 10.0
LAMBDA: 5.0
GAN:
DF_DIM: 32
GF_DIM: 64
Z_DIM: 100
R_NUM: 2
TEXT:
EMBEDDING_DIM: 256
CAPTIONS_PER_IMAGE: 10
3.2 实验结果本文利用此数据集对其他模型进行复现, 产生的结果与DM-ManiGAN模型的结果进行比较. 由表1可知, 本文方法在CUB数据集上的评价指标IS由4.75提高到5.37, FID由16.09下降到10.40. 结果表明相较于其余方法本文的方法的确要更优. 也就是本文模型相对于基础模型DMGAN生成的图像更接近真实图像, 图像内容更加丰富, 质量也有所提高.
3.3 消融试验
只有动态记忆网络, 动态记忆网络+ACM, 与动态记忆网络+ACM+DCM实验得出结果进行比较, 结果如表2所示, 可以看出加入DCM、ACM模型的确是可以提高生成图像的质量. 并且加入DCM的网络结构IS更高也就是图片更加清晰, 因为其纠正了细节部分使得生成图片展现的内容质量更高; 加入ACM的模型FID更高也就是与原始图片更为相似, 因为重建了与文本无关内容.
记忆网络+ACM产生的图片进行比较如图8所示, 可以看出来大多数情况下加入ACM的网络即使对于文本描述的鸟类的生成结果不理想也可以生成无关的背景图.
记忆网络+DCM产生图片结果如图9所示. 对于文本描述的部分可以生成以外还看到细节部分也得到了很好的纠正, 各种鸟类的花纹可以清晰的生成. 但是生成图像的完整性不足, 也就是对于背景图大多数情况不能很好地实现.
图10显示了AttnGAN、ControlGAN、DMGAN、ManiGAN以及本文模型DM-ManiGAN之间的可视化比较. 由图10可知, 本文的方法的确在文本生成图像时有一定优越性, 生成结果质量有一定的提高. 在合成图像和文本描述之间保持高度的语义一致性, 同时也保留了与文本无关的区域, 例如背景, 站立姿势等. 并且图片中的鸟类清晰度更高, 不论是站在树枝上还是铁丝上, 不论是转头还是正面各种动作都可以生成, 具有更好的视觉效果.
4 结束语
针对文本生成图像存在的无关区域不能很好的重建, 生成样本受第1阶段生成样本质量影响以及生成图像质量不高的问题, 本文提出了新的模型DM-ManiGAN. DM-ManiGAN大多数情况下生成的图片都具有较高的清晰度和更生动的动作. 通过动态记忆模块弥补了视觉内容与自然语言处理之间的差距; 通过ACM, DCM结构重建了文本描述缺失的内容. 实验结果表明了本文方法在图像生成方面的有效性和产生高质量图像的优越性. 虽然本文的方式产生了比较清晰的图片, 但是还是有一些问题存在, 比如生成图片的多样性不足; 产生重影等, 以后的研究任务将会沿着这个方向展开.
算法4. DM-ManiGAN算法
for epoch in range(start_epoch, max_epoch) do:
while (step < num_batches) do:
(1) 准备训练数据并计算单词向量值
(2) 生成图像
阶段1生成图像 :
阶段2生成图像 :
(3)更新判别器网络
for i in range(len(netsD)) do: // len(netsD)←3
errD(判别器损失)
(4) 更新生成器网络: maximize log(D(G(z)))
计算训练 G的总损失
(5)反向传播更新参数
if epoch % 20 == 0: //20个epoch保存一次生成的模型
save_model(netG, avg_param_G, netsD, epoch)
End if
save_model(netG, avg_param_G, netsD, smax_epoch)
End while
End for
[1] |
Chen JB, Shen YL, Gao JF, et al. Language-based image editing with recurrent attentive models. Proceedings of 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018. 8721–8729.
|
[2] |
Cheng Y, Gan Z, Li YT, et al. Sequential attention GAN for interactive image editing. Proceedings of the 28th ACM International Conference on Multimedia. Seattle: ACM, 2020. 4383–4391.
|
[3] |
Dong H, Yu SM, Wu C, et al. Semantic image synthesis via adversarial learning. Proceedings of 2017 IEEE International Conference on Computer Vision. Venice: IEEE, 2017. 5707–5715.
|
[4] |
El-Nouby A, Sharma S, Schulz H, et al. Tell, draw, and repeat: Generating and modifying images based on continual linguistic instruction. Proceedings of 2019 IEEE/CVF International Conference on Computer Vision. Seoul: IEEE, 2019. 10303–10311.
|
[5] |
Nam S, Kim Y, Kim SJ. Text-adaptive generative adversarial networks: Manipulating images with natural language. Proceedings of the 32nd Conference on Neural Information Processing Systems. Montréal: NIPS, 2018. 42–51.
|
[6] |
Jing YC, Yang YZ, Feng ZL, et al. Neural style transfer: A review. IEEE Transactions on Visualization and Computer Graphics, 2020, 26(11): 3365-3385. DOI:10.1109/TVCG.2019.2921336 |
[7] |
Miller AH, Fisch A, Dodge J, et al. Key-value memory networks for directly reading documents. Proceedings of the 2016 Conference on Empirical Methods in Natural Language Processing. Austin: ACL, 2016. 1400–1409.
|
[8] |
Torkzadehmahani R, Kairouz P, Paten B. DP-CGAN: Differentially private synthetic data and label generation. Proceedings of 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops. Long Beach: IEEE, 2019. 98–104.
|
[9] |
Richardson E, Alaluf Y, Patashnik O, et al. Encoding in style: A StyleGAN encoder for image-to-image translation. Proceedings of 2021 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Nashville: IEEE, 2021. 2287–2296.
|
[10] |
Karras T, Laine S, Aittala M, et al. Analyzing and improving the image quality of StyleGAN. Proceedings of 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020. 8107–8116.
|
[11] |
Zhang H, Xu T, Li HS, et al. StackGAN: Text to photo-realistic image synthesis with stacked generative adversarial networks. Proceedings of 2017 IEEE International Conference on Computer Vision. Venice: IEEE, 2017. 5908–5916.
|
[12] |
Xu T, Zhang PC, Huang QY, et al. AttnGAN: Fine-grained text to image generation with attentional generative adversarial networks. Proceedings of 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018. 1316–1324.
|
[13] |
Li BW, Qi XJ, Lukasiewicz T, et al. Controllable text-to-image generation. Proceedings of the 33rd International Conference on Neural Information Processing Systems. Vancouver: NIPS, 2019. 2065–2075.
|
[14] |
Chen ZL, Wang C, Wu HM, et al. DMGAN: Discriminative metric-based generative adversarial networks. Knowledge-based Systems, 2020, 192: 105370. DOI:10.1016/j.knosys.2019.105370 |
[15] |
Li BW, Qi XJ, Lukasiewicz T, et al. ManiGAN: Text-guided image manipulation. Proceedings of 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020. 7877–7886.
|
[16] |
Mirza M, Osindero S. Conditional generative adversarial nets. arXiv:411.1784, 2014.
|
[17] |
刘建伟, 谢浩杰, 罗雄麟. 生成对抗网络在各领域应用研究进展. 自动化学报, 2014, 46(12): 2500-2536. DOI:10.16383/j.aas.c180831 |
[18] |
Radford A, Metz L, Chintala S. Unsupervised representation learning with deep convolutional generative adversarial networks. arXiv:1511.06434, 2015.
|
[19] |
杜会芳, 王昊奋, 史英慧, 等. 知识图谱多跳问答推理研究进展、挑战与展望. 大数据, 2021, 7(3): 60–79.
|
[20] |
Heusel M, Ramsauer H, Unterthiner T, et al. GANs trained by a two time-scale update rule converge to a local Nash equilibrium. Proceedings of the 31st International Conference on Neural Information Processing Systems. Long Beach: Curran Associates Inc., 2017. 6629–6640.
|