论文翻译之Image-to-Image Translation with Conditional Adversarial Networks(Pix2Pix)

论文名称:Image-to-Image Translation with Conditional Adversarial Networks
作者:Phillip Isola等,2016
论文地址:https://arxiv.org/pdf/1611.07004.pdf
引用格式:Isola, P., Zhu, J.-Y., Zhou, T., & Efros, A. A. (2017). Image-to-Image Translation with Conditional Adversarial Networks. 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). doi:10.1109/cvpr.2017.632

基于条件对抗网络的“图像到图像转换“


图1.图像处理,图形和视觉方面的许多问题都涉及将输入图像转换成相应的输出图像。即使都是将像素映射到像素这样设置相同的问题,也通常使用不同的特定于相应应用程序的算法来解决。条件对抗网络是一种通用解决方案,似乎可以很好地解决这些问题,这里仅展示此法的几种示例。在每种情况下,我们都使用相同的体系结构和目标来训练不同的数据。

摘要

     我们将条件对抗网络视为图像到图像转换问题的通用解决方案。这些网络不仅学习从输入图像到输出图像的映射,还学习损失函数来训练此映射。如此一来,就可以实现用同样的通用方法来解决通常需要多种损失函数才能解决的问题。已经证实,这种方法在从标签地图中合成图片、从边缘地图中重构对象、图像彩色化以及其他任务中都十分有效。作为一个社区,我们不再手工设计映射函数,这项工作表明没有人工设计损失函数也可以取得合理的结果。

前言

    图像处理、计算机图形学和计算机视觉中的很多问题都可以看作是从输入图像到相关的输出图像的一种“转换“。就像一种概念可以用英语或者法语来表达,一幅图像也可以表述成RGB图像、梯度场、边缘图、语义标签图等。类似于自动语言翻译,我们定义了”图像到图像的自动翻译“,对于给定的足够的数据集(见图1),可以将一种图像的可能表现形式转化为另外一种表现形式。语言翻译困难的一个原因是语言之间的映射很少是一对一的——任何给定的概念翻译成一种语言都比另外一种语言更简单。与之相似,大多数的图像到图像的转化问题也通常是多对一的(计算机视觉)——将图片映射到边缘、片段或者语义标签上;或是一对多的(计算机图形学)——将标签或者稀疏用户输入映射到真实图像。传统上,这些任务中的每一项都是用单独的专用机制来完成的(比如, [7,15,11,1,3,37,21,26,9,42,46]),尽管设置总是相同的:从像素预测像素。本文的目标是为所有这些问题建立一个共同的框架。

    随着卷积神经网络(CNNs)成为各种各样的图像预测问题背后的共同主力,社区已经在这个方向上迈出了重要的一步。CNNs学习最小化损失函数(一个衡量结果质量的目标),尽管学习过程是自动的,但仍需要大量的人工来设计有效的损失。换句话说,我们仍然要告诉CNN我们希望它最小化什么。但是,就像迈达斯一样,我们必须小心我们的愿望!如果我们采取一种天真的方法,并要求CNN最小化预测和真实值之间的欧几里德距离,它将倾向于产生模糊的结果[29,46]。这是因为欧几里德距离是所有合理输出的最小平均值,这导致模糊。提出损失函数,迫使CNN做我们真正想要做的事情——例如,输出清晰、逼真的图像——是一个开放的问题,通常需要专家知识。

    如果我们可以只指定一个高目标,比如“使输出与真实图像不可区分”,然后自动学习一个适合于满足这个目标的损失函数,那将是非常可取的。幸运的是,这正是最近提出的GANs所做的事情[14,5,30,36,47]。GANs学习一个损失函数,这个损失函数试图判别输出图像是真或假,与此同时训练一个生成器模型来最小化损失函数。模糊的图像是不能容忍的,因为它们看起来明显是假的。因为GANs学习的是适应数据的损失函数,所以它们可以应用在许多传统上需要多种不同类型的损失函数的任务上。
  在这篇文章中,我们探讨了条件设置中的GANs。就像GANs学习数据的生成模型一样,条件GANs(cGANs)也学习条件生成模型[14]。这使得cGANs适合于图像到图像的转换任务,在这种任务中,我们对输入图像进行处理并生成相应的输出图像。

    在过去的两年中,GANs得到了大力的研究,我们在本文中探索的许多技术都是先前提出的。尽管如此,早期的论文主要集中在具体的应用上,而图像条件GANs作为图像到图像转换的通用解决方案的有效性还不清楚。我们的首要贡献是证实了条件GANs在各种各样的问题上可以产生合理的结果。第二个贡献是提供了一个足以获取较好结果的简单框架,以及分析了几个重要体系结构选择的影响。代码详见:https://github.com/phillipi/pix2pix.

1 相关工作

    图像建模中的结构损失 图像到图像的转换问题通常是通过像素分类或回归来描述的。这些公式将输出空间视为“非结构化”,即每个输出像素在给定输入图像的情况下被视为有条件地独立于所有其他像素。而条件GANs就是学习一个结构损失。结构损失会惩罚输出的联合配置。大量文献都考虑了这类损失,常用的方法包括条件随机场[2],SSIM度量[40]、特征匹配[6]、非参数损失[24]、卷积伪先验[41]和基于匹配协方差统计的损失[19]。而我们的条件GAN是不同的,因为损失是学习的,并且在理论上可以惩罚输出和目标之间任何可能不同的结构。

    条件GANs 我们不是第一个在条件设置中应用GANs的人。以前的工作已经把GANs限定在离散的标签[28],文本[32]和图像上。图像条件模型解决了修复[29]、来自法线映射的图像预测[39]、由用户约束引导的图像操作[49]、未来帧预测[27]、未来状态预测[48]、产品照片生成[43]和样式转换[25]。这些方法中的每一种都是为特定的应用量身定做的。我们的框架的不同之处在于,没有什么是特定于具体应用的。这使我们的设置比大多数其他设置简单得多。我们的方法在生成器和判别器的一些架构选择上也不同于这些先前的工作。与过去的工作不同,对于生成器,我们使用基于“U-Net”的体系结构[34],对于判别器,我们使用卷积的“PatchGAN”分类器,它只在图像块的尺度上惩罚结构。一个类似的Patch-GAN架构之前在[25]中提出过,目的是捕获本地风格的统计信息。在这里,我们表明,这种方法在更广泛的问题上是行之有效的,我们也调查了改变块大小的影响。

2 方法

    GANs是学习从随机噪声向量z到输出图像y的映射:G:z→y的生成模型[14]。相反,条件GANs学习从观测图像x和随机噪声向量z到y的映射:G:{x,z}→y。训练发生器G生成与“真实”图像难以区分的输出图像,使相对训练的判别者D区分不出真伪,而训练判别器D以尽可能好地检测发生器的“赝品”。训练程序如图2所示。
在这里插入图片描述
图2.训练一个条件GAN来根据地图预测航拍照片。判别器D学会在真实和合成对之间进行分类,生成器学习如何骗过判别器,与无条件GAN不同,发生器和判别器都观察输入图像。

2.1目标

条件GAN的目标可以表示为:
在这里插入图片描述
其中G试图最小化这个目标,而D试图最大化这个目标,即:
G* =

为了测试条件化判别器的重要性,我们还将判别器不观察x的无条件变量进行了比较:

  以前的条件GAN方法发现,将GAN目标与更传统的损失(如L2距离)相结合是有益的[29]。判别器的工作保持不变,但是生成器的任务不仅既要骗过判别器,还要在L2意义上接近真实值输出。我们还探讨了这个选择,使用L1距离而不是L2,因为L1会减少模糊:
在这里插入图片描述我们的最终目标是:
在这里插入图片描述  没有z网络仍然可以学习从x到y的映射,但会产生确定性输出,因此无法匹配除delta函数以外的任何分布。过去的条件GANs已经承认了这一点,并且除了x之外,还提供了高斯噪声z作为生成器的输入(比如[39])。在最初的实验中,我们没有发现这个策略有效(生成器仅仅学习忽略噪声)这与Mathieu等人的理论一致[27]。相反,对于我们的最终模型,我们仅以丢弃的形式来提供噪音,适用于我们的生成器在训练和测试时间的几层。尽管有丢弃噪音,我们观察到网络输出的随机性很小。设计产生随机输出的条件GANs,从而捕获它们所模拟的条件分布的全部熵,是目前工作中尚未解决的一个重要问题。

2.2网络架构

  我们对[30]中的生成器和鉴别器架构进行了调整。生成器和判别器都用卷积形式的模块,该体系结构的详细信息在附录中提供,主要功能如下所述。

2.2.1 包含跳跃的生成器

  图像到图像转换问题的一个定义特征是,它们将高分辨率的输入网格映射到高分辨率的输出网格。另外,对于我们所考虑的问题,输入和输出表面外观看上去有所不同,但都是相同底层架构的渲染。因此,输入中的架构与输出中的架构大致一致。我们围绕这些考虑因素设计生成器的体系架构。

    许多以前的解决方法[29,39,19,48,43]都使用了编码器-解码器网络[16]。在这样一个网络中,输入通过一系列的层,这些层逐渐减少采样,直到瓶颈层,在这一点上过程是相反的(图3)。这样的网络需要所有的信息流通过所有的层,包括瓶颈。对于许多图像翻译问题,在输入和输出之间存在大量的低层信息共享,因此希望将这些信息直接在网络上传递。例如,对于图像彩色化,输入和输出共享突出边缘的位置。
在这里插入图片描述

2.2.2 马尔可夫鉴别器(PatchGAN)

  众所周知,L2损失和L1(如图4)在图像生成问题上产生模糊结果[22]。尽管这些损失不能鼓励高频率,但在许多情况下,他们仍然准确地捕捉低频。对于这种情况下的问题,我们不需要全新的网络框架来强求低频的正确率。L1已经可以做到了。
在这里插入图片描述
  这促使限制GAN判别器仅对高频结构建模,依靠L1项强求低频正确性(Eqn.4)。为了对高频图像建模,将我们的注意力限制在局部图像块的结构上就足够了。因此,我们设计了一种判别器架构,我们称之为PatchGAN,它只在块的规模上惩罚结构,该判别器尝试对图像中的每个N*N的块按照真伪进行分类。我们在图像上卷积地运行这个判别器,平均所有响应以提供D的最终输出。

    在3.4节里,我们证明了N可以比图像的完整大小小得多,并且仍然可以取得高质量的结果。这是有利的,因为较小的PatchGAN有较少的参数,运行更快,并且可以应用在任意大的图像上。

    这种判别器有效地将图像建模为马尔可夫随机场,假设像素之间独立性大于一个块直径。这种联系以前在[25]探讨过,也是纹理模型[8,12]和风格模型[7,15,13,24]中的常见假设。因此,我们的PatchGAN可以理解为一种纹理或风格损失。

2.3 优化和推理

  为了优化网络,我们采用[14]的标准方法:在D和G上交替使用梯度下降方法。我们使用小批量随机梯度下降法和Adam优化器。

  推理时,我们以与训练阶段完全相同的方式运行生成器网络。这与我们在测试时应用在丢弃(dropout)中常见的协议有所不同,并且我们用测试批的统计信息而不是训练批的聚合统计信息进行批标准化。当批大小设置为1时,这种批标准化的方法称为“实例标准化”,而且已经证明在图像生成任务中是有效的。在我们的实验中,某些实验批大小为1,其他实验批大小为4,注意这两个条件之间的差别很小。

3 实验

  为了探究条件GANs的通用性,我们在各种任务和数据集上测试了该方法,包括图形任务(如照片生成)和视觉任务(如语义分割):

  • 语义标签 ←→照片,在Cityscapes数据集上训练
  • 建筑标签→照片,在CMP Facades 数据集上训练
  • 地图←→航拍照片,根据从谷歌地图上搜集的数据进行训练
  • BW→彩色照片,在[35]上训练
  • 边缘→图片,用[49]和[44]的数据进行训练,使用HED边缘检测器[42]和后处理生成的二值边缘。
  • 素描→照片:测试边缘→人像上的照片模型从[10]中画出草图
  • 白天→夜晚,在[21]上训练

  这些每个数据集的训练细节都见附录。在所有情况中,输入和输出只是1~3通道的图像。定性结果展示在图8,9,10,11,12,14,15,16和13中。图17中突出显示了几个失败案例。更全面的结果可见https://phillipi.github.io/pix2pix/。
数据要求和速度 我们注意到甚至使用小数据集也可以得到较好的结果。我们的外观训练集仅包含400张图片(结果见图12),并且由白天到夜晚的训练集仅包含91个独特网络摄像头(结果见图13)。在这样大小的数据集上,训练非常快:例如,图12的结果显示,在一个Pascal Titan X GPU上训练仅用了不到两个小时。测试时,在该GPU上所有的模型不到一秒钟就能运行完。

3.1 评价指标

  评价合成图像的质量是一个开放而困难的问题[36]。像每像素均方误差这样的传统指标不能评估结果的联合统计,因此不要衡量结构性损失旨在捕捉的结构。

  为了更加全面地评估结果的视觉质量,我们采用了两种策略。首先,我们对Amazon Mechanical Turk(AMT)进行了“真实与虚假”的感知研究。对于像彩色化和照片生成这样的图形问题,对观察者来说,真实性通常是最终目标。因此,我们用这种方法测试地图生成、航空照片生成和图像彩色化。

  其次,我们衡量合成的城市景观是否足够真实,以至于现成的识别系统能够识别出其中的物体。这个指标与[36]中的“初始得分”(inception score),[39]中的目标检测评估和[46]中的“语义可解释性“方法相似。

  ATM感性研究 对于我们的AMT实验,我们遵循[46]中的协议:Turkers进行了一系列试验,将“真实”图像与我们算法生成的“虚假”图像进行对比。每次实验中,每张图像出现1秒,之后图像消失,给予Turkers无限的时间来回答哪一张是虚假的。每部分的前十张图像来练习,Turkers从中得到反馈。在主实验的40个试验中没有提供反馈。每个部分一次仅测试一个算法,并且Turkers不允许完成一个以上的实验。~50个Turkers评估每一个算法。所有的图像都是256*256分辨率大小。与[46]不同,我们不包括警戒实验。对于我们的着色实验,真假图像是由输入的同一张灰度图产生的。对于“地图←→航拍照片”,为了加大任务难度以及避免楼层结果,其真假图像不是由同一输入产生的。

  FCN-score 尽管对于生成模型的定量评价是一件具有挑战性的工作,最近的工作[36,39,46]尝试利用预先训练好的语义分类器作为伪度量来度量生成图像的可分辨性。直觉是,如果生成图像是真实的,那么训练真实图像的分类器也能正确地对合成图像进行分类。为此目的,我们对语义分割采用流行的FCN-8sp[26]架构,并且在城市景观数据集上训练。然后,我们根据合成照片的标签对合成照片的分类精度进行评分。

3.2 目标函数分析

  Eqn.4目标中的哪个部分很重要?我们进行消融研究,以分离L1项、GAN项的影响,并使用以输入为条件的判别器(cGAN,Eqn.1)与没有输入为条件的判别器进行比较(GAN,Eqn.2)。

  图4展示了这些变量在两个有关“标签←→照片”问题的定量影响,L1项单独产生了合理但模糊的结果,cGAN项(Epn.4中λ=0)单独产生了更清晰的结果,但是在表面合成中会产生一些伪影。同时添加L1和cGAN两项(λ=100)减少了这些伪影。

  我们在“城市景观标签←→照片任务”(表1)用FCN-score来量化这些观察结果:基于目标获取的GAN获得了更高的分数,表明合成图像包括更多的可识别结构。我们也测试了去除判别器(标签为GAN)条件的效果。在这种情况下,损失没有惩罚输入与输出的不匹配,它只关心输出是否看起来真实。这种可变性导致了非常差的性能;测试结果表明,不管输入是什么,生成器都会崩溃,产生几乎完全相同的输出。显然,在这种情况下,损失衡量输入和输出之间匹配的质量是很重要的,而且cGAN的性能确实比GAN好得多。然而,请注意,添加L1项还鼓励输出尊重输入,因为L1损失会惩罚匹配输入的真实值输出和不匹配输入的合成输出之间的距离。相应地,L1+GAN在创造尊重输入标签的真实渲染时是有效的。结合所有的项(L1+cGAN)表现一样很好。
在这里插入图片描述
  色彩 条件GANs的一个显著效果是它们产生清晰的图像,使空间结构产生幻觉,即使它不存在于输入标签地图中。人们可能会想象cGANs在光谱维度的“锐化”上也有类似的效果,即使图像更加丰富多彩。就像L1在不确定边缘的确切位置时会产生模糊一样,在不确定像素应该采用几个合理颜色值中的哪一个时,它也会产生平均的浅灰色。特别地,通过选择条件概率密度函数在可能颜色上的中值,L1将最小化。另一方面,对抗性损失原则上可以意识到灰色输出是不现实的,并且鼓励匹配真实的颜色分布[14]。图7中,我们调查cGANs是否真的在Cityscapes数据集上实现了这种效果。这些图显示了实验室颜色空间中输出颜色值的边缘分布。真实值分布用虚线表示。很明显,L1导致的分布比真实值更窄,证实了L1鼓励平均灰色的假设。另一方面,使用cGAN可以使输出分布更接近真实情况。

3.3 生成器架构分析

  U-Net体系结构允许低层信息在网络上快速传播,这会导致更好的结果吗?图5比较了此U-Net与城市景观生成器U-Net上的编码器-解码器。编码器-解码器只需切断U-Net中的跳跃链接即可创建。在我们的实验中,编码器-解码器不能学习生成真实的图像,并且确实会崩溃,为每个输入标签映射生成几乎相同的结果。U-Net的优点似乎与条件GAN相比没什么特别:当U-Net和编码器-解码器都用L1损失训练时,U-Net再次获得了更好的结果(如图5)。
在这里插入图片描述

3.4从PixelGANs到PatchGans再到ImageGANs

  在判别器可接受的范围内,我们测试了从1×1“PixelGAN”到整个的256×256“ImageGAN”,改变块大小N后的效果。图6显示了此分析的定性结果,表2是用FCN-score量化了的效果。请留意这篇文章的其他地方,如非特别说明,所有的实验均使用70×70的PatchGANs,这一部分所有的实验都是使用的L1+cGAN损失。
在这里插入图片描述
  PixelGAN在空间锐度上没有影响,但是的确增加了结果的色彩(如图7所示)。例如,当网络用L1损失训练时,图6的公共汽车会上成灰色,而用PixelGAN损失训练则会变成红色。颜色柱状图匹配是图像处理中的常见问题[33],而PixelGANs也许会是有前途的轻量级解决方案。
在这里插入图片描述
  用16×16大小的PatchGAN足以提升输出的锐度,而且也产生逼真的效果。70×70的PatchGAN减弱了这种效果。超出此范围,一直到整个的256×256ImageGAN,似乎并未提升结果的可视质量,事实上得到了相当低的FCN-score(表2)。这可能是因为ImageGAN比70×70的PatchGAN有更多的参数以及更深,也更难训练。
在这里插入图片描述
  全卷积转化 PatchGAN的一个优点是固定大小块的判别器可以应用在任意大小的图像上。我们可以卷积地应用生成器,在更大的图像上进行训练。我们在“地图←→航拍照片”任务上进行了测试。在256×256图像上训练生成器之后,在512×512的图像上进行测试。图8的结果证实了这种方法的有效性。
在这里插入图片描述

3.5 感知验证

  我们验证了“地图←→航空照片“和“灰度图←→彩色图”结果的感知现实。“地图←→照片”AMT实验的结果如表3所示。我们的方法生成的航空照片在18.9%的试验中骗过了参与者,明显高于L1的基线,这会产生模糊的结果,而且几乎从来没有骗过参与者。相反,在“照片←→地图”方向上,我们的方法只在6.1%的试验中骗过参与者,这与L1的基线表现得没有什么大的不同(基于自举检验)。这可能是因为微小的结构误差在地图上更为明显,因为地图具有严格的几何结构,而航空照片则更为混乱。
在这里插入图片描述
  我们在ImageNet[35]上训练了着色,并在[46,23]引入的测试分割上进行了测试。使用L1+cGAN损失,我们的方法在22.5%的试验中骗过了参与者(表4)。我们还测试了[46]中的结果,以及他们使用L2损失的方法的一个变体(详见[46])。cGAN的得分与[46]中的L2变体相似(自举检验差异不明显),但是没有达到[46]的完整方法,在我们的实验中,27.8%的试验中,这个方法欺骗了参与者。我们注意到他们的方法是专门设计以做好着色。
在这里插入图片描述

3.6 语义分割

  条件GANs似乎对输出非常详细或者图片化的问题有效,这在图像处理和图形任务中很常见。视觉问题呢?比如语义分割,其输出比输入复杂得多。
为了测试这一点,我们在“cityscape photo←→labels“上训练了一个cGAN(有/没有L1损失)。图10显示了定性结果,表5中报告了定量分类精度。有趣的是,训练没有L1损失的cGANs在合理精度范围内能够解决这个问题。据我们所知,这是GANs成功生成“标签”而不是“图像”的第一次演示,标签几乎是离散的,而图像具有连续的值变量2 。尽管cGAN取得了一些成功,但它们远不是解决这个问题的最佳可用方法:简单地使用L1回归比使用cGAN得到更好的分数,如表5所示。我们认为,对于视觉问题,目标(即预测输出接近真实值)可能比图形任务更模糊,像L1这样的重建损失基本上是足够的。

4 结论

  本文的研究结果表明,条件对抗网络对于许多图像到图像的翻译任务是一种很有前途的方法,特别是那些涉及高度结构化图形输出的任务。这些网络学习适应于手头的任务和数据的损失,这使得它们适用于各种各样的设置。

致谢

  我们感谢Richard Zhang和Deepak Pathak的有益讨论。这项工作得到了NSF SMA-1514512、NGA NURI、IARPA通过空军研究实验室、英特尔公司的部分支持,以及nVIDIA的硬件捐赠。免责声明:本文中的观点和结论是作者的观点和结论,无论明示或暗示都不应解释为必然代表IARPA、AFRL或美国政府的官方政策或认可。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值