ControlGAN:Controllable Text-to-Image Generation

news2024/12/26 20:47:39

1 研究目的

        当前的生成网络通常是不可控的,这意味着如果用户更改句子的某些单词,合成图像将与原始文本生成的合成图像显着不同;当给定的文本描述(例如颜色)发生变化时,鸟类的相应视觉属性被修改,但其他不相关的属性(例如,姿势和位置)也发生了变化。

图1 使用自然语言描述修改合成图像的示例

        本文的目标是从文本中生成图像,并允许用户在一个框架中使用自然语言描述来操纵合成图像。特别是专注于通过改变  给定的文本描述  来修改生成图像中的对象的视觉属性(例如类别、纹理和颜色)

        为此,作者提出了一种新的可控文本到图像生成对抗网络(ControlGAN),它可以合成高质量的图像,还允许用户操纵对象的属性,而不影响其他内容的生成。

提出三个新颖的组件:

1)词级空间通道注意驱动生成器可以有效地解开不同的视觉属性

2)词级鉴别器为生成器提供与每个视觉属性相关的细粒度训练信号

 3)感知损失的采用减少了生成中涉及的随机性,并强制生成器重建与未修改文本相关的内容。

2 模型结构

2.1 整体框架

采用多阶段AttnGAN作为骨干架构(见图2),在(b)中,L_{corre}是第2.3节中讨论的相关损失。在(c)中,L_{per}是第2.4节中讨论的感知损失。

图2 ControlGAN 的架构

  • 给定一个句子 S,文本编码器采用预训练的双向 RNN (AttnGAN用到的),将句子 S 编码为句子特征s\in R^{D} ,维度为 D 描述整个句子  和  单词特征 w\in R^{D*L}长度为 L(即单词数)和维度 D。
  • 接下来的StackGAN,还将条件增强 (CA) 应用于 s。增强的句子特征 \tilde{s}随机向量 z 进一步连接,作为第一阶段的输入。
  • 整个框架分多个阶段从粗到细生成图像,在每个阶段,网络产生一个隐藏的视觉特征v_{i},它是对应生成器G_{i}的输入,生成合成图像。
  • 空间注意模块和提出的通道注意模块以w(单词特征)v_{i}(隐藏的视觉特征)为输入,输出注意的单词上下文特征。这些注意力特征进一步与隐藏的视觉特征 v_{i}连接,然后作为下一阶段的输入。
  • 生成器通过结合空间注意模块 和提出的通道注意模块来利用注意力机制(上面两个蓝色框框)。
  • 由于AttnGAN的空间注意模块只能将单词与单个空间位置相关联,而不考虑通道信息。所以,作者引入了一个通道注意模块来利用单词和通道之间的连接。
  • 通过实验发现,通道注意模块将语义上有意义的部分与相应的单词高度相关,而空间注意力侧重于颜色描述(见图 6)。
  • 因此,作者提出的通道注意模块以及空间注意模块可以帮助生成器解开不同的视觉属性,并允许它只关注最相关的子区域和通道。

2.2 通道注意模块

图3(a)  通道注意模块

在第 k 阶段,通道注意模块(见图 3 (a))接受两个输入:

  • 单词特征 w
  • 隐藏视觉特征 v_{k}\in \mathbb{R}^{C*\left ( H_{k} * W_{k}\right )} ,其中 H_{k}W_{k}  表示第 k 阶段特征图的高度和宽度。
  1. 单词特征 w首先通过感知层 F_{k}映射到与视觉特征v_{k} 相同的语义空间中,产生\tilde{w}_{k}= F_{k}w,其中 F_{k}\in \mathbb{R}^{\left ( H_{k}*W_{k} \right )*D}
  2. 然后,通过将转换后的单词特征\tilde{w}_{k}  和视觉特征 v_{k} 相乘来计算通道注意矩阵 m_{k}\in\mathbb{R} ^{C*L},表示为 m^{k}=v_{k} \tilde{w}_{k}。因此,m^{k} 聚合所有空间位置的通道和单词之间的相关性值。
  3.  接下来,通过 softmax 函数对 mk 进行归一化以生成归一化的通道注意矩阵 \alpha ^{k}为:

注意力权重\alpha _{i,j}^{k} 表示视觉特征v_{k} 中的第 i 个通道与句子 S 中的第 j 个单词之间的相关性,值越高表示相关性越大。

  • 配备了通道注意矩阵\alpha ^{k},得到了最终的通道注意特征f_{k}^{a}\in \mathbb{R}^{C*\left ( H_{k}*W_{k} \right )},记为f_{k}^{a}= \alpha ^{k}\left ( \tilde{w}_{k}\right )^{T}f_{k}^{a}中的每个通道都是一个动态表示,由视觉特征中单词与相应通道之间的相关性加权。

        因此,具有高相关值的通道被增强,从而对相应的单词有很高的响应,这有助于将单词属性分解为不同的通道,并通过分配较低的相关性来减少不相关通道的影响。

2.3 词级判别器

        为了鼓励生成器根据文本仅修改图像的一部分,判别器应该提供具有细粒度训练反馈的生成器,这可以指导与最相关的单词相对应的子区域的生成。

        实际上,文本自适应鉴别器(text-adaptive)也探索了鉴别器中的词级信息,但它采用全局平均池化层输出一维向量作为图像特征,然后计算图像特征与每个词之间的相关性。但是通过这样做,图像特征可能会丢失重要的空间信息,这为解开不同的视觉属性提供了关键线索。

        为了解决这个问题,作者提出了一种新的词级鉴别器,其灵感来自 文本自适应鉴别器(text-adaptive)来探索图像子区域和每个词之间的相关性;见图3(b)。

图3(b) 词级判别器

词级鉴别器接受两个输入:

  1. 从文本编码器编码的词汇特征 w, w',它遵循与生成器中使用的架构相同的架构(见图 3 (a)),其中 w 和 w' 分别表示从原始文本 S 和随机采样的不匹配文本编码的单词特征。
  2. 视觉特征 n_{real}, n_{fake},分别由来自真实图像 I 和生成图像 I' 的基于 GoogleNet 的图像编码器编码。

为了简单起见,

  • 使用n\in \mathbb{R}^{C*\left ( H*W \right )}来表示视觉特征n_{real}n_{fake}
  • 使用w\in \mathbb{R}^{D*L}来表示原始和不匹配的单词特征
  • 词级鉴别器包含一个感知层{F}',用于对齐视觉特征n和单词特征w的通道维度,记为\tilde{n}= {F}'n,其中{F}'\in \mathbb{R}^{D*C}是要学习的权重矩阵。
  • 然后,词-上下文相关矩阵m\in \mathbb{R}^{L*\left ( H*W \right )}可由m= w^{T}\tilde{n}导出,并通过softmax函数进一步归一化得到相关矩阵β:

其中,\beta _{i,j}表示图像第i个单词与第j个子区域的相关值。

  • 然后,将所有由词-上下文相关矩阵β加权的空间信息进行聚合,通过b= \tilde{n}\beta ^{T}得到图像子区域感知的词特征b\in \mathbb{R}^{D*L}
  • 此外,为了进一步降低不重要词的负面影响,采用词级自注意推导出一个长度为L的一维向量\gamma,它反映了每个词的相对重要性。
  • 然后,重复\gamma乘以D次,得到与b大小相同的{\gamma }'
  • 接下来,b进一步被{\gamma }'重新加权,得到\tilde{b},记为\tilde{b}=b\bigodot {\gamma }',其中表示元素的乘法。
  • 最后,我们推导出第i个单词与整个图像之间的相关性,如Eq. (3):

其中\sigma为sigmoid函数,r_{i}表示第i个单词与图像的相关性,\tilde{b}_{i}w_{i}分别表示b和w的第i列。

        因此,图像I与句子S之间的最终关联值L_{corre}通过对所有词-上下文关联求和来计算,记为L_{corre}\left ( I,S \right )= \sum_{i=0}^{L-1}r_{i}

        通过这样做,生成器可以从单词级鉴别器接收每个视觉属性的细粒度反馈,这可以进一步帮助独立监督每个子区域的生成和操作。

2.4 感知损失

        在没有对与文本无关的区域(例如背景)添加任何约束的情况下,生成的结果可能高度随机,也可能无法与其他内容在语义上一致。为了减轻这种随机性,采用了基于在ImageNet数据集上预训练的16层VGG网络的感知损失。该网络用于从生成的图像{I}'和真实图像I中提取语义特征,感知损失定义为:

其中\varphi _{i}\left ( I \right ) 是 VGG 网络第 i 层的激活,H_{i}W_{i}分别是特征图的高度和宽度。

在可控文本到图像生成中应用感知损失,可以通过匹配特征空间来减少图像生成中涉及的随机性。

2.5  目标函数

通过最小化生成器损失L_{G} 和鉴别器损失L_{D} 交替训练生成器和鉴别器。

2.5.1 生成器目标

生成器损失L_{G}如式(5)所示,包含:

  • 对抗性损失L_{G_{k}}
  • 文本图像相关损失L_{corre}
  • 感知损失L_{per}
  • 文本图像匹配损失L_{DAMSM}

其中 :

  • K 是阶段数。
  • I_{k} 是从第 k 阶段的真实图像分布 P_{data}中采样的真实图像。
  • I_{​{k}'}是从模型分布 PG_{k},\lambda _{2}, \lambda _{3}, \lambda _{4} 中采样的第 k 个阶段的生成图像是控制不同损失的超参数。
  • L_{per}是第 2.4 节中描述的感知损失,它对生成过程施加了约束以减少随机性。
  • L_{DAMSM} 用于基于余弦相似度测量文本图像匹配分数。
  • L_{corre}反映了生成的图像与给定文本描述之间的相关性考虑空间信息。

对抗性损失L_{G_{k}}由Eq.(6)所示的无条件和条件对抗损失组成:

        采用无条件对抗损失使合成图像是真实的,利用条件对抗损失使生成的图像与给定的文本S匹配。

2.5.2 判别器目标

训练鉴别器 D 的最终损失函数定义为:

其中:

  •  L_{corre}是决定图像中是否存在与单词相关的视觉属性的相关损失(参见第 2.3 节)。
  •  {S}'是从数据集中随机采样的不匹配文本描述,与I_{k}无关,\lambda _{1}是控制额外损失重要性的超参数。

对抗性损失L_{D_{k}}包含两个组件:

  •  无条件对抗性损失决定了图像是真实的
  •  条件对抗性损失决定了给定图像是否与文本描述 S 匹配

3 实验评估

3.1 数据集

在CUB鸟和MS COCO数据集上进行评估:

  • CUB数据集包含 8,855 个训练图像和 2,933 个测试图像,每张图像有 10 个相应的文本描述。
  • COCO 数据集,它包含 82,783 个训练图像和 40,504 个验证图像,每张图像有 5 个相应的文本描述。

根据 StackGAN中介绍的方法预处理这两个数据集。

3.2 实施细节

  • 在AttnGAN之后的ControlGAN生成器中有三个阶段(K =3)。这三个尺度分别为64 × 64、128 × 128和256 × 256,在第2和3阶段应用空间和通道注意。
  • 文本编码器是一个预先训练的双向LSTM,将给定的文本描述编码为256维的句子特征和长度为18、维数为256的单词特征。
  • 感知损失中,计算在ImageNet上预训练的VGG-16层relu2 _2处的内容损失。
  • 整个网络使用 Adam 优化器进行训练,学习率为 0.0002。
  • 两个数据集的超参数\lambda _{1} ,\lambda _{2}, \lambda _{3}, 和 \lambda _{4}分别设置为 0.5、1、1 和 5。

3.3 与现有的技术相比

3.3.1 定量评估

  •  Inception Score(IS)来评估生成图像的质量和多样性。
  • 由于 Inception 分数不能反映图像和文本描述之间的相关性,利用 R-precision 来衡量生成的图像与其对应的文本之间的相关性。

        定量结果如表 1 所示,最先进方法的和ControlGAN在CUB 和 COCO 数据集上的 Inception Score、R-precision 和 L_{2} 重建误差的数值对比。

表1 定量比较

        与最先进的方法相比,ControlGAN在 CUB 数据集上实现了更好的 IS 和 R 精度值,并且在 COCO 数据集上具有具有竞争力的性能。这表明ControlGAN方法可以生成具有更好多样性的高质量图像,这在语义上与文本描述对齐。

        为了进一步评估模型是否可以生成可控结果,作者计算了从原始文本生成的图像与表1所示的修改后的文本生成的图像之间的L_{2}重建误差。与其他方法相比,ControlGAN的重构误差明显较低,这表明ControlGAN可以更好地保留原始文本生成的图像中的内容。

3.3.2 定性评估

        在图 4 中展示了定性比较。根据修改给定的文本描述,ControlGAN可以成功地准确地操纵特定的视觉属性。此外,ControlGAN方法甚至可以处理分布外查询,例如,图 4 的最后两列所示的河上的红斑马。

        上述所有都表明ControlGAN方法可以独立操作不同的视觉属性,这证明了ControlGAN方法在解开文本到图像生成的视觉属性方面的有效性。(图4中,奇数列显示原始文本,偶数列显示修改后的文本。最后两个是分布外的情况。)

图4 CUB和COCO数据集的定性结果

什么是分布外的情况?

        当模型在训练过程中学习到了这个分布内的数据模式后,如果遇到了来自不同分布的数据,这些数据就被称为分布外数据。例如,一个在白天图像数据上训练的图像分类模型,夜晚图像(与白天图像具有不同的特征分布)对于该模型而言可能就是分布外数据。

        图 5 显示了 ControlGAN、AttnGAN和 StackGAN++ 的视觉比较。可以观察到,当文本被修改时,两种比较方法更有可能生成新的内容,或者更改一些与修改后的文本无关的视觉属性。

例如,如前两列所示,当修改颜色属性时,StackGAN++ 改变了鸟的姿势,AttnGAN 生成新的背景。相比之下,ControlGAN方法能够准确地操纵与修改后的文本对应的图像生成部分,同时保留与不变文本相关的视觉属性。(图5中,奇数列显示原始文本,偶数列显示修改后的文本)

图5 CUB和COCO数据集上三种方法的定性比较

        在COCO数据集中,ControlGAN模型再次取得了比图5所示的更好的结果。例如,如最后四列所示,比较方法不能保持物体的形状,甚至无法生成合理的图像。

COCO 上的结果不如 CUB 数据集的原因:

        一般来说,COCO 上的结果不如 CUB 数据集。将此归因于数据集中的少数文本图像对和更抽象的字幕。尽管 COCO 中有很多类别,但每个类别只有几个示例,字幕主要集中在对象类别上,而不是详细描述,这使得文本到图像的生成更具挑战性。        

3.4 消融实验

3.4.1 通道注意机制的有效性

        ControlGAN模型实现了生成器中的通道注意,以及空间注意力,以生成逼真的图像。为了更好地理解注意力机制的有效性,作者可视化了不同阶段的中间结果和相应的注意力图。

  • 顶部:阶段 3 特征通道的可视化。右上角的数字是通道数,等式1中相关性最高的词 \alpha _{i,j}与通道显示在图像下方
  • 底部:第 3 阶段产生的空间注意力

图6 显示了与不同语义相关的几个特征图通道

        通过实验发现,通道注意对象的语义部分密切相关,而空间注意主要关注颜色描述图6通道注意模块  为 与描述鸟部分的单词语义相关的通道  分配较大的相关值。

这种现象通过图 7所示的消融研究进一步验证:

  • 在没有通道注意的情况下,当修改与鸟部分相关的文本时,ControlGAN模型无法生成可控的结果。
  • 有通道注意力的情况下,ControlGAN模型可以生成更好的可控结果。

图7 通道注意的消融研究

3.4.2 词级判别器的有效性

        为了验证词级鉴别器的有效性,首先进行了消融研究,即ControlGAN模型在没有词级鉴别器的情况下进行训练,如图8所示。

图8 词级鉴别器的消融研究

        然后通过用文本自适应鉴别器替换作者的鉴别器来构建基线模型,该鉴别器还探索了图像特征和单词之间的相关性,视觉比较如图9所示。

图9 词级鉴别器和文本自适应鉴别器之间的比较

        可以很容易地观察到,比较的基线无法操纵合成图像(图9第一行)。例如,如前两列所示,修改后的文本生成的鸟形状完全不同,背景也发生了变化。这是因为文本自适应鉴别器使用全局池化层提取图像特征,可能会丢失重要的空间信息。

3.4.3 感知损失的有效性

        ControlGAN模型在没有感知损失的情况下进行训练,如图 10所示。

图10 感知损失的消融研究

        在没有感知损失的情况下,从修改后的文本生成的图像很难保留与未修改文本相关的内容,这表明感知损失可以潜在地对图像生成引入更严格的语义约束,并有助于减少所涉及的随机性。

4 优缺点

        ControlGAN可以基于自然语言描述生成图像的生成和操作。

        ControlGAN可以成功地解开不同的视觉属性,并允许准确地操纵合成图像的部分,同时保留其他内容的生成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2183178.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我博客网站又遭受CC攻击了,记录一下

2024.9.29凌晨4点攻击开始,攻击目标是我的图床tc.zeruns.tech和博客blog.zeruns.tech,图床用的cdn是多吉云融合CDN,流量被刷了20GB左右就触发峰值关闭CDN了,HTTPS请求次数被刷了1.1亿次,因为设置了QPS,实际…

Oracle bbed编译安装及配置

1. 什么是bbed ? Oracle Block Brower and EDitor Tool,是一个可以对oracle data block进行查看,编辑修改的内置工具。对于bbed,oracle本身是不提供支持的。 2. 如何编译bbed环境? 10g版本: 1) 编译bbed cd $ORACL…

【网络基础】网络常识快速入门知识清单,看这篇文章就够了

💐个人主页:初晴~ 在现在这个高度智能化的时代,网络几乎已经成为了空气一般无处不在。移动支付、网上购物、网络游戏、视频网站都离不开网络。你能想象如果没有网络的生活将会变成什么样吗🤔 然而如此对于如此重要的网络&#xf…

深度学习500问——Chapter17:模型压缩及移动端部署(2)

文章目录 17.4.6 低秩分解 17.4.7 总体压缩效果评价指标有哪些 17.4.8 几种轻量化网络结构对比 17.4.9 网络压缩未来研究方向有哪些 17.5 目前有哪些深度学习模型优化加速方法 17.5.1 模型优化加速方法 17.5.2 TensorRT加速原理 17.5.3 TensorRT如何优化重构模型 17.5.4 Tensor…

Unity中Mesh多种网格绘制模式使用方法参考

Unity中MeshFilter中的Mesh默认情况下使用MeshTopology.Trigangles类型绘制网格,就是通常的绘制三角形网格,实际上Mesh有五种绘制模式,对应MeshTopology的枚举,分别是 Triangles网格由三角形构成。Quads网格由四边形构成。Lines网…

多线程——认识线程(Thread)

目录 前言 一、第一个多线程程序 1.程序编写 2.介绍jconsole 二、创建线程 1.继承Thread类 ①重写run方法 ②重写run方法,使用匿名内部类 2.实现Runnable接口 ①重写run方法 ②重写run方法,使用匿名内部类 ③使用 lambda 表达式 三、多线程…

【吊打面试官系列-MySQL面试题】为表中得字段选择合适得数据类型

大家好,我是锋哥。今天分享关于【为表中得字段选择合适得数据类型】面试题,希望对大家有帮助; 为表中得字段选择合适得数据类型 字段类型优先级: 整形>date,time>enum,char>varchar>blob,text 优先考虑数字类型,其次是…

c++类与对象二

文章目录 C类与对象二类的实例化类对象内存大小计算this指针特性 C类与对象二 类的实例化 用类创建对象的过程,称之为类的实例化 类是对对象进行描述的,限定了类有哪些成员,定义一个类并没有开辟内存空间。例如需要学生填写的个人表格&…

js 如何获取当日零点整的时间戳

最近遇到个问题需要取当日的零点整的时间戳去存取日程 上代码: const timestr new Date().setHours(0, 0, 0, 0) console.log(timestr) 效果展示: Tips:除了 Java 以外的语言需要除以1000 具体视情况而定 Java、js的时间戳都是毫秒级的…

每日一练:腐烂的橘子

994. 腐烂的橘子 - 力扣(LeetCode) 题目要求: 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。 每分钟&#xf…

leetcode35--搜索插入位置--二分查找刷题

搜索插入位置 一共会出现下面四种情况: 目标值在数组所有元素之前 目标值等于数组中某一个元素 目标值插入数组中的位置 目标值在数组所有元素之后 首先在二分查找的代码之前处理掉目标值在数组所有元素之前和之后的情况如果目标值在数组中的某个位置&#xff0c…

51单片机系列-按键检测原理

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 独立按键是检测低电平的。 下面我们来看一张对应的电路原理图: 在这张图当中,P1,P2,P3内部都上拉了电阻,但是P0没有&am…

学习记录:js算法(四十九):二叉树的层序遍历

文章目录 二叉树的层序遍历网上思路队列循环 总结 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的层序遍历 。 (即逐层地,从左到右访问所有节点)。 图一: 示例 1:如图一 输入:roo…

【QT】亲测有效:“生成的目标文件包含了过多的段,超出了编译器或链接器允许的最大数量”错误的解决方案

在使用dlib开发人脸对齐功能时&#xff0c;出现了”生成的目标文件包含了过多的段&#xff0c;超出了编译器或链接器允许的最大数量的错误“。 主要功能代码如下&#xff1a; #include <QApplication> #include <QImage> #include <QDebug>#include <dlib…

叶绿素透射反射率与波长

本文在分析巢湖水体反射光谱特征的基础上,通过对光谱反射率与叶绿素a 的浓度之间的关系进行分析研究,结果表明,单波段光谱反射率与叶绿素a浓度的相关系数较小,不宜用于估算叶绿素a浓度&#xff0e;光谱反射率比值RFo5.m/Rss.nm.和 690nm反射率的一阶微分均与叶绿素a浓度有较好的…

leetcode每日一题day16(24.9.26)——数组元素和与数字和的绝对差

思路&#xff1a;遍历数组在对数组元素进行求和时并使用while循环求数字和&#xff0c;由于对于一个数&#xff0c;其必定大于其个数位数字的和,所以可以直接对sum进行减 代码 int differenceOfSum(vector<int>& nums) {int ans 0;for (int x : nums) {ans x; // …

基于Springboot+Vue的玩具租赁系统(含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…

OpenSCAP部署、使用与原理分析

文章目录 前言1、概述2、安装与使用2.1、源码安装2.1.1、获取源代码2.1.2、获取构建依赖项2.1.3、构建库2.1.4、构建HTML文档2.1.5、运行测试2.1.6、安装OpenSCAP2.1.7、安装SCAP内容 2.2、使用方法2.2.1、oscap的常用命令2.2.2、显示有关SCAP内容的信息2.2.2.1、显示有关SCAP源…

WITS核心价值观【创新】篇|系统进化论 解锁新纪元

「客尊」、「诚信」、「创新」 与「卓越」 是纬创软件的核心价值观。我们秉持诚信态度&#xff0c;致力于成为客户长期且值得信赖的合作伙伴。持续提升服务厚度&#xff0c;透过数字创新实践多市场的跨境交付&#xff0c;助客户保持市场领先地位。以追求卓越的不懈精神&#xf…

【Python报错已解决】 WARNING: Ignoring invalid distribution

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…