Image-to-Image Translation with Conditional Adversarial Networks

摘要

我们研究条件对抗网络作为一个通用的解决图像到图像的翻译问题。 这些网络不仅学习从输入图像到输出图像的映射,而且学习损失函数来训练这种映射。 这使得对传统上需要非常不同的损失公式的问题采用相同的通用方法成为可能。 我们证明了这种方法在标签图合成照片、从边缘图重建物体和给图像着色等任务中是有效的。 事实上,自从与本文相关的pix2pix软件发布以来,大量的互联网用户(其中许多是艺术家)张贴了他们自己对我们的系统的实验,进一步证明了它的广泛适用性和易于采用,而不需要调整参数。 作为一个社区,我们不再手工设计我们的映射功能,这项工作表明,我们也可以在不手工设计我们的损失功能的情况下实现合理的结果。  

1、简介

在图像处理、计算机图形学和计算机视觉中,许多问题都可以归结为将输入图像“转换”为相应的输出图像。 就像概念可以用英语或法语表达一样,场景也可以用RGB图像、梯度场、边缘图、语义标签图等方式呈现。 类似于自动语言翻译,我们定义自动图像到图像翻译作为翻译的一个可能表示的任务场景到另一个,得到足够的训练数据(参见图1)。传统上,解决了单独的每一个任务,专用机制,尽管设置总是一样的:从像素预测像素。 我们在本文中的目标是为所有这些开发一个共同的框架。

社区已经在这个方向上迈出了重要的一步,卷积神经网络(CNN)成为了各种图像预测问题背后的常用工具。 CNN学习最小化损失函数——一个对结果质量进行评分的目标——尽管学习过程是自动的,但仍然需要大量的人工努力来设计有效的损失。 换句话说,我们仍然需要告诉CNN我们希望它最小化的内容。 但是,就像迈达斯国王一样,我们必须小心我们的愿望! 如果我们采用一种幼稚的方法,要求CNN最小化预测像素和ground truth像素之间的欧氏距离,它往往会产生模糊的结果。 这是因为欧氏距离是通过平均所有可能的输出来最小化的,这导致了模糊。 提出损失函数迫使CNN做我们真正想做的事情——例如,输出清晰、逼真的图像——是一个开放的问题,通常需要专业知识。  

如果我们可以只指定一个高层次的目标,比如“使输出与现实难以区分”,然后自动学习一个适合于满足这个目标的损失函数,那将是非常可取的。 幸运的是,这正是最近提出的生成对抗网络(GANs)所做的。 GAN学习一种损失,它试图对输出图像是真还是假进行分类,同时训练生成模型以最小化这种损失。 模糊的图像是不能容忍的,因为它们看起来很明显是假的。 由于GAN可以学习到适应数据的损失,因此它们可以应用于许多传统上需要非常不同类型损失函数的任务。 

在本文中,我们探讨了条件设置下的GAN。 就像GANs学习数据的生成模型一样,条件GANs (cGAN)学习条件生成模型。 这使得cGAN适合于图像到图像的转换任务,其中我们以输入图像为条件并生成相应的输出图像。  

在过去的两年中,GAN得到了积极的研究,我们在本文中探索的许多技术之前已经被提出。 尽管如此,早期的论文集中在具体的应用上,目前还不清楚图像条件GAN作为图像到图像转换的通用解决方案的有效性。 我们的主要贡献是证明了在各种各样的问题上,有条件的GAN会产生合理的结果。 我们的第二个贡献是提供了一个简单的框架,足以实现良好的结果,并分析了几个重要的架构选择的效果。  

2、相关工作

图像模型的结构损失:

图像到图像的转换问题通常表示为逐像素分类或回归。 这些公式将输出空间视为“非结构化”,即每个输出像素都被认为是有条件地独立于给定输入图像的所有其他像素。 相反,有cGAN学到了结构性损失。 结构性损失对输出的联合配置不利。 大量文献考虑了这类损失,方法包括条件随场域、SSIM度量、特征匹配、非参数损失、卷积伪先验和基于匹配协方差统计的损失。 有cGAN的不同之处在于,损失是学习得到的,并且在理论上可以惩罚输出和目标之间的任何可能的结构差异。

cGAN:

我们不是第一个在条件设置中应用GAN的人。 之前和并发的工作都将GAN限制在离散标签、文本和图像上。 图像条件模型处理了来自正常映射、特征帧预测、产品照片生成和来自稀疏注释的图像生成是一种用于解决同一问题的自回归方法(47是给定同一个问题的自回归方法)。 其他几篇论文也将GAN用于图像到图像的映射,但仅无条件地应用了GAN,依赖于其他术语(如L2回归)迫使输出受输入的制约。 这些论文在图像修补、特征状态预测、用户约束引导下的图像处理、风格转移、超分辨率等方面取得了令人印象深刻的成果。 每种方法都是为特定的应用程序量身定制的。 我们的框架的不同之处在于没有什么是特定于应用程序的。 这使得我们的设置比大多数其他设置简单得多。  

在生成器和鉴别器的结构选择方面,我们的方法也与以前的工作有所不同。 与过去的工作不同,我们的生成器使用基于“U-Net”的架构,而我们的鉴别器使用卷积的“PatchGAN”分类器,它只在图像patch的规模上惩罚结构。 之前在[38]中提出了一个类似的PatchGAN架构来捕获本地风格的统计数据。 在这里,我们展示了这种方法在更广泛的问题上是有效的,我们调查了改变patch大小的影响。  

3、方法

GAN是生成模型,学习从随机噪声矢量z到输出图像y, 。 相反,cGAN学习从观测图像x和随机噪声向量z到y, 。经过训练的生成器G产生的输出不能被经过对抗性训练的鉴别器D从“真实”图像中区分出来,而鉴别器D被训练得尽可能好地检测生成器的“伪”。 这个训练过程如图2所示。  

                

3.1、目标函数

cGAN的目标可以表示为:

               

 当G试图最小化该目标,而对手D试图最大化该目标时,即。  

 为了检验鉴别器条件作用的重要性,我们还将其与鉴别器不观察x的无条件变量进行比较:

            

以前的方法发现,将GAN目标函数与更传统的损失(如L2距离)混合是有益的。 鉴别器的工作保持不变,但生成器的任务不仅是愚弄鉴别器,而且还要接近地面实值输出在L2意义上。 我们还探索了这个选项,使用L1距离而不是L2,因为L1可以减少模糊:

              

我们最终的目标为:

            

没有z,网络仍然可以学习从x到y的映射,但会产生确定性的输出,因此不能匹配除脉冲函数以外的任何分布。 过去的条件GAN已经承认了这一点,并提供了高斯噪声z作为生成器的输入,此外还有x。 在最初的实验中,我们发现这种策略并不有效——生成器只是学会了忽略噪声——这与Mathieu等人的一致。 相反,对于我们的最终模型,我们只以dropout的形式提供噪声,并在训练和测试时应用于生成器的几个层。 尽管有dropout噪声,我们在网的输出中只观察到很小的随机性。 设计产生高度随机输出的条件GAN,从而捕获它们所建模的条件分布的全熵,是本工作留下的一个重要问题。  

                        

3.2、网络结构

我们采用[44]的生成器和鉴别器架构。 生成器和鉴别器都使用convolution-BatchNorm-ReLu
形式的模块。 该体系结构的详细信息可以在网上的补充材料中找到,关键的特点在下面讨论。  

3.2.1、有跳跃的生成器

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

许多以前解决这一领域问题的方法都使用了编码器-解码器网络。 在这样的网络中,输入经过一系列的层,逐渐向下采样,直到瓶颈层,在这一点上过程被逆转。 这样的网络需要所有的信息流通过所有的层,包括瓶颈。 对于许多图像翻译问题,在输入和输出之间有大量的低层次信息共享,因此最好直接在网络上传输这些信息。 例如,在图像着色的情况下,输入和输出共享突出边缘的位置。  

为了让生成器绕过此类信息的瓶颈,我们添加了跳过连接,它遵循“U-Net”的一般形状。 具体来说,我们在每一层i和层n-i之间添加跳层连接,其中n是层的总数。 每个跳过连接只是将所有通道连接到第i层和那些在第n-i层。  

3.2.2、马尔科夫鉴别器(PatchGAN)

众所周知,L2和L1损失,见图4,在图像生成问题上产生模糊的结果。 虽然这些损失不能促进高频的脆度,但在许多情况下,它们仍然准确地捕捉到低频。 对于这种情况下的问题,我们不需要一个全新的框架来加强低频的正确性。 L1就可以了。  

这就限制了GAN鉴别器只能对高频结构建模,依赖于L1项来保证低频的正确性(Eqn. 4)。为了对高频结构建模,我们只关注局部图像斑块中的结构就足够了。 因此,我们设计了一种识别器架构——我们称之为PatchGAN——它只在patch的规模上惩罚结构。 这个鉴别器试图区分图像中的每个N ×N的patch是真实的还是虚假的。 我们在图像上运行这个鉴别器,平均所有的响应以提供D的最终输出。   

在第4.4节中,我们证明了N可以比图像的全尺寸小得多,但仍然可以产生高质量的结果。 这是非常有利的,因为较小的PatchGAN参数更少,运行速度更快,可以应用于任意大的图像。  

这种鉴别器有效地将图像建模为马尔可夫随机场,假设像素之间的独立性大于一个补丁直径。 这一联系在[38]中已有探讨,也是纹理模型和风格模型中常见的假设。 因此,我们的PatchGAN可以被理解为一种纹理/风格的缺失。  

3.3、优化和推断

为了优化我们的网络,我们遵循[24]的标准方法:我们在D上交替一个梯度下降步骤,然后在G上交替一个梯度下降步骤。如原始GAN建议的那样,我们训练最大化,而不是训练G来最大化。此外,我们在优化D时将目标除以2,降低了D相对于G的学习速度。我们使用minibatch SGD,并应用Adam求解器,学习率为0.0002,动量参数。  

在推断时,我们以与训练阶段完全相同的方式运行生成器网络。 这与通常的协议不同,因为我们在测试时应用dropout,并且我们使用测试批的统计信息来应用批标准化,而不是使用训练批的聚合统计信息。 当批处理大小设置为1时,这种批处理归一化方法被称为“实例归一化”,并已被证明在图像生成任务中是有效的。 在我们的实验中,我们根据实验使用1到10之间的批量大小。  

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

  • 语义标签photo,在城市景观数据集上训练。 
  • 建筑标签照片,在CMP Facades上训练。 
  • 地图航拍照片,从谷歌Maps得到训练数据。 
  • BW彩色照片在[51]训练。
  • 边缘照片,训练数据来自[65]和[60]; 二值边缘生成使用HED边缘检测器加上后处理。 
  • 素描照片:测试边缘从[19]手绘草图的照片模型。 
  • 白天晚安,在[33]上训练。 
  • 红外彩色照片,根据[27]的数据进行训练。  
  • 缺少像素的照片未打印的照片,训练来自[14]的巴黎街景。 

关于这些数据集的训练细节在在线补充材料中提供。 在所有情况下,输入和输出只是1-3个通道的图像。 定性结果如图8、9、11、10、13、14、15、16、17、18、19、20所示。 图21突出显示了几个失败案例。 更全面的调查结果可以在https://phillipi.github.io/pix2pix/上找到。  

 数据需求和速度:

我们注意到,即使在小数据集上,也可以获得良好的结果。我们的facade训练集只有400个图像(见图14的结果),而夜间训练集只有91个独特的webcams(参见图15中的结果)。在这个大小的数据集上,训练可能非常快:例如,图14所示的结果在一个Pascal Titan X GPU上训练不到两个小时。在测试时间,所有的模型在GPU上运行得很好。 

 4.1、评估标准

评价合成图像的质量是一个开放而艰难的问题。传统的指标,如逐像素均值-平方误差不评估结果的联合统计,因此不测量结构损失的结构。 

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

 其次,我们衡量我们合成的城市景观是否足够真实,使现成的识别系统能够识别其中的物体。 这个度量类似于[52]中的“初始评分”,[55]中的目标检测评估,以及[62]和[42]中的“语义可解释性”度量。  

 AMT感知学习:

在我们的AMT实验中,我们遵循了[62]中的协议:向Turkers提供一系列的试验,将我们算法生成的“真实”图像与“虚假”图像进行对比。 在每次试验中,每张图片出现1秒,之后图片就会消失,土耳其人有无限的时间来回答哪个是假的。 每个环节的前10张图片都是练习,Turkers会得到反馈。 主实验的40次试验均无反馈。 每个环节一次只测试一个算法,Turkers不允许完成一个以上的环节。 对每种算法进行评价的土耳其人达到了50人。 与[62]不同,我们没有包括警惕性试验。 在我们的着色实验中,真实图像和虚假图像是由相同的灰度输入产生的。 对于mapaerial photo,真实和虚假的图像不是由相同的输入产生的,这是为了使任务更加困难,并避免地面结果。 对于mapaerial photo,我们在256×256分辨率的图像上进行训练,但使用了全卷积平移(如上所述)对512 × 512图像进行测试,然后将这些图像下采样并以256×256分辨率呈现给Turkers。 对于着色,我们在256 × 256分辨率的图像上进行训练和测试,并以相同的分辨率将结果呈现给Turkers。

FCN分数:

虽然生成模型的定量评价具有挑战性,但最近的研究尝试使用预先训练的语义分类器来衡量生成刺激的可辨别性,作为伪度量。 直觉告诉我们,如果生成的图像是真实的,在真实图像上训练的分类器也能够正确地对合成的图像进行分类。 为此,我们采用流行的FCN-8s架构进行语义分割,并在城市景观数据集上进行训练。 然后我们根据分类精度对合成照片的标签进行评分。  

4.2、目标函数的分析

第4项目标的哪些组成部分是重要的? 我们进行了消融研究,以分离L1项和GAN项的影响,并使用基于输入条件的鉴别器(cGAN, Eqn. 1)和使用无条件鉴别器(GAN, Eqn. 2)进行比较。  

                  

图4显示了这些变化对两个标签的定性效果! 照片的问题。 L1单独导致合理但模糊的结果。 cGAN单独(在Eqn. 4中设置λ = 0)给出了更清晰的结果,但在某些应用程序中引入了视觉伪影。 将这两项相加(λ = 100)可以减少这些伪影。  

我们使用城市景观标签上的FCN评分来量化这些观察结果! 照片任务(表1):基于GAN的目标获得更高的分数,表明合成的图像包含更多可识别的结构。 我们还测试了从鉴别器(标记为GAN)去除条件作用的效果。 在这种情况下,损失并不惩罚输入和输出之间的不匹配; 它只关心   

我们使用cityscape lablephoto task来量化这些观察(表1):基于GNA的目标函数获得更高的分数,表明合成的图像包含更多可识别的结构。 我们还测试了从鉴别器(标记为GAN)去除条件作用的效果。 在这种情况下,损失并不惩罚输入和输出之间的不匹配; 它只关心输出看起来是否真实。 这种变体会导致糟糕的表现; 检查结果显示,不管输入的照片是什么,生成器都会产生几乎完全相同的输出。 显然,在这种情况下,损失衡量输入和输出之间匹配的质量是很重要的,而且cGAN确实比GAN表现得好得多。 然而,请注意,添加L1项也鼓励输出尊重输入,因为L1损失惩罚了正确匹配输入的地面真值输出和可能不匹配的合成输出之间的距离。 相应地,L1+GAN也能有效地创建符合输入标签映射的真实效果图。 结合所有的项,L1+cGAN,同样表现良好。  

色彩

条件GAN的一个惊人的效果是,它们产生清晰的图像,产生幻觉的空间结构,即使在输入标签映射中不存在。 有人可能会认为cGAN在光谱维度上有类似的“锐化”效果,即使图像更加丰富多彩。 就像L1会在不确定边缘位置时刺激模糊一样,它也会在不确定像素应该采用几种可能的颜色值时刺激一个平均的、灰色的颜色。 特别地,L1将通过在可能的颜色中选择条件概率密度函数的中值最小化。 另一方面,对抗性损失在原则上可以意识到灰色输出是不现实的,并鼓励匹配真实颜色分布[24]。 在图7中,我们研究了我们的cgan是否真的在cityscape数据集上实现了这种效果。 图中显示了实验室颜色空间中输出颜色值的边际分布。 地面真值分布用虚线表示。 很明显,L1的分布范围比ground truth窄,这证实了L1鼓励平均的、灰色的颜色的假设。 另一方面,使用cGAN会使输出分布更接近实际情况。  

4.3、生成器结构的分析

U-Net架构允许低层次的信息在网络上快捷地传递。 这能带来更好的结果吗? 图5和表2比较了U-Net和解码器在城市景观生成上的差异。 通过切断UNet中的跳层连接,可以简单地创建编码器-解码器。 在我们的实验中,编码器-解码器无法学习生成真实的图像。 U-Net的优势似乎并不局限于条件GAN:当U-Net和编解码器都用L1损失进行训练时,U-Net再次获得了优越的结果。

 4.4、从PixelGAN到PatchGAN到ImageGAN

我们测试了从1 × 1“PixelGAN”到完整的286 × 286“ImageGAN”,改变鉴别器接受域的patch大小N的效果。 图6显示了该分析的定性结果,表3使用FCN评分量化了影响。 注意,在本文的其他地方,除非特别说明,所有的实验都使用70 × 70的PatchGAN,在本节中,所有的实验都使用L1+cGAN损失。  

PixelGAN对空间清晰度没有影响,但确实增加了结果的色彩(在图7中量化)。例如,当网络在L1损失下训练时,图6中的总线被涂成灰色,但由于PixelGAN损失,总线变成红色。 颜色直方图匹配是[49]图像处理中的一个常见问题,PixelGANs可能是一个很有前途的轻量级解决方案。  

使用16×16 PatchGAN足以促进清晰的输出,并获得良好的FCN评分,但也会导致瓦片伪影。 70 × 70的PatchGAN缓解了这些伪影,并取得了稍微更好的分数。 充分扩展,在那边。286×286 ImageGAN,似乎并未提高视觉质量的结果,事实上会大大降低FCN-score(表3)。这可能是因为ImageGAN更多的参数和深度超过了70×70 PatchGAN,训练可能更难。

                

全卷积翻译

PatchGAN的一个优点是固定大小的Patch鉴别器可以应用于任意大的图像。 我们也可以在更大的图像上使用卷积生成器,而不是在训练它的图像上。 我们在地图↔航拍任务上测试这一点。 在256×256图像上训练生成器之后,我们在512×512图像上测试它。 图8中的结果证明了这种方法的有效性。   

 4.5、感知验证

通过对地图↔航摄和灰度→彩色任务的研究,验证了研究结果的直觉验证。 表4给出了我们对地图↔图像的AMT实验结果。 通过我们的方法生成的航拍照片在18.9%的试验中欺骗了参与者,明显高于L1基线,这产生了模糊的结果,几乎从来没有欺骗过参与者。 相比之下,在照片→地图方向中,我们的方法仅在6.1%的试验中欺骗了参与者,这与L1基线(基于bootstrap测试)的表现没有显著差异。 这可能是因为微小的结构错误在具有刚性几何结构的地图上比在更加混乱的航拍照片上更明显。  

                  

我们在ImageNet上训练着色,并在[62,35]引入的测试分割上进行测试。 我们的方法,在L1+cGAN损失的情况下,欺骗了22.5%的试验参与者(表5)。我们还测试了[62]和他们方法的变体使用L2损失的结果(详情见[62])。 条件GAN的得分与[62]的L2变体相似(bootstrap测试的差异不显著),但低于[62]的完整方法,在我们的实验中,27.8%的试验愚弄了参与者。 我们注意到,他们的方法是专门设计的,在着色上做得很好。   

4.6、语义分割

条件GAN似乎对输出高度详细或照相的问题有效,这在图像处理和图形任务中很常见。 那么视觉问题呢,比如语义分割,输出比输入更简单?  

 

                      

                

为了测试这一点,我们训练cGAN(有/没有L1损失)对城市景观照片→标签。 图10为定性结果,定量分类精度见表6。 有趣的是,没有L1损失的cGAN能够以合理的精度解决这个问题。 据我们所知,这是GAN成功生成“标签”的第一次演示,“标签”几乎是离散的,而不是连续值变化的“图像”。 虽然cGAN取得了一些成功,但它们远不是解决这个问题的最佳方法:简单地使用L1回归得到的分数比使用cGAN更好,如表6所示。 我们认为,对于视觉问题,目标(即预测接近地面真实的输出)可能比图形任务更清晰,像L1这样的重建损失基本上就足够了。  

4.7、社区驱动研究

自从这篇论文和我们的pix2pix代码库首次发布以来,Twitter社区,包括计算机视觉和图形专业人员以及视觉艺术家,已经成功地将我们的框架应用到各种新颖的图像到图像的翻译任务中,远远超出了原始论文的范围。 图11和图12显示了#pix2pix标签的几个例子,包括背景移除,调色板生成,素描→肖像,素描→口袋妖怪,“做我做的”姿势转换,学会看:黑暗的周日,以及奇怪的流行#edges2cats和#fotogenerator。 请注意,这些应用程序是创造性的项目,不是在受控的、科学的条件下获得的,可能依赖于我们发布的pix2pix代码的一些修改。 尽管如此,它们证明了我们的方法作为解决图像到图像转换问题的通用商品工具的前景。   

5、结论

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

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wanderer001

ROIAlign原理

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值