【论文笔记】pix2pix Image-to-Image Translation with Conditional Adversarial Networks

原文链接:https://phillipi.github.io/pix2pix/

1.工作概述

本文研究了条件对抗网络作为图像到图像风格迁移问题的通用解决方案。这些网络不仅学习从输入图像到输出图像的映射,而且学习一个损失函数来训练这种映射。这就意味着,我们可以给出一种通用的解决方案来处理那些需要不同的“损失函数”的场景。因此我们的主要贡献分成两部分:第一是证明了cGAN对风格迁移的通用性,第二是提出了一款框架去实现良好的结果。

2.项目背景

一张图片有很多种表示方式,例如:RGB、梯度场、边缘图、语义标签地图等。

GAN的目标:让我们生成的图像以假乱真(最小化损失函数),同时自动学习损失函数。

3.相关工作

结构化损失:我们将图像匹配视为“非结构化”的任务,因为像素间彼此独立,而cGAN企图处理的是结构化的损失,所以就可以用它来惩罚图像匹配任务中的“结构化”部分。

cGAN:以往有人使用cGAN,也有人用无条件的GAN并附加其它约束项(例如L2范数)去强迫输入成为输出的条件。

4.模型结构

4.1判别器

使用了PatchGAN,在Patch尺度上惩罚结构,并验证了改变补丁大小对于模型结构的影响。L1损失项可以确保低频的准确性,但会带来高频的模糊,因此判别器主要负责保证高频的准确性,这就需要我们去关注图像中的局部结构,因此我们提出了“只会在局部结构中施加惩罚项”的PatchGAN。该鉴别器试图对图像中的每个N × N块进行分类,对每一个块输出一个惩罚项。我们在整个图像上运行这个鉴别器,平均所有响应,以提供判别器的最终输出。

4.2生成器

采用基于UNet的结构。让一些“输入与输出共享的”底层信息无需通过瓶颈层,而是直接从输入到输出。

5.方法

5.1提示

GAN与cGAN的区别:GAN是根据随机生成的噪声z去生成想要的图片y;cGAN是根据已有的图片x和噪声z去生成想要的图片y。

5.2损失函数

cGAN的主损失函数如下所示,注意判别器D算子的括号中之所以有x这一项都是因为这是“条件”对抗网络:
在这里插入图片描述
作为对比实验,作者试图让判别器看不到真实的输入x,这样就形成了在“非条件”对抗网络下的损失函数。
在这里插入图片描述
为了能够减少模糊,我们在损失函数中还添加了额外的一项L1正则化,利用这一项对生成器添加一项限制。

在这里插入图片描述

5.3噪声的必要性

如果没有噪声z,就只能拟合delta函数。但加入了z,也不一定有用。因此作者在训练和测试阶段都加入了dropout形式的噪声,却没有观察到较高随机性的输出,这也是有待解决的一个问题。

6.评价测度

传统的逐像素方差不能获取像素彼此之间的联合统计量,因此不能够获取一些结构化的损失。

6.1真假感知研究

每一个风格转换实验,都让50个人去甄别谁是ground truth谁是生成的图像(这每个实验都是不同的50个人),当然事先会给予10个图片用于练习,后面的40个图片用于测试。

6.2FCN分数

这个衡量标准使用的思想就是,如果你生成的图片足够好,那么我用你生成的图片进行分类,产生的效果应该和“对真实图片进行分类”的效果是一样的。因此,使用FCN-8s结构进行语义分割,在城市数据集上进行训练,之后对生成的图片进行分割,分割的精度就被用于评估生成图像的质量。

7.对于损失函数的实验结果分析

7.1消融实验1:验证损失函数里cGAN和L1项的重要性。

经实验,只有L1会产生模糊的结果,只有cGAN会产生本不存在的物体,二者相结合会提升实验效果。
而在色彩方面,如果使用L1,那么为了减小L1损失值,模型会选择颜色分布的中值,也就是灰色;如果使用cGAN,那么输出的颜色分布将更接近真值。

7.1消融实验2:验证cGAN相对于GAN的优越性。

经试验,cGAN效果还是要强于GAN,因为GAN只考虑输出图像是否真实,而不考虑在输入x的条件下是否真实,而衡量输入图像和输出图像之间的损失是很重要的。其实L1也可以对输入和输出进行限制,只不过效果略低于cGAN。

8.对于生成器结构的实验结果分析

不论是在在损失函数采用L1的情况下,还是在损失函数采用L1+cGAN的情况下,使用U-Net的结果总是要比使用Encoder-Decoder要好得多,定性上看,图片更为清晰,而定量上看,FCN分数更高。

9.对于不同Patch的实验结果分析

从FCN分数来看,7070的patch大小是最好的。
生成器的输出会有不确定性,对于不同的损失函数,这种不确定性会表现成不同的形式,比如在L1损失函数下,这种不确定性会表现得十分模糊。1
1的Patch有助于颜色多样,但并不会导致图片变清晰,也不会改变空间统计特性;1661的Patch有助于提升清晰度,不过会导致平铺显示;7070则会减弱平铺效应,并进一步提升清晰度;286*286的Patch需要训练更多的参数,FCN分数不增反降。

10.感知实验结果分析

在地图和卫星图的风格转换任务中,通过对比L1和L1+cGAN的结果,我们发现后者欺骗了更多的受试者。
在色彩风格转换实验中,也是同样的结论。
综上所述,我们发现cGAN特别适合对那些“细节很丰富”的图片进行风格转换。

11.语义分割实验

语义分割不需要那么多细节。cGAN虽然能生成很清晰的图像,但会生成很多本不存在的物体,因此效果不一定比L1损失函数好。不过这是第一次利用GAN生成标签。

猜你喜欢

转载自blog.csdn.net/Michael_Cretu_/article/details/123347156