我们研究了条件对抗网络作为一种通用的图像到图像翻译问题的解决方案。这些网络不仅学习从输入图像到输出图像的映射,而且学习一个损失函数来训练这种映射。这使得采用相同的通用方法,解决传统上需要不同损失公式的问题成为可能。我们证明了这种方法在从标签图合成照片、从边缘图重建对象以及给图像上色等任务中是有效的。事实上,自从与本文相关的pix2pix软件发布以来,大量互联网用户(其中许多是艺术家)已经在我们的系统上发布了他们自己的实验,进一步证明了它的广泛适用性和易于采用,而无需进行参数调整。作为一个community,我们不再人为设计映射函数,这项工作表明我们也可以在不人为设计损失函数的情况下获得合理的结果。
图像处理、计算机图形学和计算机视觉中的许多问题都可以被视为将输入图像“翻译”成相应的输出图像。正如一个概念可以用英语或法语表达一样,一个场景可以呈现为一个RGB图像、 a gradient field、一个边缘映射、一个语义标签映射等。与自动语言翻译类似,我们将自动图像到图像转换定义为在给定足够的训练数据的情况下将一个场景的一种可能表示转换为另一种可能表示的任务(见图1)。传统上,这些任务中的每一个都是用单独的专用机器(例如[16、25、20、9、11、53、33、39、18、58、62])来处理的,尽管设置总是相同的:从像素预测像素。本文的目标是为所有这些问题开发一个通用的框架。
Community已经朝着这个方向迈出了重要的一步,卷积神经网络(CNN)成为各种图像预测问题背后的共同方法。CNN学习最小化损失函数——一个衡量结果质量的目标——尽管学习过程是自动的,但仍然需要大量的人工努力来设计有效的损失。换句话说,我们仍然必须告诉CNN我们希望它最小化的内容。但是我们必须小心我们的愿望!如果我们采取一种幼稚的方法,要求CNN最小化预测的和真值的像素之间的欧几里得距离,它将倾向于产生模糊的结果[43,62]。这是因为欧几里得距离通过平均所有可能的输出而最小化,这会导致模糊。提出迫使CNN做我们真正想做的事情(如输出清晰、真实的图像)的损失函数是一个开放的问题,通常需要专业知识。
如果我们只指定一个高层次的目标,例如“使输出与现实不可区分”,然后自动学习一个适合于满足这个目标的损失函数,这将是非常可取的。幸运的是,这正是最近提出的生成对抗网络(gans)所做的工作[24、13、44、52、63]。Gans学习了一种尝试分别输出图像是真是假的损失,同时训练了一个生成模型来最小化这种损失。模糊的图像不会被容忍,因为它们看起来明显是假的。因为gan可以学习适应数据的损失,所以它们可以应用于许多传统上需要非常不同类型损失函数的任务。
本文探讨了条件设置下的GAN。正如GANs学习数据的生成模型一样,条件GANs(cGANs)学习条件生成模型[24]。这使得cGANs适合于图像到图像的翻译任务,在该任务中,给输入图像加条件并生成相应的输出图像。
在过去的两年里,人们对GANs进行了大量的研究,并在此基础上提出了许多技术。尽管如此,早期的论文关注的是具体的应用,但作为一种通用的解决图像到图像翻译的方案,图像条件GANs的有效性还不清楚。我们的主要贡献是证明了条件GANs对各种问题产生了合理的结果。我们的第二个贡献是提供一个简单的框架,足以达到良好的效果,并分析几个重要的体系结构选择的影响。代码可在https://github.com/phllipi/pix2pix上找到。
图像建模的结构化损失 图像到图像的翻译问题通常是根据像素分类或回归(例如[39、58、28、35、62])来制定的。这些公式将输出空间视为“非结构化”,即在给定输入图像的情况下,每个输出像素被视为与所有其他像素有条件地独立。而条件GANs学习结构损失。结构损失penalize the joint configuration of the output(影响输出的联合配置)。大量文献考虑了这种损失,使用方法包括条件随机场[10],SSIM度量[56],特征匹配[15],非参数损失[37],卷积伪先验[57], 和基于匹配协方差统计的损失[30]。 条件GAN的不同之处在于学习了损失,并且理论上可以惩罚输出和目标之间不同的任何可能结构。
条件GAN 我们不是第一个在条件设置中应用GAN的人。先前和同时进行的工作已经使用GANs对离散标签[41,23,13],文本[46]以及图像具有重要影响。图像条件模型已经从法线图[55],未来帧预测[40],产品照片生成[59]以及稀疏注释图像生成[31,48]中处理了图像预测(参见[47]的自回归图像处理同样的问题)。其他几篇论文也使用GAN进行图像到图像的映射,但只是应用无条件地GAN,依赖于其他术语(如L2回归)来强制让输出以输入为条件。这些论文在修复[43],未来状态预测[64],用户约束引导的图像处理[65],风格迁移[38]和超分辨率[36]方面取得了令人瞩目的成果。每种方法都是针对特定应用而定制的。我们的框架不同之处在于没有特定应用。这使我们的设置比大多数其他设置简单得多。
我们的方法在生成器和判别器的几种架构选择中也与先前的工作不同。 与过去的工作不同,对于生成器,我们使用基于“U-Net”的架构[50],对于鉴别器,我们使用卷积“PatchGAN”分类器,其仅在image patches(图片小块)的尺度上惩罚结构。 之前在[38]中提出了类似的PatchGAN 架构来捕获本地样式统计数据。 在这里,我们表明这种方法对更广泛的问题有效,我们研究了改变patch大小的效果。
GANs是生成模型,可以学习从随机噪声向量z到输出图像y的映射,G:z→y [24]。相反,条件GANs学习从图像x和随机噪声矢量z到图像y的映射,G:{x,z}→y。 训练生成器G以产生判别器D(由对抗训练得到D)无法区分真假的输出,该判别器被训练成尽可能地检测出生成器的“假货”。 该训练过程如图2所示。
条件对抗网络的目标函数可表示为公式(1),其中G试图最小化这个目标,D试图最大化这个目标,即G * = arg minG maxD LcGAN(G,D)。 为了测试条件判别器的重要性,我们还比较了一个无条件的变量,其中判别器没有观察x,公式(2)。
以前的方法发现将GAN的目标与更传统的损失混合是有益的,例如L2距离[43]。判别器的工作保持不变,但发生器的任务不仅是欺骗判别器,而且还要接近L2意义上的真实输出。 我们还探索了这个选项,使用L1距离而不是L2,因为L1鼓励减少模糊,公式(3)。最终目标函数见公式(4).
如果没有z,网络仍然可以学习从x到y的映射,但会产生确定性输出,因此无法匹配delta函数之外的任何分布。过去的条件GAN已经承认了这一点, 所以除了x(例如,[55])还提供了高斯噪声z作为生成器的输入。 在最初的实验中,我们没有发现这种策略有效——生成器只学会忽略噪声——这与Mathieu等人一致[40]。 相反,对于我们的最终模型,我们仅以dropout的形式提供噪声,在训练和测试时应用生成器的几个层。 尽管存在dropout噪声,但我们观察到网络输出中只有轻微的随机性。 设计产生高随机输出的条件GAN,从而捕获它们建模的条件分布的完整熵,是当前工作留下的一个重要问题。
我们使用[44]中的生成器和判别器结构进行调整。 生成器和判别器都使用模块 convolution-BatchNorm-ReLu[29]。 在线补充材料中提供了该架构的详细信息,其中包括下面讨论的主要功能。
图像到图像翻译问题的一个定义特征是它们将高分辨率输入网格映射到高分辨率输出网格。 另外,对于我们考虑的问题,输入和输出的表面外观不同,但两者都是相同底层结构的渲染。 因此,输入中的结构与输出中的结构大致对齐。 我们围绕这些考虑设计了生成器架构。
许多以前针对该领域问题的解决方案[43,45,30,64,59]使用了编码器 - 解码器网络[26]。 在这样的网络中,输入通过了一系列逐渐下采样的层,直到瓶颈层,此时该过程被反转。 这样的网络要求所有信息流都通过所有层,包括瓶颈。 对于许多图像翻译问题,在输入和输出之间共享大量低级信息,并且希望直接在网络上传送该信息。 例如,在图像着色的情况下,输入和输出共享突出边缘的位置。
为了给生成器提供绕过瓶颈的方法来获取这样的信息,我们按照“U-Net”[50]的一般形状添加跳过连接。 具体来说,我们在每个层i和层n-i之间添加跳过连接,其中n是层的总数。 每个跳过连接简单地将第i层的所有通道与第n-i层的通道连接起来。
众所周知,L2损失和L1(见图4),在图像生成问题上产生模糊的结果[34]。 虽然这些损失不能激励高频的结构,但在许多情况下它们仍准确地捕获低频的结构。 对于这种情况,我们不需要一个全新的框架来强制低频率的正确性。 L1已经做好了。
图4 不同的损失导致不同质量的结果。每列显示在不同损失下训练的结果。这促使限制GAN判别器仅模拟高频结构,依赖L1项来获取低频正确性(公式4)。 为了模拟高频,将我们的注意力限制在局部图像块中的结构就足够了。 因此,我们设计了一个判别器结构 ,称之为PatchGAN ,只在补丁块(patch)的尺度上惩罚结构。 这个判别器试图区分图像中的每个N×N补丁块(patch)是真实的还是假的。 我们在图像上以卷积方式运行判别器,平均所有响应以提供D的最终输出。
https://blog.csdn.net/missingu1314/article/details/8675434图像的高低频是对图像各个位置之间强度变化的一种度量方法,低频分量:主要对整副图像的强度的综合度量。高频分量:主要是对图像边缘和轮廓的度量。如果一副图像的各个位置的强度大小相等,则图像只存在低频分量,从图像的频谱图上看,只有一个主峰,且位于频率为零的位置.如果一副图像的各个位置的强度变化剧烈,则图像不仅存在低频分量,同时也存在多种高频分量,从图像的频谱上看,不仅有一个主峰,同时也存在多个旁峰.
https://blog.csdn.net/zhfblack/article/details/73382269?utm_source=blogxgwz5不同频率信息在图像结构中有不同的作用。图像的主要成分是低频信息,它形成了图像的基本灰度等级,对图像结构的决定作用较小;中频信息决定了图像的基本结构,形成了图像的主要边缘结构;高频信息形成了图像的边缘和细节,是在中频信息上对图像内容的进一步强化。图像进行二维傅立叶变换得到频谱图,就是图像梯度的分布图,当然频谱图上的各点与图像上各点并不存在一一对应的关系,即使在不移频的情况下也是没有。傅立叶频谱图上我们看到的明暗不一的亮点,实际是上图像上某一点与邻域点差异的强弱,即梯度的大小,也即该点的频率的大小(可以这么理解,图像中的低频部分指低梯度的点,高频部分相反)。
在4.4节中,我们证明N可以比图像的完整尺寸小得多,并且仍然可以产生高质量的结果。 这是有利的,因为较小的PatchGAN具有较少的参数,运行得更快,并且可以应用于任意大的图像。(但没有利用图像的全局特征)
这种判别器有效地将图像建模为马尔可夫随机场,假设像素之间的独立性超过了补丁块(patch)直径。 这种联系之前曾在[38]中探讨过,也是纹理[17,21]和风格[16,25,22,37]模型中的常用假设。 因此,我们的PatchGAN可以理解为纹理/风格损失的一种形式。
为优化网络,我们遵循[24]的标准方法:在D和G上交替进行梯度下降。如原始GAN论文中所建议的那样,而不是将G训练为最小化 log(1 - D(x,G(x,z)),而是最大化 log D(x,G(x,z))[24]。此外,我们将目标除以2而 优化D,这会减慢D学习相对于G的速率。我们使用minibatch SGD并应用Adam求解器[32],学习率为0.0002,动量参数β1= 0.5,β2= 0.999。
在推理时,我们以与训练阶段完全相同的方式运行生成网络。 这与通常的协议不同之处在于我们在测试时应用了dropout和批量标准化(batch normalization)[29],而不是训练样本上。 当批量大小设置为1时,这种批量标准化方法被称为“实例标准化”,并且已被证明在图像生成任务中有效[54]。 在我们的实验中,我们根据实验使用1到10之间的批量大小。
为了探索条件GANs的一般性,我们在各种任务和数据集上测试该方法,包括图形任务,如照片生成和视觉任务,如语义分割:
• 语义标签 ↔ 照片,在Cityscapes数据集上训练[12]。
• 建筑标签→照片,在CMP Facades数据集上训练。[45]。
• 地图↔鸟瞰图,训练从Google地图中收集的数据。
• BW→彩色照片,在[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/。
数据要求和速度 我们注意到,即使在小型数据集上也可以获得不错的结果。 我们的门面训练集(facade)仅包含400个图像(参见图14中的结果),而日到夜使用的训练集仅包含91个独特的网络摄像头(参见图15中的结果)。 在这个大小的数据集上,训练可以非常快:例如,图14中显示的结果在单个Pascal Titan X GPU上花了不到两个小时的训练。 在测试时,所有型号都在这个GPU上运行不到一秒钟。
评估合成图像的质量是一个开放和困难的问题[52]。 诸如每像素均方误差的传统度量无法评估结果的联合统计,因此无法测量结构化损失想要捕获的结构。
为了更全面地评估我们结果的视觉质量,我们采用了两种策略。 首先,我们对Amazon Mechanical Turk(AMT)进行“真实与假冒”的感知研究。 对于诸如着色和照片生成之类的图形问题,人类观察者的合理性通常是最终目标。 因此,我们使用这种方法测试我们的地图生成,航空照片生成和图像着色。
其次,测量合成的城市景观是否足够现实,在于现成的识别系统是否可以识别其中的物体。 该度量类似于[52]中的“初始得分”,[55]中的对象检测评估,以及[62]和[42]中的“语义可解释性”度量。
AMT 感知研究 略
“FCN得分” 虽然生成模型的定量评估具有挑战性,但最近的工作[52,55,62,42]已尝试使用预先训练的语义分类器来测量所生成的刺激的可辨别性作为伪度量。 直觉是如果生成的图像是真实的,则在真实图像上训练的分类器也能够正确地对合成图像进行分类。 为此,我们采用流行的FCN-8 [39]架构进行语义分割,并在城市景观数据集上进行训练。 然后,我们根据分类精度对这些照片合成的标签进行合成照片评分。
公式4中的哪些组成部分很重要? 我们进行对比研究,以隔离L1项,GAN项的影响,并使用以输入为条件的鉴别器(cGAN,方程1)与使用无条件鉴别器(GAN,方程2)进行比较。
图4显示了这些变化对两个标签→照片问题的定性影响。 只有L1会导致合理但模糊的结果。 单独的cGAN(在方程4中设置λ= 0)给出了更加清晰的结果,但在某些应用中引入了可视化伪像。 将两个项一起添加(λ= 100)可减少这些伪影。
全文翻译&杂记《Image-to-Image Translation with Conditional Adversarial NetWorks》
基于对抗生成网络的图像转换技术【论文笔记】