当前位置: 首页 > news >正文

【计算机视觉|生成对抗】带条件的对抗网络进行图像到图像的转换(pix2pix)

本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处

标题:Image-to-Image Translation with Conditional Adversarial Networks

链接:Image-to-Image Translation with Conditional Adversarial Networks | IEEE Conference Publication | IEEE Xplore

摘要

我们研究了将条件对抗网络作为通用解决方案,用于图像到图像的转换问题。这些网络不仅学习从输入图像到输出图像的映射,还学习了一个损失函数来训练这种映射。这使得可以将相同的通用方法应用于传统上需要非常不同损失公式的问题。我们证明了这种方法在从标签映射合成照片、从边缘映射重建物体和给图像上色等任务中是有效的。此外,自从与本论文相关联的pix2pix软件发布以来,已经有数百名Twitter用户发布了使用我们的系统进行艺术实验的作品。作为一个社区,我们不再手工设计映射函数,这项工作表明我们可以在不手工设计损失函数的情况下获得合理的结果。

1. 引言

在图像处理、计算机图形学和计算机视觉中,许多问题可以被看作是将输入图像“翻译”为相应的输出图像。就像一个概念可以用英语或法语表达一样,一个场景可以被渲染成RGB图像、梯度场、边缘映射、语义标签映射等等。类比于自动语言翻译,我们将自动图像到图像转换定义为在足够的训练数据下,将一个场景的一种可能表示转换为另一种表示的问题(见图1)。传统上,每个任务都使用独立的、专用的机制来解决(例如,[14、23、18、8、10、50、30、36、16、55、58]),尽管事实上背景始终是相同的:从像素预测像素。本文的目标是为所有这些问题开发一个共同的框架。

图1:图像处理、图形学和视觉领域中的许多问题涉及将输入图像转换为相应的输出图像。这些问题通常会使用特定于应用的算法来处理,尽管背景始终相同:将像素映射到像素。条件对抗网络是一种通用解决方案,似乎在各种各样的这些问题上表现良好。在这里,我们展示了该方法在几个问题上的结果。在每种情况下,我们使用相同的架构和目标,只是在不同的数据上进行训练。

社区已经朝着这个方向迈出了重要的一步,卷积神经网络(CNNs)已成为各种图像预测问题的通用工具。CNNs学习最小化损失函数——评估结果质量的目标——虽然学习过程是自动的,但仍需要大量的人工工作来设计有效的损失。换句话说,我们仍然必须告诉CNN我们希望它最小化什么。但是,就像金色国王米达斯一样,我们必须小心我们的愿望!如果我们采取幼稚的方法,要求CNN最小化预测像素与实际像素之间的欧氏距离,它往往会产生模糊的结果[40、58]。这是因为欧氏距离通过对所有可能的输出求平均来最小化,从而导致模糊。提出能够强制CNN执行我们真正想要的任务的损失函数——例如,输出清晰、逼真的图像——是一个开放的问题,通常需要专业知识。

如果我们能够只指定一个高层次的目标,比如“使输出与现实不可区分”,然后自动学习适合满足这个目标的损失函数,那将是非常理想的。幸运的是,这正是最近提出的生成对抗网络(GANs)所做的[22、12、41、49、59]。GANs学习一个损失,试图分类输出图像是真实还是伪造的,同时训练一个生成模型来最小化这个损失。模糊的图像将不会被容忍,因为它们看起来显然是伪造的。因为GANs学习适应数据的损失,所以它们可以应用于许多传统上需要非常不同类型的损失函数的任务。

在本文中,我们在条件设置下探讨了GANs。正如GANs学习数据的生成模型一样,条件生成对抗网络(cGANs)学习了一个条件生成模型[22]。这使得cGANs适用于图像到图像的转换任务,我们在输入图像的条件下生成相应的输出图像。

虽然在过去的两年里已经对GANs进行了广泛的研究,并且本文中探讨的许多技术之前已经被提出过,但是早期的论文集中在特定的应用上,图像条件GANs是否可以作为图像到图像转换的通用解决方案仍然不清楚。我们的主要贡献是证明,在各种各样的问题上,条件GANs能够产生合理的结果。我们的第二个贡献是提出一个简单的框架,足以实现良好的结果,并分析了几个重要的架构选择的影响。代码可在https://github.com/phillipi/pix2pix上获得。

2. 相关工作

结构化损失用于图像建模 图像到图像转换问题通常被制定为像素级的分类或回归问题(例如,[36、55、25、32、58])。这些制定将输出空间视为“非结构化”,意味着每个输出像素在给定输入图像的情况下被认为是条件独立的。相反,条件生成对抗网络学习的是结构化损失。结构化损失惩罚输出的联合配置。大量文献考虑了这种类型的损失,其中的方法包括条件随机场[9]、SSIM指标[53]、特征匹配[13]、非参数损失[34]、卷积伪先验[54],以及基于匹配协方差统计的损失[27]。条件生成对抗网络的不同之处在于学习了损失,理论上可以惩罚输出和目标之间的任何可能不同的结构。

条件生成对抗网络 我们不是第一个将GANs应用于条件设置的人。之前的研究已经将GANs置于离散标签[38、21、12]、文本[43],以及实际上图像等条件之下。图像条件模型已经处理了从法线贴图[52]预测图像、未来帧预测[37]、产品照片生成[56],以及从稀疏注释生成图像[28、45]的图像预测问题(参见[44]以获得同一问题的自回归方法)。还有其他一些论文也使用GANs进行图像到图像的映射,但只是无条件地应用GANs,依赖其他术语(如L2回归)来强制输出对输入进行条件约束。这些论文在修复[40]、未来状态预测[60]、受用户约束引导的图像处理[61]、风格转移[35]和超分辨率[33]方面取得了令人印象深刻的结果。每种方法都是针对特定应用进行了调整。我们的框架的不同之处在于没有任何特定于应用的内容。这使得我们的设置比大多数其他方法要简单得多。

我们的方法在生成器和鉴别器的几个架构选择方面也与之前的工作不同。与以往的工作不同,对于生成器,我们使用了基于“U-Net”的架构[47],对于鉴别器,我们使用了卷积“PatchGAN”分类器,该分类器只对图像块尺度上的结构进行惩罚。类似的PatchGAN架构之前在[35]中提出,用于捕捉局部风格统计。在这里,我们展示了这种方法在更广泛的问题上的有效性,并且我们研究了更改图像块尺寸的影响。

3. 方法

GANs是生成模型,它们学习从随机噪声向量 z z z到输出图像 y y y的映射, G : z → y G : z → y G:zy [22]。相比之下,条件生成对抗网络学习从观察到的图像 x x x和随机噪声向量 z z z y y y的映射, G : { x , z } → y G : \{x, z\} → y G:{x,z}y

生成器 G G G的训练目标是生成的输出无法被经过对抗训练的鉴别器 D D D与“真实”图像区分开来,鉴别器 D D D的训练目标是尽可能地检测生成器的“伪造”图像。这个训练过程在图2中有所说明。

图2:训练条件生成对抗网络从边缘映射→照片的映射。鉴别器 D D D学习将伪造的(由生成器合成的)和真实的{边缘映射,照片}元组进行分类。生成器 G G G学习欺骗鉴别器。与无条件的GAN不同,生成器和鉴别器都观察输入的边缘映射。

3.1. 目标函数

条件生成对抗网络的目标函数可以表示为

L c G A N ( G , D ) = E x , y [ log ⁡ D ( x , y ) ] + E x , z [ log ⁡ ( 1 − D ( x , G ( x , z ) ) ) ] (1) L_{cGAN}(G, D) = E_{x,y}[\log D(x, y)] + E_{x,z}[\log(1 - D(x, G(x, z)))] \tag{1} LcGAN(G,D)=Ex,y[logD(x,y)]+Ex,z[log(1D(x,G(x,z)))](1)

其中生成器 G G G试图最小化这个目标函数,对抗性的鉴别器 D D D试图最大化它,即 G ∗ = arg ⁡ min ⁡ G max ⁡ D L c G A N ( G , D ) G^* = \arg\min_G \max_D L_{cGAN}(G, D) G=argminGmaxDLcGAN(G,D)

为了测试条件鉴别器的重要性,我们还将其与不含条件的变种进行比较,其中鉴别器不观察 x x x
L G A N ( G , D ) = E y [ log ⁡ D ( y ) ] + E x , z [ log ⁡ ( 1 − D ( G ( x , z ) ) ) ] (2) L_{GAN}(G, D) = E_{y}[\log D(y)] + E_{x,z}[\log(1 - D(G(x, z)))] \tag{2} LGAN(G,D)=Ey[logD(y)]+Ex,z[log(1D(G(x,z)))](2)

先前的方法发现将GAN目标与更传统的损失(如L2距离)混合是有益的[40]。鉴别器的任务保持不变,但生成器不仅要欺骗鉴别器,还要在L2意义上接近地面实际输出。我们也探索了这个选项,使用L1距离代替L2,因为L1鼓励更少的模糊:

L L 1 ( G ) = E x , y , z [ ∥ y − G ( x , z ) ∥ 1 ] (3) L_{L1}(G) = E_{x,y,z}[\|y - G(x, z)\|_1] \tag{3} LL1(G)=Ex,y,z[yG(x,z)1](3)

我们的最终目标是

G ∗ = arg ⁡ min ⁡ G max ⁡ D ( L c G A N ( G , D ) + λ L L 1 ( G ) ) (4) G^* = \arg\min_G \max_D (L_{cGAN}(G, D) + \lambda L_{L1}(G)) \tag{4} G=argGminDmax(LcGAN(G,D)+λLL1(G))(4)

在没有 z z z的情况下,网络仍然可以从 x x x y y y学习映射,但会产生确定性输出,因此无法匹配除了Delta函数以外的任何分布。过去的条件GAN已经承认了这一点,并且在生成器的输入中提供了高斯噪声 z z z,除了 x x x之外(例如,[52])。在初始实验中,我们发现这种策略并不有效 - 生成器只是学会忽略噪声 - 这与Mathieu等人的研究一致[37]。相反,对于我们的最终模型,我们只在生成器的几层上以Dropout的形式提供噪声,这在训练和测试时都会应用。尽管有Dropout的噪声,我们观察到网络的输出只有微小的随机性。设计能够产生高度随机输出的条件GAN,并因此捕捉所建模条件分布的全部熵,是目前工作中未解决的重要问题。

3.2. 网络架构

我们从[41]中的生成器和鉴别器架构进行了调整。生成器和鉴别器都使用了形式为卷积-BatchNorm-ReLU [26]的模块。有关架构的详细信息可在补充材料中找到,在下面讨论了关键特征。

3.2.1 具有跳跃连接的生成器

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

许多先前的解决方案[40、52、27、60、56]针对这个领域的问题使用了编码器-解码器网络[24]。在这样的网络中,输入经过一系列逐渐下采样的层,直到瓶颈层,此时过程被反转。这样的网络要求所有信息流都通过所有层,包括瓶颈。对于许多图像转换问题,输入和输出之间共享了大量的低级信息,可以将这些信息直接传递到网络中是可取的。例如,在图像着色的情况下,输入和输出共享突出边缘的位置。

为了使生成器能够绕过瓶颈,以传递类似信息,我们添加了跳跃连接,遵循“U-Net” [47]的一般形状。具体来说,我们在每个层 i i i和层 n − i n - i ni之间添加跳跃连接,其中 n n n是总层数。每个跳跃连接简单地将层 i i i和层 n − i n - i ni中的所有通道连接起来。

3.2.2 马尔可夫鉴别器(PatchGAN)

众所周知,L2损失 - 和L1,参见图3 - 在图像生成问题上会产生模糊的结果[31]。尽管这些损失不能鼓励高频清晰度,在许多情况下,它们仍然准确捕捉了低频信息。对于这种情况,我们不需要一个全新的框架来在低频上强制正确性。L1已经足够。

图3:不同损失引发不同质量的结果。 每一列显示在不同损失下训练的结果。更多示例请参见 https://phillipi.github.io/pix2pix/ 。

这激发了将GAN鉴别器限制为仅模拟高频结构,依靠L1项来强制低频正确性(方程4)。为了模拟高频,将注意力限制在局部图像块的结构上就足够了。因此,我们设计了一个鉴别器架构 - 我们称之为PatchGAN - 它仅对图像块尺度上的结构进行惩罚。该鉴别器试图对图像中的每个 N × N N × N N×N块进行分类,判断其是否为真实的或伪造的。我们通过卷积在整个图像上运行此鉴别器,平均所有响应以提供 D D D的最终输出。

在第4.4节中,我们证明 N N N可以远小于图像的完整尺寸,仍然能够产生高质量的结果。这是有利的,因为较小的PatchGAN具有较少的参数,运行速度更快,可以应用于任意大的图像。

这样的鉴别器有效地将图像建模为马尔可夫随机场,假设在大于一个图像块直径的像素之间是独立的。这个联系之前在[35]中探讨过,也是纹理[15、19]和风格[14、23、20、34]模型中的常见假设。因此,我们的PatchGAN可以被理解为纹理/风格损失的一种形式。

3.3. 优化与推理

为了优化我们的网络,我们遵循了[22]中的标准方法:在D上进行一次梯度下降步骤,然后在G上进行一步。我们使用小批量随机梯度下降(SGD),并应用Adam求解器[29]。

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

4. 实验

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

  • 语义标签↔照片,训练于Cityscapes数据集[11]。
  • 建筑标签→照片,训练于CMP Facades [42]。
  • 地图↔航拍照片,使用从Google地图获取的数据进行训练。
  • 黑白照片→彩色照片,使用[48]进行训练。
  • 边缘→照片,使用来自[61]和[57]的数据进行训练;使用HED边缘检测器[55]生成的二值边缘以及后处理。
  • 素描→照片:在[17]的人工绘制的素描上测试边缘→照片模型。
  • 白天→夜晚,训练于[30]的数据。

有关这些数据集的详细训练细节可以在在线的补充材料中找到。在所有情况下,输入和输出都是1-3通道图像。定性结果在图7、图8、图9、图10和图11中展示,其他结果和失败案例可以在在线材料中找到(https://phillipi.github.io/pix2pix/)。

4.1. 评估指标

评估合成图像的质量是一个开放且困难的问题[49]。传统的指标,如像素级均方误差,不评估结果的联合统计信息,因此无法衡量结构化损失旨在捕捉的结构。

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

其次,我们衡量我们合成的城市景观是否足够逼真,以至于现成的识别系统能够识别其中的对象。这个指标类似于[49]中的“Inception分数”,[52]中的目标检测评估,以及[58]和[39]中的“语义可解释性”度量。

AMT感知研究 对于我们的AMT实验,我们遵循了[58]中的协议:Turkers被呈现了一系列试验,其中一个“真实”图像与由我们的算法生成的“伪造”图像相对比。在每个试验中,每个图像出现1秒钟,之后图像消失,Turkers被给予无限时间来回答哪个是伪造的。每个会话的前10张图像是练习,并且Turkers会得到反馈。在主要实验的40次试验中没有提供反馈。每次会话一次只测试一个算法,Turkers不允许完成多个会话。大约有50名Turkers对每个算法进行评估。所有图像都以256×256的分辨率呈现。与[58]不同的是,我们没有包括警觉性试验。对于我们的着色实验,真实和伪造的图像都是从相同的灰度输入生成的。对于地图↔航拍照片,真实和伪造的图像不是从相同的输入生成的,以使任务更加困难,避免底层结果。

FCN分数 尽管量化评估生成模型的挑战性是众所周知的,但最近的作品[49、52、58、39]尝试使用预训练的语义分类器作为伪指标来测量生成的刺激的可辨别性。直觉是,如果生成的图像逼真,那么在真实图像上训练的分类器也能够正确地对合成图像进行分类。为此,我们采用了FCN-8s [36]架构进行语义分割,并在cityscapes数据集上对其进行了训练。然后,我们通过对这些照片的分类准确率对比这些照片生成的标签,对合成的照片进行评分。

4.2. 目标函数分析

在方程(4)的目标中,哪些组件是重要的?我们进行消融研究以分离L1项、GAN项的影响,同时比较使用条件化鉴别器(cGAN,方程(1))与使用无条件鉴别器(GAN,方程(2))。

图3展示了这些变化对两个标签→照片问题的定性影响。仅使用L1会导致合理但模糊的结果。仅使用cGAN(在方程(4)中设置λ = 0)会产生更锐利的结果,但会在某些应用中引入视觉伪影。将两个术语结合在一起(λ = 100)可以减少这些伪影。

我们使用城市景观标签→照片任务上的FCN分数来量化这些观察结果(见表1):基于GAN的目标实现了更高的分数,表明合成图像包括更多可识别的结构。我们还测试了从鉴别器中移除条件的效果(标记为GAN)。在这种情况下,损失不会惩罚输入和输出之间的不匹配;它只关心输出看起来是否真实。这个变体的性能非常差;检查结果发现生成器几乎产生了几乎相同的输出,而不管输入照片。显然,在这种情况下,损失测量输入和输出之间的匹配质量非常重要,事实上cGAN比GAN表现得更好。然而,需要注意的是,添加L1项也鼓励输出尊重输入,因为L1损失惩罚了地面真实输出与合成输出之间的距离,这些合成输出可能不匹配。相应地,L1+GAN也能够有效地创建尊重输入标签映射的真实渲染。将所有术语组合在一起,L1+cGAN的表现也很好。

表1:在Cityscapes数据集上对语义标签↔照片任务进行评估的FCN分数

色彩鲜艳性 条件生成对抗网络引人注目的效果是它们产生锐利的图像,甚至在输入标签映射中不存在空间结构的情况下也产生空间结构的幻觉。人们可能会想象cGAN对光谱维度的“锐化”具有类似的效果 - 即使图像更丰富多彩。就像当不确定边缘的确切位置时,L1会鼓励模糊一样,它也会在不确定像素应该采用哪个可行的颜色值时,鼓励选择平均的灰色。特别地,选择使L1最小化可能颜色的条件概率密度函数的中值。

另一方面,对抗性损失原则上可以意识到灰色输出是不现实的,并鼓励匹配真实的颜色分布[22]。在图6中,我们调查了我们的cGAN在Cityscapes数据集上是否实现了这种效果。这些图显示了Lab颜色空间中输出颜色值的边际分布。虚线表示地面真实分布。显然,L1会导致比地面真实分布更窄的分布,验证了L1鼓励平均灰色颜色的假设。另一方面,使用cGAN会将输出分布推向地面真实分布。

4.3. 生成器架构分析

U-Net架构允许低级信息在网络中进行快速传递。这是否会导致更好的结果?图4比较了U-Net和编码器-解码器在城市景观生成方面的表现。编码器-解码器仅通过切断U-Net中的跳跃连接来创建。在我们的实验中,编码器-解码器无法学习生成真实图像。U-Net的优势似乎不局限于条件性GAN:当U-Net和编码器-解码器都使用L1损失进行训练时,U-Net再次取得了优越的结果(见图4)。

图4:在编码器-解码器中添加跳过连接以创建“U-Net”会产生更高质量的结果。

4.4. 从PixelGAN到PatchGAN到ImageGAN

我们测试了变化的鉴别器感受野的补丁大小N的效果,从1 × 1的“PixelGAN”到完整的286 × 286的“ImageGAN”1。图5显示了此分析的定性结果,表2定量了使用FCN分数的效果。请注意,在本文的其他部分,除非另有说明,所有实验都使用70 × 70的PatchGAN,而在本节中,所有实验都使用L1+cGAN损失。

图5:补丁大小变化。不同的损失函数会以不同的方式表现出输出的不确定性。在L1下,不确定的区域变得模糊且不饱和。1x1的PixelGAN鼓励更大的颜色多样性,但对空间统计没有影响。16x16的PatchGAN会产生局部锐利的结果,但也会在其能观察到的范围之外产生平铺伪影。70×70的PatchGAN会在空间和光谱(色彩丰富度)维度上强制产生锐利的输出,即使是不正确的。完整的286×286的ImageGAN在视觉上与70×70的PatchGAN的结果相似,但根据我们的FCN-score指标(表2)略低一些。请参阅 https://phillipi.github.io/pix2pix/ 获取其他示例。

表2:在Cityscapes标签→照片任务上,不同判别器感受野大小的FCN分数。请注意,输入图像为256×256像素,较大的感受野大小通过填充零来实现。

PixelGAN对空间清晰度没有影响,但确实增加了结果的色彩丰富性(在图6中定量)。例如,图5中的公共汽车在使用L1损失进行训练时被涂成灰色,但在使用PixelGAN损失时变成了红色。颜色直方图匹配是图像处理中的常见问题[46],而PixelGAN可能是一个有前景的轻量级解决方案。

图6:cGAN的颜色分布匹配特性,在Cityscapes数据集上进行测试。(参考原始GAN论文[22]的图1)。请注意,直方图交叉分数主要受高概率区域的差异影响,在图中无法察觉,因为图中显示的是对数概率,因此强调低概率区域的差异。

使用16×16的PatchGAN足以促使输出清晰,并实现良好的FCN分数,但也会导致平铺伪影。70 × 70的PatchGAN减轻了这些伪影问题,并实现了类似的分数。超越这一点,达到完整的286 × 286的ImageGAN并没有显著提高结果的视觉质量,实际上FCN分数显著降低(表2)。这可能是因为ImageGAN具有比70 × 70的PatchGAN更多的参数和更大的深度,可能更难训练。

全卷积转换的一个优势是,固定大小的补丁鉴别器可以应用于任意大小的图像。我们还可以在比训练图像更大的图像上对生成器进行卷积。我们在地图↔航拍照片任务上进行了测试。在对256×256图像进行生成器训练后,我们在512×512图像上对其进行测试。图7中的结果展示了这种方法的有效性。

图7:在512x512分辨率上的Google Maps示例结果(模型在256x256分辨率图像上训练,在测试时在较大图像上进行了卷积)。为了清晰起见进行了对比度调整。

4.5. 感知验证

我们在地图↔航拍照片和灰度→彩色任务上验证了结果的感知逼真度。地图↔照片的AMT实验结果如表3所示。我们方法生成的航拍照片在18.9%的试验中欺骗了参与者,明显高于L1基线,后者产生模糊的结果,几乎从未欺骗过参与者。相反,在照片→地图方向上,我们的方法在6.1%的试验中欺骗了参与者,与L1基线的表现没有显著差异(基于bootstrap测试)。这可能是因为地图中的轻微结构错误在视觉上更加明显,而地图具有刚性几何,而航拍照片则更加混乱。

表3:在地图↔航空照片任务上进行的AMT“真实 vs 虚假”测试。

我们在ImageNet[48]上进行了彩色化的训练,并在[58, 32]引入的测试集上进行了测试。我们的方法,使用L1+cGAN损失,在22.5%的试验中欺骗了参与者(表4)。我们还测试了[58]的结果以及他们的方法的变体,该方法使用了L2损失(有关详细信息,请参见[58])。条件GAN的得分与[58]的L2变体相似(通过bootstrap测试的差异不显著),但未达到[58]的完整方法水平,在我们的实验中,后者在27.8%的试验中欺骗了参与者。我们注意到他们的方法专门设计用于在彩色化方面表现良好。

表4:在上色任务上进行的AMT“真实 vs 虚假”测试。

图8:条件GAN与[58]中的L2回归和[60]中的完整方法(通过重新平衡进行分类)的上色结果对比。cGAN可以产生引人注目的上色效果(前两行),但有一个常见的失败模式,即生成灰度或去饱和的结果(最后一行)。

4.6. 语义分割

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

为了开始测试这一点,我们在城市景观照片→标签上训练了一个cGAN(带/不带L1损失)。图11显示了定性结果,定量分类准确性在表5中报告。有趣的是,没有L1损失进行训练的cGAN能够在合理的精度下解决这个问题。据我们所知,这是第一个成功生成“标签”的GAN演示,这些标签几乎是离散的,而不是具有连续变化的“图像”2。尽管cGAN取得了一些成功,但它们远未成为解决这个问题的最佳方法:仅使用L1回归得到的分数比使用cGAN要好,如表5所示。我们认为对于视觉问题,目标(即预测与地面真值接近的输出)可能比图形任务的目标更少模糊,而像L1这样的重建损失基本足够。

表5:在城市景观数据集上进行的照片→标签任务的性能。

4.7. 社区驱动的研究

自论文和我们的pix2pix代码库首次发布以来,Twitter社区,包括计算机视觉和图形领域的从业者以及艺术家,已经成功地将我们的框架应用于多种新颖的图像到图像转换任务,远远超出了原始论文的范围。图10仅展示了#pix2pix标签下的一些示例,例如素描→肖像、”Do as I Do”姿势转移、深度→街景、背景去除、调色板生成、素描→宝可梦,以及广受欢迎的#edges2cats。

图9:我们方法在几个任务上的结果(数据来自[42]和[17])。请注意,草图→照片的结果是由在自动边缘检测上训练并在人工绘制的草图上测试的模型生成的。请查看在线材料以获取额外的示例。

图10:基于我们的pix2pix代码库开发的在线社区示例应用:#edges2cats [3] 由Christopher Hesse,Sketch → Portrait [7] 由Mario Kingemann,“Do As I Do” 姿势转换 [2] 由Brannon Dorsey,Depth→ Streetview [5] 由Jasper van Loenen,背景去除 [6] 由Kaihu Chen,调色板生成 [4] 由Jack Qiao,以及Sketch→ Pokemon [1] 由Bertrand Gondouin。

图11:将条件性GAN应用于语义分割。cGAN生成锐利的图像,乍一看与真实情况相似,但实际上包含许多小型幻像对象。

5. 结论

本文的结果表明,条件性对抗网络是许多图像到图像转换任务的一种有前途的方法,尤其是涉及高度结构化图形输出的任务。这些网络学习了适应特定任务和数据的损失,使它们适用于各种不同的情境。

致谢

我们感谢Richard Zhang、Deepak Pathak和Shubham Tulsiani的有益讨论,感谢Saining Xie为HED边缘检测器提供帮助,以及在线社区在探索许多应用并提出改进意见方面的贡献。本工作部分得到了NSF SMA-1514512、NGA NURI、IARPA通过空军研究实验室、Intel Corp、Berkeley Deep Drive以及Nvidia的硬件捐赠的支持。

REFRENCE

  1. Bertrand Gondouin. https://twitter.com/bgondouin/status/818571935529377792. Accessed, 2017-04-21.
  2. Brannon Dorsey. https://twitter.com/brannondorsey/status/806283494041223168. Accessed, 2017-04-21.
  3. Christopher Hesse. https://affinelayer.com/pixsrv/. Accessed: 2017-04-21.
  4. Jack Qiao. http://colormind.io/blog/. Accessed: 2017-04-21.
  5. Jasper van Loenen. https://jaspervanloenen.com/neural-city/. Accessed, 2017-04-21.
  6. Kaihu Chen. http://www.terraai.org/imageops/index.html. Accessed, 2017-04-21.
  7. Mario Klingemann. https://twitter.com/quasimondo/status/826065030944870400. Accessed, 2017-04-21.
  8. A. Buades, B. Coll, and J.-M. Morel. A non-local algorithm for image denoising. In CVPR, volume 2, pages 60–65. IEEE, 2005.
  9. L.-C. Chen, G. Papandreou, I. Kokkinos, K. Murphy, and A. L. Yuille. Semantic image segmentation with deep convolutional nets and fully connected CRFs. In ICLR, 2015.
  10. T. Chen, M.-M. Cheng, P. Tan, A. Shamir, and S.-M. Hu. Sketch2photo: internet image montage. ACM Transactions on Graphics (TOG), 28(5):124, 2009.
  11. M. Cordts, M. Omran, S. Ramos, T. Rehfeld, M. Enzweiler, R. Benenson, U. Franke, S. Roth, and B. Schiele. The Cityscapes Dataset for semantic urban scene understanding. In CVPR, 2016.
  12. E. L. Denton, S. Chintala, R. Fergus, et al. Deep generative image models using a Laplacian pyramid of adversarial networks. In NIPS, pages 1486–1494, 2015.
  13. A. Dosovitskiy and T. Brox. Generating images with perceptual similarity metrics based on deep networks. arXiv preprint arXiv:1602.02644, 2016.
  14. A. A. Efros and W. T. Freeman. Image quilting for texture synthesis and transfer. In SIGGRAPH, pages 341–346. ACM, 2001.
  15. A. A. Efros and T. K. Leung. Texture synthesis by non-parametric sampling. In ICCV, volume 2, pages 1033–1038. IEEE, 1999.
  16. D. Eigen and R. Fergus. Predicting depth, surface normals and semantic labels with a common multi-scale convolutional architecture. In Proceedings of the IEEE International Conference on Computer Vision, pages 2650–2658, 2015.
  17. M. Eitz, J. Hays, and M. Alexa. How do humans sketch objects? SIGGRAPH, 31(4):44–1, 2012.
  18. R. Fergus, B. Singh, A. Hertzmann, S. T. Roweis, and W. T. Freeman. Removing camera shake from a single photograph. In ACM Transactions on Graphics (TOG), volume 25, pages 787–794. ACM, 2006.
  19. L. A. Gatys, A. S. Ecker, and M. Bethge. Texture synthesis and the controlled generation of natural stimuli using convolutional neural networks. arXiv preprint arXiv:1505.07376, 2015.
  20. L. A. Gatys, A. S. Ecker, and M. Bethge. Image style transfer using convolutional neural networks. CVPR, 2016.
  21. J. Gauthier. Conditional generative adversarial nets for convolutional face generation. Class Project for Stanford CS231N: Convolutional Neural Networks for Visual Recognition, Winter semester, 2014(5):2, 2014.
  22. I. Goodfellow, J. Pouget-Abadie, M. Mirza, B. Xu, D. Warde-Farley, S. Ozair, A. Courville, and Y. Bengio. Generative adversarial nets. In NIPS, 2014.
  23. A. Hertzmann, C. E. Jacobs, N. Oliver, B. Curless, and D. H. Salesin. Image analogies. In SIGGRAPH, pages 327–340. ACM, 2001.
  24. G. E. Hinton and R. R. Salakhutdinov. Reducing the dimensionality of data with neural networks. Science, 313(5786):504–507, 2006.
  25. S. Iizuka, E. Simo-Serra, and H. Ishikawa. Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification. ACM Transactions on Graphics (TOG), 35(4), 2016.
  26. S. Ioffe and C. Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift. 2015.
  27. J. Johnson, A. Alahi, and L. Fei-Fei. Perceptual losses for real-time style transfer and super-resolution. 2016.
  28. L. Karacan, Z. Akata, A. Erdem, and E. Erdem. Learning to generate images of outdoor scenes from attributes and semantic layouts. arXiv preprint arXiv:1612.00215, 2016.
  29. D. Kingma and J. Ba. Adam: A method for stochastic optimization. ICLR, 2015.
  30. P.-Y. Laffont, Z. Ren, X. Tao, C. Qian, and J. Hays. Transient attributes for high-level understanding and editing of outdoor scenes. ACM Transactions on Graphics (TOG), 33(4):149, 2014.
  31. A. B. L. Larsen, S. K. Sønderby, and O. Winther. Autoencoding beyond pixels using a learned similarity metric. arXiv preprint arXiv:1512.09300, 2015.
  32. G. Larsson, M. Maire, and G. Shakhnarovich. Learning representations for automatic colorization. ECCV, 2016.
  33. C. Ledig, L. Theis, F. Huszár, J. Caballero, A. Cunningham, A. Acosta, A. Aitken, A. Tejani, J. Totz, Z. Wang, et al. Photo-realistic single image super-resolution using a generative adversarial network. arXiv preprint arXiv:1609.04802, 2016.
  34. C. Li and M. Wand. Combining Markov random fields and convolutional neural networks for image synthesis. CVPR, 2016.
  35. C. Li and M. Wand. Precomputed real-time texture synthesis with Markovian generative adversarial networks. ECCV, 2016.
  36. J. Long, E. Shelhamer, and T. Darrell. Fully convolutional networks for semantic segmentation. In CVPR, pages 3431–3440, 2015.
  37. M. Mathieu, C. Couprie, and Y. LeCun. Deep multi-scale video prediction beyond mean square error. ICLR, 2016.
  38. M. Mirza and S. Osindero. Conditional generative adversarial nets. arXiv preprint arXiv:1411.1784, 2014.
  39. A. Owens, P. Isola, J. McDermott, A. Torralba, E. H. Adelson, and W. T. Freeman. Visually indicated sounds. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 2405–2413, 2016.
  40. D. Pathak, P. Krahenbuhl, J. Donahue, T. Darrell, and A. A. Efros. Context encoders: Feature learning by inpainting. CVPR, 2016.
  41. A. Radford, L. Metz, and S. Chintala. Unsupervised representation learning with deep convolutional generative adversarial networks. arXiv preprint arXiv:1511.06434, 2015.
  42. R. S. Radim Tylecek. Spatial pattern templates for recognition of objects with regular structure. In Proc. GCPR, Saarbrucken, Germany, 2013.
  43. S. Reed, Z. Akata, X. Yan, L. Logeswaran, B. Schiele, and H. Lee. Generative adversarial text to image synthesis. arXiv preprint arXiv:1605.05396, 2016.
  44. S. Reed, A. van den Oord, N. Kalchbrenner, V. Bapst, M. Botvinick, and N. de Freitas. Generating interpretable images with controllable structure. Technical report, Technical report, 2016.
  45. S. E. Reed, Z. Akata, S. Mohan, S. Tenka, B. Schiele, and H. Lee. Learning what and where to draw. In Advances In Neural Information Processing Systems, pages 217–225, 2016.
  46. E. Reinhard, M. Ashikhmin, B. Gooch, and P. Shirley. Color transfer between images. IEEE Computer Graphics and Applications, 21:34–41, 2001.
  47. O. Ronneberger, P. Fischer, and T. Brox. U-net: Convolutional networks for biomedical image segmentation. In MICCAI, pages 234–241. Springer, 2015.
  48. O. Russakovsky, J. Deng, H. Su, J. Krause, S. Satheesh, S. Ma, Z. Huang, A. Karpathy, A. Khosla, M. Bernstein, et al. Imagenet large scale visual recognition challenge. IJCV, 115(3):211–252, 2015.
  49. T. Salimans, I. Goodfellow, W. Zaremba, V. Cheung, A. Radford, and X. Chen. Improved techniques for training GANs. arXiv preprint arXiv:1606.03498, 2016.
  50. Y. Shih, S. Paris, F. Durand, and W. T. Freeman. Data-driven hallucination of different times of day from a single outdoor photo. ACM Transactions on Graphics (TOG), 32(6):200, 2013.
  51. D. Ulyanov, A. Vedaldi, and V. Lempitsky. Instance normalization: The missing ingredient for fast stylization. arXiv preprint arXiv:1607.08022, 2016.
  52. X. Wang and A. Gupta. Generative image modeling using style and structure adversarial networks. ECCV, 2016.
  53. Z. Wang, A. C. Bovik, H. R. Sheikh, and E. P. Simoncelli. Image quality assessment: from error visibility to structural similarity. IEEE Transactions on Image Processing, 13(4):600–612, 2004.
  54. S. Xie, X. Huang, and Z. Tu. Top-down learning for structured labeling with convolutional pseudoprior. 2015.
  55. S. Xie and Z. Tu. Holistically-nested edge detection. In ICCV, 2015.
  56. D. Yoo, N. Kim, S. Park, A. S. Paek, and I. S. Kweon. Pixel-level domain transfer. ECCV, 2016.
  57. A. Yu and K. Grauman. Fine-Grained Visual Comparisons with Local Learning. In CVPR, 2014.
  58. R. Zhang, P. Isola, and A. A. Efros. Colorful image colorization. ECCV, 2016.
  59. J. Zhao, M. Mathieu, and Y. LeCun. Energy-based generative adversarial network. arXiv preprint arXiv:1609.03126, 2016.
  60. Y. Zhou and T. L. Berg. Learning temporal transformations from time-lapse videos. In ECCV, 2016.
  61. J.-Y. Zhu, P. Kr¨ahenb¨uhl, E. Shechtman, and A. A. Efros. Generative visual manipulation on the natural image manifold. In ECCV, 2016.
    rsarial network. arXiv preprint arXiv:1609.03126, 2016.
  62. Y. Zhou and T. L. Berg. Learning temporal transformations from time-lapse videos. In ECCV, 2016.
  63. J.-Y. Zhu, P. Kr¨ahenb¨uhl, E. Shechtman, and A. A. Efros. Generative visual manipulation on the natural image manifold. In ECCV, 2016.

  1. 我们通过调整GAN判别器的深度来实现这种补丁大小的变化。有关此过程的详细信息以及判别器架构,请参阅在线的补充材料。 ↩︎

  2. 请注意,我们训练时使用的标签图并不完全是离散值,因为它们是通过双线性插值从原始地图调整大小并保存为JPEG图像的,其中可能存在一些压缩伪影。 ↩︎

相关文章:

【计算机视觉|生成对抗】带条件的对抗网络进行图像到图像的转换(pix2pix)

本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题:Image-to-Image Translation with Conditional Adversarial Networks 链接:Image-to-Image Translation with Conditional Adversarial Networks | IEEE Conference Publicati…...

[时序数据库]:InfluxDB进阶

文章目录 1 摘要2 背景2.1 问题一:针对Influx V2.0工具2.2 问题二:针对Influx查询语言 3 需求分析4 快速入门4.1 客户端驱动版本选择4.2 连接influx4.2.1 influx配置信息4.2.2 influx连接配置4.2.3 测试连通情况 5 Influx工具类5.1 InfluxQL工具类5.1.1 …...

uniapp编写微信小程序遇到的坑总结

1、阻止事件冒泡 使用uniapp开发微信小程序的时候,发现使用click.stop来阻止事件冒泡没有作用,点击了之后发现仍然会触发父组件或者祖先组件的事件。 在网上查阅,发现使用tap.stop才能阻止事件冒泡。 2、二维码生成 在网上找了很多&…...

Binary operator ‘*‘ cannot be applied to two ‘Double?‘ operands

在 swift 中声明 Double 类型参数变量在进行运算处理时抛出了如下异常 Binary operator * cannot be applied to two Double? operands 情况一 参数类型不匹配,需将参数类型进行匹配 self.max height / (length * width) // 初始 self.max height / (length * Double(wid…...

C#如何打包EXE程序生成setup安装文件

项目结束之后,有需要将winForm程序打包成.exe文件提供给用户。 这里记录一下打包过程。 1:首先获取打包插件,如果你的VS已经安装,忽略此步骤。 点击 工具->扩展和更新,选择联机,搜索installer&#x…...

【python实现向日葵控制软件功能】手机远程控制电脑

大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人_python人工智能视觉(opencv)从入门到实战,前端,微信小程序-CSDN博客 最新的uniapp毕业设计专栏也放在下方了: https://blog.csdn.net/lbcy…...

手机系统录屏怎么录?有什么其他录制方法和注意事项?

手机系统录屏是一种很方便的方式,可以用于录制游戏、教程视频,或者是跟别人分享一些操作。在不同的手机系统中,录制方法可能会有所不同,以下是一些通用的步骤分享以及其他录制工具的分享,有需要的小伙伴们快来看一看吧…...

记录一个编译TubeTK时的报错:at_check问题

在使用如下命令安装TubeTK的cuda_nms时,报了一个错误,记录一下这个错误和解决办法 (base) redmeryredmery:~/Desktop/MOT/TubeTK/post_processing/nms$ python setup.py build_ext --inplace因为这个命令是在/home/redmery/Desktop/MOT/TubeTK/install/…...

k8s v1.27.4二进制部署记录

记录二进制部署过程 #!/bin/bash#升级内核 update_kernel() {rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgyum -y install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpmyum --disablerepo"*" --enablerepo"elrepo-kernel&q…...

C# API 文档注释规范

C# API 文档注释规范 1. 命名空间注释(namespace)2. summary3. remarks and para4. param5. returns6. example and code7. exception8. typeparam 最近在开发工作中需要实现 API 帮助文档,如果根据所写的代码直接重写 API 帮助文档将会是意见非常大的工作量&#x…...

分类预测 | Matlab实现基于TSOA-CNN-GRU-Attention的数据分类预测

分类预测 | Matlab实现基于TSOA-CNN-GRU-Attention的数据分类预测 目录 分类预测 | Matlab实现基于TSOA-CNN-GRU-Attention的数据分类预测效果一览基本介绍研究内容程序设计参考资料 效果一览 基本介绍 Matlab实现分类预测 | Matlab实现基于TSOA-CNN-GRU-Attention的数据分类预…...

《深度剖析K8s》学习笔记

一、容器技术 1.从进程说起 a. 概述 进程:数据和状态的综合 容器技术的核心:约束和修改进程的动态表现,创造出边界(Cgroup:约束/namespace:进程视图) 启动容器例子: docker ru…...

神经网络基础-神经网络补充概念-49-adam优化算法

概念 Adam(Adaptive Moment Estimation)是一种优化算法,结合了动量梯度下降法和RMSProp的优点,用于在训练神经网络等深度学习模型时自适应地调整学习率。Adam算法在深度学习中广泛应用,通常能够加速收敛并提高模型性能…...

Java:正则表达式书写规则及相关案例:检验QQ号码,校验手机号码,邮箱格式,当前时间

正则表达式 目标:体验一下使用正则表达式来校验数据格式的合法性。需求:校验QQ号码是否正确,要求全部是数字,长度是(6-20)之间,不能以0开头 首先用自己编写的程序判断QQ号码是否正确 public static void main(String[] args) {Sy…...

图数据库_Neo4j_Centos7.9安装Neo4j社区版3.5.4_基于jdk1.8---Neo4j图数据库工作笔记0011

首先上传安装包,到opt/soft目录 然后看一下jdk安装的是什么版本的,因为在neo4j 4以后就必须要用jdk11 以上的版本,我这里还用着jdk1.8 所以 我这里用3.5.4的版本 关于下载地址: https://dist.neo4j.org/neo4j-community-3.5.4-unix.tar.gz 然后再去解压到/opt/module目录下 …...

使用Rust编写的一款使用遗传算法、神经网络、WASM技术的模拟生物进化的程序

模拟生物进化程序 Github地址:FishLife 期待各位的star✨✨✨ 本项目是一个模拟生物进化的程序,利用遗传算法、神经网络技术对鱼的眼睛和大脑进行模拟。该项目是使用 Rust 语言编写的,并编译为 WebAssembly (Wasm) 格式,使其可以…...

UE4/UE5 “无法双击打开.uproject 点击无反应“解决

一、方法一:运行UnrealVersionSelector.exe 1.找到Epic Game Lancher的安装目录, 在lancher->Engine->Binaries->Win64->UnrealVersionSelector.exe 2.把UnrealVersionSelector.exe 分别拷贝到UE4 不同版本引擎的 Engine->Binaries->…...

【前端】深入理解CSS定位

目录 一、前言二、定位组成1、定位模式1.1、静态定位static①、语法定义②、特点 1.2、相对定位relative①、语法定义②、特点③、代码示例 1.3、绝对定位absolute①、语法定义②、特点③、代码示例1)、没有祖先元素或者祖先元素没有定位2)、祖先元素有定…...

【问题】分布式事务的场景下如何保证读写分离的数据一致性

我的理解这个题目可以获得以下关键字:分布式处理、读写分离、数据一致性 那么就从”读写分离“做切入口吧,按我的理解其实就是在保证数据一致性的前提下两个(或以上)的数据库分别肩负不同的数据处理任务。太过久远的就不说了&…...

常见的Web安全漏洞有哪些,Web安全漏洞常用测试方法介绍

Web安全漏洞是指在Web应用程序中存在的可能被攻击者利用的漏洞,正确认识和了解这些漏洞对于Web应用程序的开发和测试至关重要。 一、常见的Web安全漏洞类型: 1、跨站脚本攻击(Cross-Site Scripting,XSS):攻击者通过向Web页面注入…...

随机微分方程

应用随机过程|第7章 随机微分方程 见知乎:https://zhuanlan.zhihu.com/p/348366892?utm_sourceqq&utm_mediumsocial&utm_oi1315073218793488384...

下载安装并使用小乌龟TortoiseGit

1、下载TortoiseGit安装包 官网:Download – TortoiseGit – Windows Shell Interface to Githttps://tortoisegit.org/download/ 2、小乌龟汉化包 在官网的下面就有官方提供的下载包 3、安装...

npm ERR!Cannot read properties of null(reading ‘pickAlgorithm’)报错问题解决

当在使用npm包管理器或执行npm命令时,有时候会遇到“npm ERR!Cannot read properties of null(reading ‘pickAlgorithm’)”这个错误提示,这是一个常见的npm错误。 这个错误提示通常说明在使用npm包管理器时,执行了某个npm命令,…...

web前端tips:js继承——组合继承

上篇文章给大家分享了 js继承中的借用构造函数继承 web前端tips:js继承——借用构造函数继承 在借用构造函数继承中,我提到了它的缺点 无法继承父类原型链上的方法和属性,只能继承父类构造函数中的属性和方法 父类的方法无法复用&#xff0…...

(7)(7.3) 自动任务中的相机控制

文章目录 前言 7.3.1 概述 7.3.2 自动任务类型 7.3.3 创建合成图像 前言 本文介绍 ArduPilot 的相机和云台命令,并说明如何在 Mission Planner 中使用这些命令来定义相机勘测任务。这些说明假定已经连接并配置了相机触发器和云台(camera trigger and gimbal hav…...

Python 爬虫小练

Python 爬虫小练 获取贝壳网数据 使用到的模块 标准库 Python3 标准库列表 os 模块:os 模块提供了许多与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等。math 模块:math 模块提供了数学函数&#xf…...

vue3 事件处理 @click

在Vue 3中&#xff0c;事件处理可以通过click指令来实现。click指令用于监听元素的点击事件&#xff0c;并在触发时执行相应的处理函数。 下面是一个简单的示例&#xff0c;展示了如何在Vue 3中处理点击事件&#xff1a; <template><button click"handleClick&…...

【第三阶段】kotlin语言使用replace完成加解密操作

fun main() {val password"ASDAFWEFWVWGEGSDFWEFEWGFS"println("原始密码&#xff1a;$password")//加密操作,就是把字符替换成数字&#xff0c;打乱加密var newPsdpassword.replace(Regex("[ADWF]")){when(it.value){//it.value 这里的每一个字…...

springBoot是如何实现自动装配的

目录 1 什么是自动装配 2 Spring自动装配原理 2.1 SpringBootConfiguration ​编辑 2.2 EnableAutoConfiguration 2.2.1 AutoConfigurationPackage 2.2.2 Import({AutoConfigurationImportSelector.class}) 2.3 ComponentScan 1 什么是自动装配 自动装配就是将官方写好的的…...

基于python+MobileNetV2算法模型实现一个图像识别分类系统

一、目录 算法模型介绍模型使用训练模型评估项目扩展 二、算法模型介绍 图像识别是计算机视觉领域的重要研究方向&#xff0c;它在人脸识别、物体检测、图像分类等领域有着广泛的应用。随着移动设备的普及和计算资源的限制&#xff0c;设计高效的图像识别算法变得尤为重要。…...