Image-to-Image Translation with Conditional Adversarial Networks 论文翻译

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

源论文标题:Image-to-Image Translation with Conditional Adversarial Networks

源论文链接:https://phillipi.github.io/pix2pix/


【摘要】

        我们调研了使用条件对抗网络,做为图像到图像转换的通用解决方案。这个网络不仅学习到图像到图像的映射,还学习了一个损失函数来训练这个映射。这使得之前那些需要不同损失函数的问题,采用通用方法来解决成为可能。我们证明了这种方法在用标签图合成照片,用边缘图重建物体,将黑白图像色彩化等任务上是有效的。做为一个通用方案,我们不用手动设计映射函数,不用手动设计损失函数,就能得到一个合理的结果。


        计算机图像学和计算机视觉中的很多问题,可以被认为是将输入图像“翻译”成相应的输出图像。正如一个概念可以被使用英语或法语来表达,一个场景也可以被呈现为RGB图像,梯度场,边缘图,语义标签等。与语言的自动翻译类似,我们定义自动图像翻译为,在有足够的训练数据情况下,将场景的一种表示,转换成另一种可能的表示。(如图1所示,原来不同的图像转换问题,需要不同的算法。但这些问题有一个共同点,就是像素到像素的映射。基于条件对抗网络的方案,我们可以使用同样的网络架构来处理这些问题,只是需要不同的训练数据)


Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第1张图片

        语言翻译困难的原因之一是,语言之间的映射很少是一对一的。类似的,图像翻译问题,可能是多对一,比如将图片映射为边缘,片段或语义标签;也可能是一对多,比如将标签,用户的稀疏输入映射为逼真图像。传统上,这些问题都是用单独的“专用设备”来解决,尽管这些“设备”有共同的“配置”:从像素到像素的预测。本文的目标是为这些问题提供一个共同的解决框架。


        卷积神经网络是目前图片预测领域最主要的解决方法。虽然CNN的学习过程是自动的,但CNN需要花很大的功夫在设计有效的损失函数上。换句话说,就是我们仍然需要告诉CNN我们想要最小化的东西。就像Midas(希腊神话中的国王,拥有点石成金的能力)一样,我们必须小心我们所希望的。如果我们采用幼稚的方法,要求CNN去最小化预测像素和真实像素之间的欧几里德距离,它往往会产生模糊的结果。这是因为欧式距离通过平均所有可能的输出来达到最小化,这会导致模糊。通过损失函数来迫使CNN输出我们真正想要的东西,比如清晰,逼真的图像,是一个开放的问题,往往需要专业的知识。


         如果我们只需要指定一个高层目标,比如“让输出和现实无法区分”,然后自动学习出一个适合于这个目标的损失函数,那将是非常理想的。幸运的是,这正好是最近提出的生成对抗网络(GANs)在做的事情。GAN学到了一个试图区分输出图像是真还是假的“损失”,同时训练生成模型去最小化这个“损失”。由于GAN学习到了与数据相适应的“损失”,因此可以将其应用在传统上需要不同损失函数的各种任务上。


        在本文中,我们探索了有条件设置下的生成对抗网络,正如GANs学习了一个生成数据模型,条件GANs(cGANs)学习了一个有条件的生成模型。这意味着,cGANs适用与图像到图像的“翻译”任务。在这种情况下,我们接受输入图像的条件,并生成相应的输出图像。


        GANs在过去两年里得到大力研究,本文中我们探索的许多技术已经被提出。尽管如此,早期的论文主要集中在特定的应用领域,如何应用到图像翻译上还是不清楚。我们的主要贡献是证明了在大量的问题上,cGANs会产生合理的结果。我们的第二个贡献是提出了一个足以取得良好结果的简单框架,并分析了选择几个重要架构的影响。


【1、相关工作】


图像模型的结构化损失


        图像到图像的转换问题,通常被表述为按像素的分类或回归。这些表述将输出空间视为非结构化的,每个输出像素被认为是有条件的独立于输入图像的所有其它像素。不同的是,cGANs学习了结构化损失。结构化损失会惩罚输出中的“联合组态”。大量的文献已经考虑了这种损失,比如条件随机场,SSIM度量,特征匹配,非参数损失,卷积伪先验和基于匹配协方差统计的损失。我们条件生成对抗网络不同之处在于损失是学习到的,所以理论上可以惩罚任何的导致输出和目标有差异的结构。


有条件的生成对抗网络


        我们不是第一个在有条件下应用GAN,之前的工作在离散的标签,文本,图像上也应用了cGANs,图像的条件模型已经解决了图像预测,未来帧预测和风格转移等问题。每一个这些方法都是针对性设计的,我们的不同之处在于没有任何的特定性,这使得我们的步骤简单很多。


        我们的方法也不同于以前的生成器和鉴别器的结构。我们的生成器使用“u-net”架构,鉴别器使用卷积的“PatchGAN”分类器,它只会在“图片块”尺度上进行惩罚。为了获得局部的风格统计,以前也提出过类似的Patch-GAN结构。我们在这里表明了这种结构在大量问题上都是有效的,并且我们探讨了选择不同块大小带来的影响。


【2、方法】


GANs的生成模型,学习从随机噪声向量z到输出图像y的映射,G(z)-> y。相反的,条件GANs学习从被观察图像x和随机噪声向量z到y的映射,G(x,z)-> y。生成器G被训练去产生图像,这些图像和真实图像无法被鉴定器D区分出来。鉴定器D则被训练去尽可能区分出是生成器G的“造假”图像。这个训练过程如下图2。



Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第2张图片


【2.1 目标】


一个条件GAN的目标可以被表示为:

Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第3张图片

其中,G试图去最小化客观对抗对手D,而D试图去最大化它。也就是 G* = arg min(G)max(D)Lcgans(G,D)
为了测试可调节的鉴定器的重要性,我们还设计了一个变种:无条件鉴定器。这种鉴定器没有被观察者x


Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第4张图片

之前对条件GANs的研究表面,将GAN目标和传统损失(例如L2距离)相混合是有益的。鉴定器的工作保持不变,但生成器的任务除了欺骗鉴定器,还要在L2意义上让输出接近真实目标。我们也探索了使用L1而不是L2带来更少的模糊:

我们最后的目标是:

没有z,网络依然可以学习到从x到y的映射,但会产生确定性的输出,因此不能匹配除delta函数以外的任何分布。过去的cGANs的知识,已经确认了这一点,并提供了高斯噪声z做为生成器的输入。在最初的实验中,我们没有发现这个策略是有效的,生成器只是简单的学会了忽略噪声。因此,在我们最终的模型中,我们仅仅以dropout的形式来提供噪声,我们在训练和测试阶段,好几个层中都引入了dropout。尽管使用了dropout噪声,我们观察到我们的网络输出只有非常小的随机性。让条件GAN能够产生随机输出,从而可以捕获他们所建模的条件分布的熵,是目前遗留的一个重要问题。


【2.2 网络结构】

我们调整了我们的生成器和鉴定器的结构。生成器和鉴定器都使用 卷积 - BatchNorm - ReLu的模块。附录中提供了该结构的详细信息,其中主要特征将在下面讨论。


【2.2.1 带跳转的生成器】


        图像到图像的转换问题一个确定的特征是,它们将高分辨率的输入网格映射到高分辨率的输出网格上。另外,对于我们考虑的问题,输入和输出在表面外观上是不同的,但两者都被“翻译”成了相同的底层结构。因此,输入的结构和输出的结构是大致对齐的。我们围绕这些考虑去设计生成器的架构。

        很多之前的解决方案使用了编码器-解码器的网络,在这样一个网络中,输入通过一系列的下采样层,直到一个瓶颈层,然后再反转这个过程。如下图3所示:
Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第5张图片
         这样的网络要求所有的信息流通过整个层,包括瓶颈层。对于许多图像“翻译”问题,输入和输出之间需要共享大量的低级信息,并希望这些信息能穿过网络,比如黑白图片色彩化时,输入和输出需要共享图像的突出边缘位置信息。

        为了给生成器一个方法来绕开这样的信息瓶颈,我们添加了跳转连接,如下图所示的“u-net”结构:
Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第6张图片

        具体的,我们在每个i层和(n-i)层之间添加了跳转连接,其中n是层的总数。每个跳转连接,只是第i层和第(n-i)层之间的通道。


【2.2.2 马尔科夫鉴定器(PatchGAN)】


众所周知,L2和L1损失在图像生成问题上会产生模糊,如下图所示:

Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第7张图片

        虽然这些损失函数不能激励在高频度上的精细性,但在许多情况下,它们能正捕获到低频度的精细。在这种情况下,对于低频度,我们不需要一个全新的架构去激励精细性,L1已经做到了。

         这导致GAN的鉴定器只需要对高频结构进行建模,而依赖L1项获得低频正确。为了对高频建模,将注意力限制在局部图像块中的结构就足够了。因此,我们设计了一个称之为PatchGAN的鉴定器,它只在补丁块的尺度上进行惩罚。这个鉴定器试图去区分每个NxN的补丁块是真还是假。我们在整个图像上以卷积方式运行这个鉴定器,然后平均所有响应提供给D的最终输出。

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

        这样的鉴定器有效地将图像建模为马尔科夫随机场,假设像素之间的独立性大于补丁的直径。这个关系在之前的论文讨论过,它也是纹理和风格模型中常见的假设。因此,我们的PatchGAN可以被理解为纹理/风格损失的一种形式。

【2.3 优化和推理】

        为了优化我们的网络,我们遵守标注方法:在D和G上交替进行梯度下降。我们采用了minibach SGD和使用Adam solver。

       在推理时,我们运行的生成器网络跟训练时完全相同。这与通常的方案不同,我们在测试时使用了dropout,并在测试批量样本上而不是训练样本上,应用batch normalization。当batch大于1时,这种batch normalization被称为“instance normalization”,并已经被证明在图像生成任务中是有效的。在我们的实验中,某些实验batch为1,某些实验batch为4,这两者的差别很小。


【3.实验】

为了探索GAN的一般性,我们测试了各种任务和数据集。包括图像任务,如图片生成,以及视觉任务,如语义分割。

* 语义标签 -> 照片,基于Cityscapes数据集训练。

* 建筑标签 -> 照片,基于CMP Facades数据集训练。

* 地图 -> 俯视照片,基于谷歌地图中收集的数据训练。

* BW -> 色彩照片,基于论文35训练。

* 边缘 -> 照片

* 草图 -> 照片

* 白天 -> 夜晚


附录中有训练使用的数据集的细节。在所有情况下,输入和输出都是简单的1-3通道图片。结果在下面的图中展示,更全面的结果可以访问我们的网址。

下图8是俯视图到地图照片的相互映射:


下图9对比了cGANs和L2回归在色彩化任务上的结果。cGANs产生更绚丽的色彩(在1,2行),但也有一些失败的模型产生了灰度或低饱和度的图(最后一行)。


Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第8张图片

下图10展示了在语义分割任务上应用cGANs,cGANs产生的清晰的图像,看上去跟真实输出一样,但实际上包含许多小的,不存在的物体。


Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第9张图片

下图11基于Cityscapes数据集训练(看上去效果并不好):

Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第10张图片

图12基于facades数据集训练:


图13是白天到黑夜的映射:

Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第11张图片
图14是边缘到手袋的映射:

Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第12张图片



Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第13张图片

Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第14张图片

下图17展示了失败的案例:

Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第15张图片


【数据要求和速度】

我们观察到即使在小的数据集上,也能获得不错的结果。我们的facade训练数据集只包含400张图片(结果在图12),而白天到夜晚的训练数据只有91个摄像头(结果在图13)。在这个数量的数据集上,训练会很快。比如图12的结果,只在Pascal Titan X GPU上训练不到2小时。在测试时,所有的模型在这款GPU上运行只需不到1秒钟。


【3.1 评估指标】

        评估合成图像的质量是一个开放和困难的问题。诸如像素均方误差之类的传统度量不会评估结果的联合统计,因此也不能衡量结构化损失想捕捉的结构。

         为了更全面评估我们结果的视觉质量,我们采用两种策略。首先,我们在Amazon Mechanical Turk(AMT)上发布“真或假”的感知研究,对于色彩化和照片生成等问题,人类观测者的结论最合理。因此我们采用这种方法来测试我们的地图生成,俯视图生成和色彩化。


        其次,我们衡量我们的综合城市景观足够真实,使得现有的识别系统能识别出其中的物体。


【AMT 感知研究】

        对于我们的AMT试验,我们遵守附录[46]的协议:给Turker展示一系列“真实”的图片,和我们算法生成的“虚假”图片,每个图像出现1秒,然后图像消失,Turker被赋予无限长的时间来回应真假。每场实验的前10张图片做为Turker的练习,Turker给予了反馈。对于主要的40次实验,没有任何反馈。每次实验只测试一个算法,每个Turkers只参与一次实验。50个Turkers测试了每个算法。所有的图像都按256 * 256的分辨率呈现。不像附录[46],我们不包含警觉判定。对于我们色彩化的实验,真和假的图像是从相同的灰度输入生成的。对于地图和俯视图的转换,真和假的图像不是从同一个输出生成的,这样增加了任务的难道,以避免floor-level结果。


【FCN 得分】
虽然生成模型的定量评估是有挑战性的,但最近一些工作尝试使用预训练的语义分类器来测量生成图像的可辨性。一个直觉是,如果生成图像是真实的,那么基于真实图像训练的分类器应该能正确的分类生成图像。因此我们采用了FCN-8s架构进行语义分割,并在cityscapes数据集上训练它。然后我们根据这些数据的标签去合成出照片,并通过FCN分类器的准确度去给合成照片评分。结果如下表2(看上去精准度很低。。。):

Image-to-Image Translation with Conditional Adversarial Networks 论文翻译_第16张图片


【3.2 目标函数的分析】

在方程式4中目标的哪些组成部分是最重要的?我们进行了对照实验,以隔离L1项,GAN项的影响,并对有条件的鉴定器和无条件的鉴定器(这里说的条件,就是指是否把生成器的输入图像,也做为鉴定器的一个输入)进行了比较。



你可能感兴趣的:(机器学习)