论文学习 StarGANv2 ——StarGAN v2: Diverse Image Synthesis for Multiple Domains

多领域不同图像合成

We have made dataset available at https://github.com/clovaai/stargan-v2.

摘要:

一个好的图像到图像转换模型 应该学习不同视觉域之间的映射,同时满足以下属性:

1)生成图像的多样性

2)在多个域上的可扩展性。

现有的方法解决了这两个问题,具有有限 的多样性 或者对于所有域有多个模型。

我们提出了StarGAN v2,这是一个解决这两个问题的单个框架,并且在基线上显示出显着改善的结果。在CelebAHQ和一个新的动物面部数据集(AFHQ)上的实验验证了我们在视觉质量、多样性和可扩展性方面的优势。为了更好地评估图像到图像的翻译模型,我们发布了AFHQ,具有较大域间和域内差异的高质量动物面孔。代码、预训练模型和数据集可在clovaai/stargan-v2上获得。

1. Introduction

图像到图像的转换 旨在学习不同视觉域之间的映射 [20]。在这里,域意味着一组图像,这些图像可以被分组为一个视觉上独特的类别,每个图像都有一个独特的外观 ,我们称之为风格 。例如,我们可以根据一个人的性别设置图像域,在这种情况下,风格包括化妆、胡须和发型(图1的上半部分)。理想的图像到图像翻译方法应该能够综合考虑每个域中不同风格的图像。然而,设计和学习这样的模型变得复杂,因为数据集中可能有任意大量的风格和域。

为了解决风格多样性问题,人们开展了大量图像到图像翻译的研究[1,16,34,28,38,54]。这些方法向生成器注入一个低维的潜在代码 ,该代码可以从标准高斯分布中随机采样。它们的域特定解码器在生成图像时将潜在代码解释为各种风格的配方(domain-specific decoders)。然而,由于这些方法只考虑了两个域之间的映射 ,因此它们不能扩展到越来越多的域。例如,如果有K个域,这些方法需要训练K(K-1)个生成器来处理每个域和每个域之间的转换,这限制了它们的实际使用。为了解决可扩展性问题,一些研究提出了一个统一的框架[2,7,17,30]。StarGAN[7]是最早的模型之一,它使用单个生成器学习所有可用域之间的映射。该生成器将域标签作为附加输入,并学习将图像转换为相应的域 。然而,StarGAN仍然学习每个域的确定性映射,这并没有捕捉到数据分布的多模态性质。这种限制来自于这样一个事实,即每个域都由预先确定的标签表示。请注意,生成器接收一个固定的标签(例如一个热向量)作为输入,因此它不可避免地在给定源图像的每个域产生相同的输出 ,为了两全其美,我们提出了StarGAN v2,这是一种可扩展的方法,可以在多个领域生成不同的图像 。特别是,我们从StarGAN开始,用我们提出的可以表示特定领域的各种风格的特定领域样式代码domain specific style code 替换其领域标签domain label

为此,我们介绍了映射网络和样式编码器两个模块(a mapping network and a style encoder)。映射网络学习将随机高斯噪声转换为样式编码,而编码器学习从给定的参考图像中提取样式编码。考虑到多个领域,两个模块都有多个输出分支,每个分支都为特定领域提供样式代码。最后,利用这些样式代码,我们的生成器学会了在多个域中成功地合成不同的图像(图1)。

我们首先研究了 StarGAN v2 的各个组件的影响,并表明我们的模型确实受益于使用样式代码(第 3.1 节)。我们凭经验证明,与领先的方法相比,我们提出的方法可以扩展到多个领域,并在视觉质量和多样性方面提供了明显更好的结果(第 3.2 节)。最后但并非最不重要的一点是,我们提出了一个新的动物人脸数据集(AFHQ),具有高质量和广泛变化(附录 A),以更好地评估图像到图像转换模型在大的域间和域内差异上的性能。我们公开发布此数据集供研究界公开

2. StarGAN v2

在本节中,我们将描述我们提出的框架及其训练目标函数。

2.1. Proposed framework

设X和Y分别为图像和可能域的集合。给定一个图像 x ∈ X 和一个任意域 y ∈ Y,我们的目标是训练一个生成器 G,它可以生成 对应于图像 x 的每个域 y 的不同图像。我们在每个域的学习风格空间中生成特定领域的风格向量domain-specific style vectors,并训练 G 以反映风格向量。图 2 说明了我们框架的概述,它由下面描述的四个模块组成。

生成器(图 2a)。我们的生成器 G 将输入图像 x 转换为输出图像 G(x, s),反映特定领域的样式代码 s,由映射网络 F 或样式编码器 E 提供。我们使用自适应实例归一化 (AdaIN) [15, 22] 将 s 注入 G。我们观察到 s 旨在表示特定领域 y 的风格,这消除了为 G 提供 y 的必要性,并允许 G 合成所有域的图像。

映射网络(图 2b)。给定一个潜在代码 z 和一个域 y,我们的映射网络 F 生成一个样式代码 = Fy (z),其中 Fy (·) 表示对应于域 y 的 F 的输出。F 由具有多个输出分支的 MLP 组成,为所有可用域提供样式代码。F 可以通过随机采样潜在向量 z ∈ Z 和域 y ∈ Y 来产生不同的样式代码。我们的多任务架构允许 F 有效且有效地学习所有域的样式表示。

样式编码器(图 2c)。给定一个图像 x 及其对应的域 y,我们的编码器 E 提取 x 的样式代码 = Ey (x)。这里,Ey (·) 表示对应于域 y 的 E 的输出。与 F 类似,我们的风格编码器受益于多任务学习设置。E 可以使用不同的参考图像产生不同的样式代码。这允许 G 合成反映参考图像 x 样式的输出图像。

判别器(图 2d)。我们的鉴别器 D 是一个多任务鉴别器 [30, 35],它由多个输出分支组成。每个分支 Dy 学习二元分类,确定图像 x 是其域 y 的真实图像还是 G 生成的假图像 G(x, s)。

2.2. Training objectives

给定一个图像 x ∈ X 及其原始域 y ∈ Y,我们使用以下目标训练我们的框架。

**Adversarial objective.**对抗性目标。在训练期间,我们随机抽取潜在代码 z ∈ Z 和目标域 ̃y ∈ Y,生成目标风格编码s = F ̃y (z). 生成器 G 将图像 x 和 ̃s 作为输入,并通过对抗性损失学习生成输出图像 G(x, ̃s)

其中 Dy (·) 表示对应于域 y 的 D 的输出。映射网络F学习提供目标y中可能出现的样式代码s,G学习利用s并生成与域y真实图像无法区分的图像G(x,s)

Style reconstruction.风格重建。为了强制生成器G在生成图像G(x,s)时利用样式代s,我们采用了样式重建损失

这个目标类似于以前的方法 [16, 54],它使用多个编码器来学习从图像到其潜在代码的映射。显着差异是我们训练一个编码器 E 来鼓励多个领域的不同输出。在测试时,我们学习的编码器 E使 G 转换输入图像,反映图像图像的风格。

**Style diversification.**为了进一步使生成器G产生不同的图像,我们用多样性敏感损失[34,48]显式地正则化G

其中目标样式代码 ̃s1 和 ̃s2 由 F 产生,条件是两个随机潜在代码 z1 和 z2 ̃si = F ̃y (zi) 对于 i ∈ {1, 2})。最大化正则化项迫使 G 探索图像空间并发现有意义的样式特征来生成不同的图像。请注意,在原始形式中,分母中‖z1−z2‖1的微小差异显著增加了损失,这使得训练由于梯度较大而不稳定。因此,我们删除了分母部分,并设计了一个新的方程来稳定训练,但具有相同的直觉。

Preserving source characteristics.保留源特性。为了保证生成的图像G(x,̃s)正确地保留了其输入图像x的域不变特征(例如姿势),我们采用了循环一致性损失[7,24,53]

其中 ^s = Ey (x) 是输入图像 x 的估计样式代码,y 是 x 的原始域。通过鼓励生成器 G 使用估计的样式代码 ^s 重建输入图像 x,G 学会在忠实地改变其样式的同时保留 x 的原始特征。

**完整的目标。**我们的完整目标函数可以总结如下:

其中 λsty 、 λds 和 λcyc 是每个词的超参数。我们还以与上述目标相同的方式进一步训练我们的模型,在生成样式代码时使用参考图像而不是潜在向量。我们在附录 B 中提供了训练细节。

相关推荐
西岸行者11 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意11 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码11 天前
嵌入式学习路线
学习
毛小茛11 天前
计算机系统概论——校验码
学习
babe小鑫11 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms11 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下11 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。11 天前
2026.2.25监控学习
学习
im_AMBER11 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J11 天前
从“Hello World“ 开始 C++
c语言·c++·学习