GAN论文学习1--- 2017CVPR Image-to-image translation with conditional adversarial networks_Pix2pix

Title: Image-to-image translation with conditional adversarial networks
paper:pdf
Code:Pix2pix code

Abstract

研究GAN作为图像到图像翻译问题的通用解决方案。This makes it possible to apply
the same generic approach to problems that traditionally would require very different loss formulations.。本文演示了这种方法在从标签映射合成照片、从边缘映射重构对象和为图像着色等任务中是有效的。很多人通过实验也证明了它的广泛适用性和易于采用,而不需要调整参数。我们也可以在不手工设计损失函数的情况下获得合理的结果。

Introduction

基于CGAN,我们对输入图像设置条件并生成相应的输出图像。在过去的两年里,GANs得到了广泛的研究,我们在本文中探索的许多技术都已经被提出。尽管如此,早期的论文都集中在特定的应用上,目前还不清楚CGAN作为图像到图像翻译的通用解决方案的有效性。我们的主要贡献是证明,在各种各样的问题上,CGAN能产生合理的结果。我们的第二个贡献是提供一个简单的框架,足以实现良好的结果,并分析几个重要架构选择的影响。

Related Work

图像建模的结构化损失

图像到图像的翻译问题通常表示为逐像素分类或回归。这些公式将输出空间视为非结构化的,因为每个输出像素都被认为有条件地独立于给定输入图像的所有其他像素。CGAN反而学会了结构性的损失。CGAN的不同之处在于,损失是可以学习的,理论上,它可以惩罚产出和目标之间可能存在差异的任何结构。

CGAN

很多论文也将GANs用于图像到图像的映射,但只是无条件地应用GAN,依赖于其他terms(如L2回归)来强制输出以输入为条件。这些论文在inpainting[43]、未来状态预测[64]、用户约束引导下的图像处理[65]、style transfer[38]、超分辨率[36]等方面取得了令人印象深刻的成果。每一种方法都是针对特定的应用而定制的。我们的框架的不同之处在于没有什么是特定于应用程序的。这使得我们的设置比大多数其他设置要简单得多。
我们的方法在生成器和鉴别器的几个架构选择上也与以前的工作不同。与以往的工作不同,我们的生成器使用基于U-Net的架构[50],而我们的鉴别器使用卷积PatchGAN分类器,它只在图像补丁的规模上惩罚结构。以前在[38]中也提出过类似的PatchGAN体系结构来捕获本地风格的统计数据。在这里,我们展示了这种方法在更广泛的问题上是有效的,并且我们研究了改变patch大小的效果。

Method

GAN是学习从随机噪声向量z到输出图像y的映射。G:z→y。然而,CGAN是学习从观察到的图像x和随机噪声向量z到y的映射G : {x, z}→y。G训练生成的fake无法被D鉴别,再训练一个能尽力鉴别fake和real的D。如下图所示:
在这里插入图片描述

Object

CGAN的目标函数:

在这里插入图片描述
G试图最小化目标,D试图最大化目标。等价于G*=arg minG maxD Lcgan(G,D)。

普通GAN的目标函数:

在这里插入图片描述
1.与CGAN的区别就是鉴别器D是不是有条件x

2.作者又说L2损失与GAN混合使用更有用。D不变,G加个L2损失就不仅需要生成的图片欺骗D还要更接近real值的输出。作者又说L1比L2效果好,因为L1可以减少模糊。公式如(3):
在这里插入图片描述
3.最终的目标函数如下:
在这里插入图片描述
没有z,网络仍然可以学习x到y的映射,但是会产生确定的输出,因此无法匹配除delta函数之外的任何分布(and therefore fail to match any distribution other than a delta function)。过去的CGAN已经承认这一点,除了x(例如,[55])还提供高斯噪声z作为一个G的输入。在最初的实验中,我们没有发现这种策略(G只是学会了忽略噪声z),这与Mathieu等人的[40]是一致的。然而,对于我们最终的模型,我们只,提供了dropout形式的噪声,在训练和测试时应用于G的几个层上。尽管有dropout噪声,我们在网的输出中只观察到很小的随机性。设计产生高度随机输出的CGAN,从而捕获它们所建模的条件分布的全部熵,是目前工作中遗留下来的一个重要问题。

Network architectures

CK表示带有K卷积核的Conv-Bn-ReLU模块;CDK同上只是带个0.5的dropout。所有的Conv都是4X4,步长为2。G中下采样2倍,D中上采样2倍。

G结构

在这里插入图片描述
在解码器的最后一层之后,使用卷积来映射到输出通道的数量(一般为3个,彩色化除外,为2个),然后接Tanh激活。注意的是编码器的第一个C64没有BN。在编码器中用的都是slope0.2的LeakyReLU,解码器中不是。

然后作者附录又给了U-Net结构,这个到底用的哪个,绕晕了,还是等会看代码吧
在这里插入图片描述

D结构

这部分作者一口气给了4个D,分别是70X70,1X1,16X16,286X286的鉴别器。
1X1的D用的是1X1的卷积核。 所有的D最后一层映射到1维,因为判断True/False嘛,使用sigmoid激活。第一个C64没有BN。用的都是slope0.2的LeakyReLU。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

skip connect

图像到图像转换问题的一个定义特征是,它们将高分辨率的输入网格映射到高分辨率的输出网格。此外,对于我们考虑的问题,输入和输出在表面外观上是不同的,但都是相同底层结构的呈现。因此,输入中的结构与输出中的结构大致一致。我们围绕这些考虑来设计生成器架构。
以前许多解决该领域问题的解决方案[43、55、30、64、59]都使用了编解码器网络[26]。在这样的网络中,输入通过一系列逐步向下采样的层来传递,直到瓶颈层,在瓶颈层,这个过程被逆转。这样的网络要求所有的信息流都要经过所有的层,包括瓶颈。对于许多图像翻译问题,在输入和输出之间存在大量的底层信息共享,最好是将这些信息直接传输到网络上。例如,在图像着色的情况下,输入和输出共享突出边缘的位置。
为了给生成器提供一种方法来绕过这类信息的瓶颈,我们按照U-Net[50]的一般形状添加了跳过连接。具体来说,我们在每一层i和n-i层之间添加跳过连接,其中n是层的总数。每个跳转连接只是将第i层的所有通道与第n-i层的通道连接起来。我们来看看图吧
在这里插入图片描述
#####马尔科夫链的D(PatchGAN)
这里作者说看图说话。L1也会产生模糊效果,但是L1能准确捕捉低频信息,这就足够了。?????

在这里插入图片描述这就促使D只对高频结构进行建模,依赖L1项来强制低频正确性(Eqn. 4)。为了对高频进行建模,将我们的注意力限制在局部图像块中的结构上就足够了。因此,我们设计了一个鉴别器架构,我们称之为patch,它只在patch的规模上惩罚结构。这个鉴别器试图对图像中的每个NXN个patch进行鉴别。我们在图像上卷积运行这个判别器,对所有响应求平均值,从而得到D的最终输出。

在后面,作者证明了N可以比图像的全尺寸小很多,但仍然可以产生高质量的结果。这是有利的,因为较小的PatchGAN参数更少,运行速度更快,可以应用于任意大的图像。

D将图像有效地建模为马尔可夫随机场,假设像素之间的独立距离大于一个patch直径。这种联系之前在[38]中已经探讨过,也是texture模型[17,21]和style模型[16,25,22,37]中常见的假设。因此,我们的PatchGAN可以被理解为一种texture/style损失的形式。

Optimization and inference

这里作者采用的是一次D,一次G。(we alternate between one gradient descent step on D, then one step on G.)。而不是最小化G,替代的是最大化G。(这句话迷糊。。。。。)。此外,在优化D时,我们将目标除以2,这减慢了D相对于G的学习速度。言外之意,优化2次D,优化一次G??(这不就和第一句矛盾了么。。),一些细节用的minisizeSGD,adam,学习率0.0002,momentum parameters 1 = 0.5, 2 = 0.999。

在inference,我们以与训练阶段完全相同的方式运行G网络。这与通常的协议的不同之处在于,我们在测试时也用dropout,并使用测试批的统计数据应用批标准化[29],而不是使用训练批的聚合统计数据。当批大小设置为1时,这种批处理规范化方法被称为实例规范化,并被证明在图像生成任务[54]中是有效的。在我们的实验中,我们根据实验使用的批次大小在1到10之间。

Experiments

为了探索条件GANs的通用性,我们在各种任务和数据集上测试了该方法,包括图形任务(如照片生成)和视觉任务(如语义分割)。
语义标签;建筑标签;卫星图;边缘;素描,白天变黑天;热力图;像素缺失照片。场景很多。如下图:
在这里插入图片描述
放一些失败的案例:
在这里插入图片描述
作者发现即使是在小的数据集上,通常也可以获得不错的结果。我们的facade训练集仅包含400张图像(参见图14中的结果),而从白天到晚上的训练集仅包含91个唯一的网络摄像头(参见图15中的结果)。在这种大小的数据集上,训练可以非常快:例如,图14所示的结果在一个Pascal Titan X GPU上花费了不到两个小时的训练。在测试时,所有的模型运行在这个GPU上都不到一秒。

Evaluation metrics

评价合成图像的质量是一个公开而又困难的问题。传统的度量方法,如perpixel
mean-squared error(像素均方误差)不能评估结果的联合统计,因此也不能衡量结构性损失的真正目的。

为了更全面地评估结果的视觉质量,我们使用了两种策略。首先,我们在Amazon Mechanical Turk (AMT)上进行了真实与虚假的感知研究。对于像彩色化和照片生成这样的图形问题,对人类观察者来说,可信度通常是最终目标。因此,我们使用这种方法测试了地图生成、航空照片生成和图像着色。其次,我们测量合成的城市景观是否足够逼真,使现成的识别系统能够识别其中的对象
总结作者用了AMT perceptual studies和“FCN-score”来评测。

Analysis of the objective function

Eqn. 4中目标的哪些组成部分是重要的?我们进行消融研究,以分离L1项和GAN项的影响,并使用GAN和CGAN进行比较。
图4都是2个标签一个图像输出,可以看出单个L1可以得到合理的图但是模糊。lamda=0时候CGAN提供更清晰的结果。然后结合两者效果最好。
下面让我们看看FCN得分:在这里插入图片描述
这张增减模块实验证明L1+CGAN最好。引用原文的话,添加L1项也会鼓励输出尊重输入,由于L1的损失使得正确匹配输入的ground truth值输出与可能不匹配的合成输出之间的距离减小。。相应地,L1+GAN也可以有效地创建符合输入标签映射的真实渲染。

colorfulness

作者给出假设当生成一个像素不确定什么颜色时,LI会刺激生成平均色灰色。作者这里任务CGAN会刺激生成图像更接近真实颜色分布。作者做了实验如假设一样。L1导致的分布比ground truth更窄,这证实了L1鼓励平均的灰色颜色的假设。另一方面,使用cGAN可以使输出分布更接近实际情况。
在这里插入图片描述紧接着,作者又分析了G的结构
在这里插入图片描述
作者就是想说明主要功劳不是U-NET网络 是L1+CGAN work。

FromPixelGANs to PatchGANs to ImageGANs

作者尝试了改变D的不同patch。从1X1到256X256。先看看结果
在这里插入图片描述
PixelGAN对空间锐度没有影响,但确实增加了结果的色彩(量化在图7中),例如,当网络训练L1损失时,图6中的总bus被绘制成灰色,而PixelGAN损失时,总线被绘制成红色。 颜色直方图匹配是[49]图像处理中的一个常见问题,PixelGANs可能是一个很有前途的轻量级解决方案。

在这里插入图片描述
上表说明70X70的patch效果最好,其他效果不好的原因可能难训练。。等等
PatchGAN的一个优点是,固定大小的patch D可以应用于任意大的图像。
作者又尝试把这种歌patch应用在G的卷积中。就是训练小图测试大图。

perceptual validation/语义分割等等

Conclusion

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

不同task的训练细节可以参考论文6.2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

乘风破浪的炼丹师-Sunfine

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值