Abstract
我们研究条件对抗网络作为图像到图像翻译问题的通用解决方案。 这些网络不仅学习从输入图像到输出图像的映射,还学习损失函数来训练这种映射。 这使得可以将相同的通用方法应用于传统上需要非常不同的损失公式的问题。 我们证明,这种方法在从标签图合成照片、从边缘图重建对象以及对图像着色等任务方面非常有效。 事实上,自从与本文相关的 pix2pix 软件发布以来,大量互联网用户(其中许多是艺术家)已经发布了他们自己对我们系统的实验,进一步证明了其广泛的适用性和易于采用,而无需进行参数调整。 作为一个社区,我们不再手工设计我们的映射函数,这项工作表明我们也可以在不手工设计损失函数的情况下获得合理的结果。
1. Introduction
图像处理、计算机图形学和计算机视觉中的许多问题都可以归结为将输入图像“翻译”为相应的输出图像。 正如一个概念可以用英语或法语表达一样,一个场景可以渲染为 RGB 图像、梯度场、边缘图、语义标签图等。与自动语言翻译类似,我们定义自动图像- 图像转换是在给定足够的训练数据的情况下将场景的一种可能表示转换为另一种表示的任务(见图 1)。 传统上,这些任务中的每一个都是通过单独的专用机器来处理的(例如,[16,25,20,9,11,53,33,39,18,58,62]),尽管设置 总是相同的:从像素预测像素。 我们本文的目标是为所有这些问题开发一个通用框架。
社区已经在这个方向上迈出了重要的一步,卷积神经网络 (CNN) 成为各种图像预测问题背后的共同主力。 CNN 学习最小化损失函数(对结果质量进行评分的目标),尽管学习过程是自动的,但仍然需要大量的手动工作来设计有效损失。 换句话说,我们仍然必须告诉 CNN 我们希望其最小化的内容。 但是,就像迈达斯国王一样,我们必须小心我们的愿望! 如果我们采取一种简单的方法并要求 CNN 最小化预测像素和地面真实像素之间的欧几里得距离,它往往会产生模糊的结果 [43, 62]。 这是因为通过对所有可能的输出进行平均来最小化欧几里德距离,这会导致模糊。 提出迫使 CNN 做我们真正想要的事情(例如输出清晰、逼真的图像)的损失函数是一个悬而未决的问题,通常需要专业知识。
如果我们可以只指定一个高级目标,例如“使输出与现实无法区分”,然后自动学习适合满足该目标的损失函数,那将是非常理想的。 幸运的是,这正是最近提出的生成对抗网络(GAN)[24,13,44,52,63]所做的。 GAN 学习一种损失,试图对输出图像是真还是假进行分类,同时训练生成模型以最小化这种损失。 模糊的图像是不能容忍的,因为它们看起来显然是假的。 由于 GAN 会学习适应数据的损失,因此它们可以应用于传统上需要非常不同类型的损失函数的多种任务。
在本文中,我们探索了条件设置下的 GAN。 正如 GAN 学习数据的生成模型一样,条件 GAN (cGAN) 学习条件生成模型 [24]。 这使得 cGAN 适合图像到图像的转换任务,在该任务中,我们以输入图像为条件并生成相应的输出图像。
GAN 在过去两年得到了大力研究,我们在本文中探索的许多技术都是之前提出的。 尽管如此,早期的论文都专注于特定的应用,并且目前还不清楚图像条件 GAN 作为图像到图像转换的通用解决方案的有效性。 我们的主要贡献是证明,在各种问题上,条件 GAN 都能产生合理的结果。 我们的第二个贡献是提出一个足以实现良好结果的简单框架,并分析几个重要架构选择的效果。 代码可在 https://github.com/phillipi/pix2pix 获取。
2. Related work
Structured losses for image modeling
图像到图像的转换问题通常被表述为每像素分类或回归(例如,[39,58,28,35,62])。 这些公式将输出空间视为“非结构化”,因为每个输出像素被认为有条件地独立于给定输入图像的所有其他像素。 相反,条件 GAN 会学习结构化损失。 结构化损失会惩罚输出的联合配置。 大量文献已经考虑过此类损失,方法包括条件随机场[10]、SSIM度量[56]、特征匹配[15]、非参数损失[37]、卷积伪先验[57]、 和基于匹配协方差统计的损失[30]。 条件 GAN 的不同之处在于,损失是学习得到的,并且理论上可以惩罚输出和目标之间任何可能不同的结构。
Conditional GANs
我们并不是第一个在条件设置中应用 GAN 的人。 先前和同时进行的工作已将 GAN 限制在离散标签 [41,23,13]、文本 [46] 以及图像上。 图像条件模型已经解决了法线贴图的图像预测[55]、未来帧预测[40]、产品照片生成[59]和稀疏注释的图像生成[31, 48](参见[47]的自回归) 解决同一问题的方法)。 其他几篇论文也使用 GAN 进行图像到图像的映射,但只是无条件地应用 GAN,依赖其他项(例如 L2 回归)来强制输出以输入为条件。 这些论文在修复[43]、未来状态预测[64]、用户约束引导的图像处理[65]、风格迁移[38]和超分辨率[36]方面取得了令人印象深刻的结果。 每种方法都是针对特定应用而定制的。 我们的框架的不同之处在于没有任何内容是特定于应用程序的。 这使得我们的设置比大多数其他设置要简单得多。
我们的方法在生成器和鉴别器的几个架构选择上也与之前的工作不同。 与过去的工作不同,对于我们的生成器,我们使用基于“U-Net”的架构[50],对于我们的判别器,我们使用卷积“PatchGAN”分类器,它仅在图像块的尺度上惩罚结构。 之前在[38]中提出了类似的 PatchGAN 架构来捕获局部风格统计数据。 在这里,我们证明这种方法对于更广泛的问题是有效的,并且我们研究了改变补丁大小的影响。
3. Method
GAN 是学习从随机噪声向量 z 到输出图像 y、G : z → y 的映射的生成模型 [24]。 相比之下,条件 GAN 学习从观察到的图像 x 和随机噪声向量 z 到 y, G : {x, z} → y 的映射。 生成器 G 被训练为产生无法通过对抗性训练的鉴别器 D 区分出“真实”图像的输出,D 被训练为尽可能好地检测生成器的“赝品”。 该训练过程如图 2 所示。
训练条件 GAN 来映射边缘→照片。 鉴别器 D 学习对假(由生成器合成)和真实的 {edge, photo} 元组进行分类。 生成器 G 学会欺骗鉴别器。 与无条件 GAN 不同,生成器和判别器都会观察输入边缘图。
3.1. Objective
条件 GAN 的目标可以表示为
为了测试条件判别器的重要性,我们还与判别器不观察 x 的无条件变体进行比较:
之前的方法发现将 GAN 目标与更传统的损失(例如 L2 距离 [43])混合在一起是有益的。 鉴别器的工作保持不变,但生成器的任务不仅是欺骗鉴别器,而且要在 L2 意义上接近真实输出。 我们还探索了这个选项,使用 L1 距离而不是 L2,因为 L1 可以减少模糊:
如果没有 z,网络仍然可以学习从 x 到 y 的映射,但会产生确定性输出,因此无法匹配 delta 函数以外的任何分布。 过去的条件 GAN 已经认识到了这一点,除了 x 之外,还提供高斯噪声 z 作为生成器的输入(例如,[55])。 在最初的实验中,我们没有发现这种策略有效——生成器只是学会了忽略噪声——这与 Mathieu 等人的观点一致。 [40]。 相反,对于我们的最终模型,我们仅以 dropout 的形式提供噪声,在训练和测试时应用于生成器的多个层。 尽管存在丢失噪声,但我们仅观察到网络输出的较小随机性。 设计产生高度随机输出的条件 GAN,从而捕获它们建模的条件分布的全部熵,是目前工作中尚未解决的一个重要问题。
3.2. Network architectures
我们根据[44]中的架构调整我们的生成器和鉴别器架构。 生成器和判别器都使用卷积-BatchNorm-ReLu [29] 形式的模块。 在线补充材料中提供了该架构的详细信息,其主要功能如下所述。
3.2.1 Generator with skips
图像到图像转换问题的一个定义特征是它们将高分辨率输入网格映射到高分辨率输出网格。 另外,对于我们考虑的问题,输入和输出在表面外观上有所不同,但都是相同底层结构的渲染。 因此,输入中的结构与输出中的结构大致一致。 我们围绕这些考虑因素设计了生成器架构。
针对该领域问题的许多先前解决方案[43、55、30、64、59]都使用了编码器-解码器网络[26]。 在这样的网络中,输入通过一系列逐渐下采样的层,直到瓶颈层,此时过程相反。 这样的网络要求所有信息流都经过所有层,包括瓶颈。 对于许多图像翻译问题,输入和输出之间共享大量低级信息,并且希望直接通过网络传输这些信息。 例如,在图像着色的情况下,输入和输出共享突出边缘的位置。
为了给生成器提供一种绕过此类信息瓶颈的方法,我们按照“U-Net”[50]的一般形状添加了跳跃连接。 具体来说,我们在每个层 i 和层 n − i 之间添加跳跃连接,其中 n 是总层数。 每个跳跃连接只是将第 i 层的所有通道与第 n − i 层的通道连接起来。
3.2.2 Markovian discriminator (PatchGAN) 马尔可夫判别器(PatchGAN)
众所周知,L2 损失和 L1(见图 4)会在图像生成问题上产生模糊结果 [34]。 尽管这些损失无法促进高频清晰度,但在许多情况下它们仍然准确地捕获低频。 对于这种情况的问题,我们不需要一个全新的框架来强制低频的正确性。 L1 已经可以了。
这促使限制 GAN 鉴别器仅对高频结构进行建模,依靠 L1 项来强制低频正确性(方程 4)。 为了对高频进行建模,将我们的注意力限制在局部图像块的结构上就足够了。 因此,我们设计了一种判别器架构(我们称之为 PatchGAN),它仅对补丁规模的结构进行惩罚。 该鉴别器尝试对图像中的每个 N×N 块是真还是假进行分类。 我们在图像上卷积运行这个判别器,对所有响应进行平均以提供 D 的最终输出。
在第 4.4 节中,我们证明 N 可以比图像的完整尺寸小得多,并且仍然产生高质量的结果。 这是有利的,因为较小的 PatchGAN 参数较少,运行速度更快,并且可以应用于任意大的图像。
这样的鉴别器有效地将图像建模为马尔可夫随机场,假设间隔大于斑块直径的像素之间是独立的。 这种联系之前在[38]中进行了探讨,也是纹理[17,21]和风格[16,25,22,37]模型中的常见假设。 因此,我们的 PatchGAN 可以理解为纹理/风格损失的一种形式。
3.3. Optimization and inference
为了优化我们的网络,我们遵循[24]中的标准方法:我们在 D 上执行一个梯度下降步骤,然后在 G 上执行一个梯度下降步骤。正如原始 GAN 论文中所建议的,而不是训练 G 来最小化 log(1 − D (x,G(x, z)),我们改为训练最大化 logD(x,G(x, z)) [24]。此外,我们在优化 D 时将目标除以 2,这会减慢速度。 D 相对于 G 进行学习。我们使用小批量 SGD 并应用 Adam 求解器 [32],学习率为 0.0002,动量参数 β1 = 0.5,β2 = 0.999。
在推理时,我们以与训练阶段完全相同的方式运行生成器网络。 这与通常的协议不同,因为我们在测试时应用 dropout,并且我们使用测试批次的统计数据而不是训练批次的聚合统计数据来应用批次标准化 [29]。 当批量大小设置为 1 时,这种批量归一化方法被称为“实例归一化”,并已被证明在图像生成任务中有效[54]。 在我们的实验中,我们根据实验使用 1 到 10 之间的批量大小。
4. Experiments
为了探索条件 GAN 的通用性,我们在各种任务和数据集上测试了该方法,包括图形任务(如照片生成)和视觉任务(如语义分割):
• 语义标签↔照片,在 Cityscapes 数据集上训练[12]。
• 建筑标签→照片,接受CMP Facades 培训[45]。 • 地图↔航拍照片,根据从 Google 地图抓取的数据进行训练。
• 黑白→彩色照片,在[51]上训练。
• 边缘→照片,根据[65]和[60]的数据进行训练; 使用 HED 边缘检测器 [58] 加上后处理生成二进制边缘。
• 草图→照片:在[19]中的手绘草图上测试边缘→照片模型。
• 白天→晚上,在[33]上训练。
• 热→彩色照片,根据[27]的数据进行训练。
• 缺少像素的照片→修复照片,在[14]的巴黎街景上训练。
在线补充材料中提供了每个数据集的培训详细信息。 在所有情况下,输入和输出都只是 1-3 通道图像。 定性结果如图 8、9、11、10、13、14、15、16、17、18、19、20 所示。图 21 中突出显示了几个失败案例。更全面的结果请访问 https://phillipi .github.io/pix2pix/。
Data requirements and speed
我们注意到,即使在小型数据集上也通常可以获得不错的结果。 我们的立面训练集仅包含 400 个图像(参见图 14 中的结果),而昼夜训练集仅包含 91 个独特的网络摄像头(参见图 15 中的结果)。 在这种大小的数据集上,训练速度可能非常快:例如,图 14 中所示的结果在单个 Pascal Titan X GPU 上训练不到两个小时。 在测试时,所有模型在此 GPU 上的运行时间均低于一秒。
4.1. Evaluation metrics
评估合成图像的质量是一个开放且困难的问题[52]。 诸如每像素均方误差之类的传统指标不会评估结果的联合统计数据,因此不会测量结构化损失旨在捕获的结构。
为了更全面地评估我们结果的视觉质量,我们采用了两种策略。 首先,我们在 Amazon Mechanical Turk (AMT) 上进行“真与假”感知研究。 对于着色和照片生成等图形问题,人类观察者的合理性通常是最终目标。 因此,我们使用这种方法测试地图生成、航空照片生成和图像着色。
其次,我们衡量合成的城市景观是否足够真实,以至于现成的识别系统可以识别其中的物体。 该指标类似于[52]中的“初始分数”、[55]中的对象检测评估以及[62]和[42]中的“语义可解释性”度量。
AMT 感知研究 对于我们的 AMT 实验,我们遵循[62]中的协议:向 Turker 提供了一系列试验,将“真实”图像与我们算法生成的“假”图像进行比较。 在每次试验中,每张图像都会出现 1 秒,之后图像就会消失,而 Turkers 有无限的时间来判断哪张图像是假的。 每次训练的前 10 张图像都是练习,并且 Turkers 会得到反馈。 主要实验的 40 次试验没有提供反馈。 每个会话一次仅测试一种算法,并且 Turker 不允许完成多个会话。 ∼ 50 位 Turker 评估了每种算法。 与[62]不同,我们没有包括警戒试验。 对于我们的着色实验,真实图像和假图像是从相同的灰度输入生成的。 对于地图↔航拍照片,真实图像和假图像不是从同一输入生成的,以使任务更加困难并避免地板水平的结果。 对于地图↔航拍照片,我们在 256×256 分辨率图像上进行训练,但利用全卷积翻译(如上所述)在 512×512 图像上进行测试,然后对这些图像进行下采样并以 256×256 分辨率呈现给 Turkers。 对于着色,我们在 256 × 256 分辨率图像上进行训练和测试,并以相同的分辨率向 Turkers 展示结果。
“FCN-score”虽然众所周知,生成模型的定量评估具有挑战性,但最近的工作[52,55,62,42]尝试使用预先训练的语义分类器来衡量生成的刺激的可辨别性作为伪度量。 直觉是,如果生成的图像是真实的,那么在真实图像上训练的分类器也将能够正确地对合成图像进行分类。 为此,我们采用流行的 FCN-8s [39] 架构进行语义分割,并在城市景观数据集上对其进行训练。 然后,我们根据合成这些照片的标签的分类准确度对合成照片进行评分。
4.2. Analysis of the objective function
方程中目标的哪些组成部分。 4个重要吗? 我们进行消融研究来隔离 L1 项(GAN 项)的影响,并使用以输入为条件的判别器(cGAN,方程 1)与使用无条件判别器(GAN,方程 2)进行比较。
图 4 显示了这些变化对两个标签→照片问题的定性影响。 单独 L1 会产生合理但模糊的结果。 单独的 cGAN(在方程 4 中设置 λ = 0)可以提供更清晰的结果,但在某些应用中会引入视觉伪影。 将两项相加(λ = 100)可以减少这些伪影。
我们使用城市景观标签→照片任务上的 FCN 分数来量化这些观察结果(表 1):基于 GAN 的目标获得了更高的分数,表明合成图像包含更多可识别的结构。 我们还测试了从判别器(标记为 GAN)中移除调节的效果。 在这种情况下,损失不会惩罚输入和输出之间的不匹配; 它只关心输出看起来是否真实。 这种变体会导致性能不佳; 检查结果表明,无论输入照片如何,生成器都会产生几乎完全相同的输出。 显然,在这种情况下,损失衡量输入和输出之间的匹配质量非常重要,而且 cGAN 的性能确实比 GAN 好得多。 但请注意,添加 L1 项也会鼓励输出尊重输入,因为 L1 损失会惩罚正确匹配输入的地面实况输出与可能不匹配的合成输出之间的距离。 相应地,L1+GAN 在创建尊重输入标签图的真实渲染方面也很有效。 结合所有项,L1+cGAN 的表现同样出色。
Colorfulness
条件 GAN 的一个显着效果是它们会产生清晰的图像,即使输入标签图中不存在空间结构,也会产生幻觉。 人们可能会认为 cGAN 对光谱维度的“锐化”具有类似的效果,即使图像更加丰富多彩。 正如当不确定边缘的确切位置时,L1 会激励模糊一样,当不确定像素应该采用几个看似合理的颜色值中的哪一个时,它也会激励平均的灰色颜色。 特别地,L1 将通过选择可能颜色的条件概率密度函数的中值来最小化。 另一方面,对抗性损失原则上可以意识到灰色输出是不切实际的,并鼓励匹配真实的颜色分布[24]。 在图 7 中,我们研究了我们的 cGAN 是否确实在 Cityscapes 数据集上实现了这种效果。 这些图显示了 Lab 颜色空间中输出颜色值的边际分布。 地面实况分布用虚线显示。 很明显,L1 导致的分布比真实值更窄,证实了 L1 鼓励平均灰色颜色的假设。 另一方面,使用 cGAN 可以使输出分布更接近真实情况。
4.3. Analysis of the generator architecture
U-Net 架构允许低级信息在网络上快捷传输。 这会带来更好的结果吗? 图 5 和表 2 将 U-Net 与城市景观生成的编码器解码器进行了比较。 只需切断 UNet 中的跳跃连接即可创建编码器-解码器。 在我们的实验中,编码器-解码器无法学习生成逼真的图像。 U-Net 的优势似乎并非条件 GAN 特有:当 U-Net 和编码器-解码器都使用 L1 损失进行训练时,U-Net 再次取得了优异的结果。
4.4. FromPixelGANs to PatchGANs to ImageGANs
我们测试了改变鉴别器感受野的补丁大小 N 的效果,从 1 × 1“PixelGAN”到全 286 × 286“ImageGAN”1。 图 6 显示了该分析的定性结果,表 3 使用 FCN 分数量化了效果。
PixelGAN 对空间清晰度没有影响,但确实增加了结果的色彩(在图 7 中量化)。例如,当网络使用 L1 损失进行训练时,图 6 中的总线被涂成灰色,但使用 PixelGAN 损失进行训练时,总线会变成红色。 颜色直方图匹配是图像处理中的常见问题[49],而 PixelGAN 可能是一种有前途的轻量级解决方案。
补丁大小变化。 对于不同的损失函数,输出的不确定性表现不同。 不确定区域在 L1 下变得模糊且不饱和。 1x1 PixelGAN 鼓励更大的颜色多样性,但对空间统计没有影响。 16x16 PatchGAN 产生局部清晰的结果,但也会导致超出其可观察范围的平铺伪影。 70×70 PatchGAN 强制输出在空间和光谱(色彩)维度上清晰,即使不正确。 完整的 286×286 ImageGAN 生成的结果在视觉上与 70×70 PatchGAN 相似,但根据我们的 FCN 分数指标,质量稍低(表 3)。 请参阅 https://phillipi.github.io/pix2pix/ 了解更多示例
使用 16×16 PatchGAN 足以促进清晰的输出,并获得良好的 FCN 分数,但也会导致平铺伪影。 70 × 70 PatchGAN 减轻了这些伪影并获得了稍好的分数。 超出此范围,扩展到完整的 286 × 286 ImageGAN,似乎并没有改善结果的视觉质量,而且实际上获得了相当低的 FCN 分数(表 3)。 这可能是因为 ImageGAN 比 70 × 70 PatchGAN 具有更多的参数和更大的深度,并且可能更难训练。
Fully-convolutional translation
PatchGAN 的一个优点是固定大小的 patch 鉴别器可以应用于任意大的图像。 我们还可以将生成器以卷积方式应用到比训练时更大的图像上。 我们在地图↔航拍照片任务上对此进行了测试。 在 256×256 图像上训练生成器后,我们在 512×512 图像上对其进行测试。
4.5 perceptual validation
4.6 semantic segmentation
4.7. Community-driven Research
自从论文和我们的 pix2pix 代码库首次发布以来,Twitter 社区,包括计算机视觉和图形从业者以及视觉艺术家,已经成功地将我们的框架应用于各种新颖的图像到图像的翻译任务,远远超出了范围 的原始纸张。 图 11 和图 12 显示了 #pix2pix 主题标签中的几个示例,包括背景去除、调色板生成、素描 → 肖像、素描 → Pokemon、“照我做的做”姿势转换、学习观察:忧郁的星期日,以及 非常流行的#edges2cats 和#fotogenerator。 请注意,这些应用程序是创造性的项目,不是在受控的科学条件下获得的,并且可能依赖于我们发布的 pix2pix 代码的一些修改。 尽管如此,它们证明了我们的方法作为解决图像到图像转换问题的通用商品工具的前景。
5. Conclusion
本文的结果表明,条件对抗网络是许多图像到图像翻译任务的一种有前途的方法,特别是那些涉及高度结构化图形输出的任务。 这些网络学习适应手头任务和数据的损失,这使得它们适用于各种设置。