Abstract
图像到图像转换是一类视觉和图形问题,其目标是使用对齐图像对的训练集来学习输入图像和输出图像之间的映射。 然而,对于许多任务,配对训练数据将不可用。 我们提出了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。 我们的目标是学习映射 G : X → Y,使得使用对抗性损失时 G(X) 中的图像分布与分布 Y 无法区分。 由于这种映射高度受限,我们将其与逆映射 F : Y → X 结合起来,并引入循环一致性损失来强制 F(G(X)) ≈ X(反之亦然)。 在不存在配对训练数据的几个任务上给出了定性结果,包括集合风格迁移、对象变形、季节迁移、照片增强等。与几种现有方法的定量比较证明了我们方法的优越性。
1. Introduction
1873 年一个可爱的春日,克劳德·莫奈将画架放在阿让特伊附近的塞纳河畔时,他看到了什么(图 1,左上)? 如果彩色照片被发明的话,它可能记录了蔚蓝的天空和倒映着天空的玻璃般的河流。 莫奈通过纤细的笔触和明亮的调色板传达了他对同一场景的印象。
如果莫奈在一个凉爽的夏夜偶然发现了卡西斯的小港口(图 1,左下),会怎样? 在莫奈的画作画廊中短暂漫步,可以想象他会如何渲染这个场景:也许是柔和的色调,突然的颜料涂抹,以及有些扁平的动态范围。
尽管我们从未见过莫奈画作与他所画场景的照片并排的例子,但我们可以想象这一切。 相反,我们了解莫奈的一组画作和一组风景照片。 我们可以推断出这两组之间的风格差异,从而想象如果我们将一个场景从一组“翻译”到另一组中会是什么样子。
在本文中,我们提出了一种可以学习执行相同操作的方法:捕获一个图像集合的特殊特征,并弄清楚如何将这些特征转化为另一个图像集合,所有这些都在没有任何配对训练示例的情况下进行。
这个问题可以更广泛地描述为图像到图像的转换[22],将图像从给定场景的一种表示形式 x 转换为另一种表示形式 y,例如,灰度到颜色、图像到语义标签、边缘图到照片 。 计算机视觉、图像处理、计算摄影和图形学方面的多年研究已经在监督环境中产生了强大的翻译系统,其中可以使用示例图像对 {xi, yi}N i=1(图 2,左),例如 [ 11、19、22、23、28、33、45、56、58、62]。 然而,获得配对训练数据可能很困难且昂贵。 例如,只有几个数据集用于语义分割等任务(例如[4]),而且它们相对较小。 获得艺术风格化等图形任务的输入输出对可能更加困难,因为所需的输出非常复杂,通常需要艺术创作。 对于许多任务,例如对象变形(例如,斑马↔马,图 1 中上),所需的输出甚至没有明确定义。
因此,我们寻求一种无需配对输入输出示例即可学习在域之间进行转换的算法(图 2,右)。 我们假设域之间存在某种潜在的关系——例如,它们是同一底层场景的两种不同的渲染——并试图学习这种关系。 尽管我们缺乏成对示例形式的监督,但我们可以利用集合级别的监督:我们在域 X 中得到一组图像,在域 Y 中得到一组不同的图像。我们可以训练映射 G : X → Y 这样 通过训练将 ˆy 与 y 分类的对手,输出 ˆy = G(x), x ∈ X 与图像 y ∈ Y 无法区分。 理论上,这个目标可以在 ^y 上产生一个与经验分布 pdata(y) 相匹配的输出分布(一般来说,这要求 G 是随机的)[16]。 因此,最优 G 将域 X 转换为与 Y 分布相同的域 ^Y。然而,这样的转换并不能保证单个输入 x 和输出 y 以有意义的方式配对 - 会产生无限多个映射 G ˆy 上的分布相同。 此外,在实践中,我们发现很难单独优化对抗性目标:标准程序通常会导致众所周知的模式崩溃问题,即所有输入图像映射到相同的输出图像,并且优化无法取得进展[15] 。
这些问题要求为我们的目标添加更多结构。 因此,我们利用翻译应该“循环一致”的特性,例如,如果我们将一个句子从英语翻译成法语,然后将其从法语翻译回英语,我们应该回到原始句子 [3]。 从数学上讲,如果我们有一个翻译器 G : X → Y 和另一个翻译器 F : Y → X,那么 G 和 F 应该是彼此的逆,并且两个映射都应该是双射。 我们通过同时训练映射 G 和 F,并添加循环一致性损失 [64] 来应用这种结构假设,以鼓励 F(G(x)) ≈ x 和 G(F(y)) ≈ y。 将此损失与域 X 和 Y 上的对抗性损失相结合,得出我们不成对的图像到图像转换的完整目标。
我们将我们的方法应用于广泛的应用,包括收藏风格转移、对象变形、季节转移和照片增强。 我们还与以前依赖于手动定义的样式和内容分解或共享嵌入函数的方法进行比较,并表明我们的方法优于这些基线。 我们提供 PyTorch 和 Torch 实现。 在我们的网站上查看更多结果。
2. Related work
Generative Adversarial Networks (GANs)
[16, 63] 在图像生成 [6, 39]、图像编辑 [66] 和表示学习 [39, 43, 37] 方面取得了令人印象深刻的成果。 最近的方法在条件图像生成应用中采用了相同的想法,例如文本2图像[41]、图像修复[38]和未来预测[36],以及视频[54]和3D数据[57]等其他领域。 GAN 成功的关键是对抗性损失的想法,它迫使生成的图像原则上与真实照片无法区分。 这种损失对于图像生成任务尤其严重,因为这正是许多计算机图形学旨在优化的目标。 我们采用对抗性损失来学习映射,使得翻译后的图像无法与目标域中的图像区分开。
Image-to-Image Translation
图像到图像转换的想法至少可以追溯到 Hertzmann 等人的图像类比 [19],他们在单个输入-输出训练图像对上采用非参数纹理模型 [10]。 最近的方法使用输入输出示例数据集来学习使用 CNN 的参数翻译函数(例如,[33])。 我们的方法建立在 Isola 等人的“pix2pix”框架之上。 [22],它使用条件生成对抗网络[16]来学习从输入到输出图像的映射。 类似的想法已应用于各种任务,例如从草图 [44] 或从属性和语义布局 [25] 生成照片。 然而,与上述先前的工作不同,我们在没有配对训练示例的情况下学习映射。
Unpaired Image-to-Image Translation
其他几种方法也解决了未配对的设置,其目标是关联两个数据域:X 和 Y。Rosales 等人[42]提出了一个贝叶斯框架,其中包括基于从源图像计算的基于补丁的马尔可夫随机场的先验和从多个风格图像获得的似然项。 最近,CoGAN [32] 和跨模态场景网络 [1] 使用权重共享策略来学习跨域的通用表示。 与我们的方法同时,刘等人[31]通过变分自动编码器[27]和生成对抗网络[16]的组合扩展了上述框架。 另一条并行工作[46,49,2]鼓励输入和输出共享特定的“内容”特征,即使它们的“风格”可能不同。 这些方法还使用对抗网络,并使用附加项来强制输出接近预定义度量空间中的输入,例如类标签空间[2]、图像像素空间[46]和图像特征空间[49]。
与上述方法不同,我们的公式不依赖于输入和输出之间任何特定于任务的预定义相似性函数,也不假设输入和输出必须位于相同的低维嵌入空间中。 这使得我们的方法成为许多视觉和图形任务的通用解决方案。 我们在 5.1 节中直接与几种先前和当代的方法进行比较。
Cycle Consistency
使用传递性作为规范结构化数据的方法的想法有着悠久的历史。 在视觉跟踪中,几十年来,强制执行简单的前后一致性一直是标准技巧 [24, 48]。 在语言领域,通过“反向翻译和协调”来验证和改进翻译是人类翻译人员 [3](幽默地包括马克·吐温 [51])以及机器 [17] 使用的技术。 最近,高阶循环一致性已被用于运动结构 [61]、3D 形状匹配 [21]、协同分割 [55]、密集语义对齐 [65, 64] 和深度估计 [14]。 其中,周等人[64]和戈达尔等人。 [14]与我们的工作最相似,因为他们使用循环一致性损失作为使用传递性来监督 CNN 训练的一种方式。 在这项工作中,我们引入了类似的损失来推动 G 和 F 彼此一致。 与我们的工作同时,在这些相同的程序中,Yi 等人[59]受机器翻译中对偶学习的启发,独立使用类似的目标进行不配对的图像到图像的翻译[17]。
Neural Style Transfer
[13,23,52,12]是执行图像到图像翻译的另一种方式,它根据格拉姆矩阵匹配,通过将一个图像的内容与另一个图像(通常是绘画)的风格相结合来合成新颖的图像 预训练深度特征的统计。 另一方面,我们的主要重点是通过尝试捕获更高级别的外观结构之间的对应关系来学习两个图像集合之间的映射,而不是两个特定图像之间的映射。 因此,我们的方法可以应用于其他任务,例如(绘画→照片、物体变形等,其中单样本传输方法表现不佳。我们在5.2节中比较这两种方法。
3. Formulation
我们的目标是在给定训练样本 {xi}N i=1(其中 xi ∈ X)和 {yj}M j=1(其中 yj ∈ Y1)的情况下学习两个域 X 和 Y 之间的映射函数。 我们将数据分布表示为 x ∼ pdata(x) 和 y ∼ pdata(y)。 如图 3 (a) 所示,我们的模型包括两个映射 G : X → Y 和 F : Y → X。此外,我们引入了两个对抗性判别器 DX 和 DY,其中 DX 旨在区分图像 {x} 和翻译后的图像 图像 {F(y)}; 同样,DY 的目标是区分 {y} 和 {G(x)}。 我们的目标包含两种类型的术语:对抗性损失[16],用于将生成的图像的分布与目标域中的数据分布进行匹配; 和循环一致性损失,以防止学习到的映射 G 和 F 相互矛盾。
(a) 我们的模型包含两个映射函数 G : X → Y 和 F : Y → X,以及相关的对抗性判别器 DY 和 DX。 DY 鼓励 G 将 X 转换为与域 Y 无法区分的输出,对于 DX 和 F 而言反之亦然。为了进一步规范映射,我们引入了两个循环一致性损失,它们捕获了如果我们从一个域转换到另一个域并再次转换回来的直觉 我们应该到达我们开始的地方:(b)前向循环一致性损失:x→G(x)→F(G(x))≈x,(c)后向循环一致性损失:y→F(y) → G(F(y)) ≈ y
3.1. Adversarial Loss
我们将对抗性损失[16]应用于两个映射函数。 对于映射函数 G : X → Y 及其判别器 DY,我们将目标表示为:
其中G试图生成看起来类似于来自域Y的图像的图像G(X),而DY的目标是区分翻译样本G(X)和真实样本y。G的目标是针对试图最大化该目标的对手D最小化该目标,即,明minGmaxDY LGAN(G,DY,X,Y)。对于映射函数F:Y→X及其判别子DX,我们也引入了类似的对抗性损失:即minF MaxDXLGan(F,DX,Y,X)。
3.2. Cycle Consistency Loss
理论上,对抗性训练可以学习映射G和F,它们产生的输出分别与目标域Y和X相同(严格地说,这要求G和F是随机函数)[15]。然而,在足够大的容量下,网络可以将相同的一组输入图像映射到目标域中的任意随机图像排列,其中任何学习到的映射都可以诱导出与目标分布匹配的输出分布。因此,单独的对抗损失不能保证学习到的函数可以将单个输入xi映射到期望的输出yi。为了进一步缩小可能的映射函数的空间,我们认为学习到的映射函数应该是循环一致的:如图3 (b)所示,对于来自域x的每个图像x,图像平移周期应该能够将x带回到原始图像,即x→G(x)→F(G(x))≈x。我们称之为前向循环一致性。同样,如图3 (c)所示,对于来自y域的每个图像y, G和F也应该满足反向循环一致性:y→F(y)→G(F(y))≈y。我们使用循环一致性损失来激励这种行为:
在初步实验中,我们还尝试用F(G(x))和x之间以及G(F(y))和y之间的对抗性损失替换L1范数,但没有观察到性能的改善。
周期一致性损失引起的行为可以从图4中观察到:重建图像F(G(x))最终与输入图像x非常匹配。
3.3. Full Objective
我们的全部目标是:
其中λ控制两个物镜的相对重要性。我们的目标是解决:
请注意,我们的模型可以被视为训练两个“自编码器”[20]:我们学习一个自编码器F◦G: X→X与另一个G◦F: Y→Y联合学习。然而,这些自编码器每个都有特殊的内部结构:它们通过中间表示将图像映射到自身,中间表示是将图像翻译到另一个域。这种设置也可以看作是“对抗性自编码器”[34]的特殊情况,它使用对抗性损失来训练自编码器的瓶颈层以匹配任意目标分布。在我们的例子中,X→X自编码器的目标分布是域Y的分布。
在第5.1.4节中,我们将我们的方法与完整目标的消融进行了比较,包括单独的对抗损失LGAN和单独的周期一致性损失Lcyc,并通过经验表明,这两个目标在获得高质量结果方面都发挥了关键作用。我们还评估了我们的方法在一个方向上只有周期损失,并表明单个周期不足以正则化这个欠约束问题的训练。
4. Implementation
Network Architecture
我们采用了Johnson等人的生成网络架构,他们在神经风格迁移和超分辨率方面取得了令人印象深刻的成果。该网络包含三个卷积,几个残差块[18],两个步幅为1/2的分数阶卷积,以及一个将特征映射到RGB的卷积。我们使用6块用于128 × 128的图像,9块用于256×256和更高分辨率的训练图像。与Johnson等人的[53]类似,我们使用实例规范化[53]。对于鉴别器网络,我们使用70 × 70 PatchGANs[22,30,29],其目的是对70 × 70个重叠图像补丁的真假进行分类。这样的补丁级鉴别器架构比全图像鉴别器具有更少的参数,并且可以以完全卷积的方式处理任意大小的图像[22]。
Training details
我们从最近的工作中应用两种技术来稳定我们的模型训练过程。首先,对于LGAN(方程1),我们用最小二乘损失[35]代替负对数似然目标。这种损失在训练过程中更稳定,产生更高质量的结果。特别是,对于GAN损失LGAN(G,D,X, Y),
其次,为了减少模型振荡[15],我们遵循Shrivastava等人的策略[46],使用生成图像的历史而不是最新生成器生成的图像来更新鉴别器。我们保留一个图像缓冲区来存储之前创建的50个图像。
对于所有的实验,我们在方程3中设置λ = 10。我们使用Adam求解器[26],批量大小为1。所有的网络都是从零开始训练的,学习率为0.0002。我们在前100个epoch中保持相同的学习率,并在接下来的100个epoch中线性衰减到零。有关数据集、架构和训练过程的更多细节,请参阅附录(第7节)。
5. Results
我们首先将我们的方法与最近在配对数据集上的非配对图像到图像转换方法进行比较,其中地面真值输入输出对可用于评估。然后,我们研究了对抗损失和周期一致性损失的重要性,并将我们的完整方法与几种变体进行了比较。最后,我们证明了算法在不存在成对数据的广泛应用中的通用性。为简洁起见,我们将我们的方法称为CycleGAN。PyTorch和Torch的代码、模型和完整的结果可以在我们的网站上找到。
5.1. Evaluation
使用与“pix2pix”[22]相同的评估数据集和指标,我们将我们的方法与几个基线进行定性和定量比较。这些任务包括cityscape数据集[4]上的↔照片的语义标签,以及从谷歌Maps上抓取的数据上的↔航空照片的map。我们还对全损失函数进行了消融研究。
5.1.1 Evaluation Metrics
5.1.2 Baselines
5.1.3 Comparison against baselines
5.1.4 Analysis of the loss function
在表4和表5中,我们比较了完全损失的消融。去除GAN损失会大大降低结果,去除循环一致性损失也是如此。因此,我们得出结论,这两个术语对我们的结果都至关重要。我们还用仅在一个方向上的周期损失来评估我们的方法:GAN+正向周期损失Ex ~ pdata(x)[||F(G))−x||1],或GAN+反向周期损失Ey ~ pdata(y)[||G(F(y))−y||1](公式2),并发现它经常会导致训练不稳定并导致模式崩溃,特别是对于被删除的映射方向。图7显示了几个定性的例子。
5.1.5 Image reconstruction quality
在图4中,我们展示了重建图像F(G(x))的一些随机样本。我们观察到,在训练和测试时间,重构图像经常接近原始输入x,即使在一个域表示明显更多样化的信息的情况下,例如地图↔航空照片。
5.1.6 Additional results on paired datasets
图8显示了在" pix2pix "[22]中使用的其他成对数据集上的一些示例结果,例如来自CMP Facade数据库[40]的建筑标签↔照片和来自UT Zappos50K数据集[60]的边↔鞋子。我们的结果的图像质量接近于完全监督的pix2pix产生的图像质量,而我们的方法在没有成对监督的情况下学习映射。
5.2. Applications
我们在几个不存在成对训练数据的应用中演示了我们的方法。有关数据集的更多详细信息,请参阅附录(第7节)。我们观察到,训练数据的翻译通常比测试数据的翻译更有吸引力,并且在我们的项目网站上可以查看所有应用程序对训练数据和测试数据的完整结果。
Collection style transfer (Figure 10 and Figure 11)
我们在从Flickr和WikiArt下载的风景照片上训练模型。与最近在“神经风格转移”[13]上的工作不同,我们的方法学习模仿整个艺术品收藏的风格,而不是转移单个选定艺术品的风格。因此,我们可以学习生成像梵高这样的风格的照片,而不仅仅是星空的风格。每个艺术家/风格的数据集大小分别为526、1073、400,塞尚、莫奈、梵高和浮世绘的数据集大小分别为563。
Object transfiguration (Figure 13)
训练模型将一个对象类从ImageNet[5]转换为另一个对象类(每个类包含大约1000个训练图像)。Turmukhambetov等人提出了一种子空间模型,将一个对象转换为同一类别的另一个对象,而我们的方法侧重于两个视觉上相似的类别之间的对象转换。
Season transfer (Figure 13)
该模型使用从Flickr下载的约塞米蒂的854张冬季照片和1273张夏季照片进行训练。
Photo generation from paintings (Figure 12)
对于绘画→照片,我们发现引入一个额外的损失来鼓励映射保持输入和输出之间的颜色组成是有帮助的。特别是,我们采用了taigman等人的技术,当目标域的真实样本作为生成器的输入时,将生成器正则化到接近恒等映射:即
身份映射的缺失对莫奈绘画的影响→照片。从左到右:输入绘画,无身份映射丢失的CycleGAN,有身份映射丢失的CycleGAN。恒等映射损失有助于保留输入画作的颜色。
没有liidentity,生成器G和F可以在不需要的时候随意改变输入图像的色调。例如,在学习莫奈的画作与Flickr照片之间的映射时,生成器经常将白天的画作映射到日落时拍摄的照片,因为这样的映射在对抗性损失和循环一致性损失下可能同样有效。这种身份映射丢失的影响如图9所示。
在图12中,我们展示了将莫奈的绘画翻译成照片的其他结果。该图和图9显示了包含在训练集中的绘画的结果,而对于本文中所有其他实验,我们只评估和显示测试集的结果。因为训练集不包括配对数据,所以为训练集绘画提出一个合理的翻译是一项重要的任务。的确,自从莫奈不再能够创作新的绘画,泛化到看不见的,“测试集”,绘画不是一个紧迫的问题。
Photo enhancement (Figure 14)
结果表明,该方法可用于生成较浅景深的照片。我们用从Flickr下载的花照片来训练模型。源域由智能手机拍摄的花朵照片组成,由于光圈小,通常具有较深的景深。目标包含由较大光圈的数码单反相机拍摄的照片。我们的模型成功地从智能手机拍摄的照片中生成了景深较浅的照片。
Comparison with Gatys et al. [13]
在图15中,我们将我们的结果与照片风格化的神经风格转移[13]进行比较。对于每一行,我们首先使用两个代表性的艺术品作为[13]的样式图像。另一方面,我们的方法可以生成整个集合风格的照片。为了与整个集合的神经风格转移进行比较,我们计算了目标域上的平均Gram矩阵,并使用该矩阵与Gatys等人一起转移“平均风格”。
图16展示了其他翻译任务的类似比较。我们观察到Gatys等人[13]需要找到与期望输出密切匹配的目标风格图像,但仍然经常无法产生逼真的结果,而我们的方法成功地生成了类似于目标域的自然效果。
6. Limitations and Discussion
虽然我们的方法可以在许多情况下取得令人信服的结果,但结果远非一致积极。图17显示了几个典型的故障案例。在涉及颜色和纹理变化的翻译任务中,正如上面报道的许多翻译任务一样,这种方法通常是成功的。我们还探索了需要几何变化的任务,但收效甚微。例如,在狗→猫转换任务中,学习到的翻译退化为对输入进行最小的更改(图17)。此故障可能是由我们的生成器架构引起的,该架构针对外观变化进行了定制,以获得良好的性能。处理更多变化和极端的变换,特别是几何变换,是今后工作的重要问题。
一些失败案例是由训练数据集的分布特征引起的。例如,我们的方法在马→斑马的例子中出现了混淆(图17,右),因为我们的模型是在ImageNet的野马和斑马同义词集上训练的,而ImageNet不包含人骑马或斑马的图像。
我们还观察到,使用配对训练数据获得的结果与使用非配对方法获得的结果之间存在挥之不去的差距。在某些情况下,这种差距可能很难——甚至不可能——消除:例如,我们的方法有时会在photos→labels任务的输出中为tree和building排列标签。解决这种歧义可能需要某种形式的弱语义监督。集成弱或半监督数据可能会导致更强大的翻译器,但注释成本仍然是全监督系统的一小部分。
尽管如此,在许多情况下,完全不成对的数据是大量可用的,应该加以利用。这篇论文推动了在这种“无监督”环境中可能发生的事情的边界。