论文阅读——《Image-to-Image Translation with Conditional Adversarial Networks》

论文阅读之 Image-to-Image Translation with Conditional Adversarial Networks

Introduction

这篇论文主要讲了如何将conditional GANs运用到Image-to-Image任务中,并且讲了如何设计网络来取得很好的效果。

这篇文章的main contributions主要有两点:

  • 对于各种不同的问题(论文指的应该是Image-to-Image任务)conditional GANs都能给出比较好的结果;
  • 论文提出了一种简单的网络框架能够得到比较好的结果,同时论文中分析了几种结构的影响。

Related work

Structured losses for image modeling
Image-to-Image转换问题常常被当作是逐像素的分类或者是回归问题,而这些构想的输出往往没有将结构考虑在内,输出的像素被当做是与输入图片的其他像素条件无关的。但是GAN却能学习到结构损失(structures loss)。
Conditional GANs
作者在这篇论文中使用了Conditional GANs,但是在结构上与之前的工作不同。在生成器中作者使用了“U-Net”-based的结构,在判别器中使用了convolutional “PatchGAN”分类器,这种分类器只是惩罚images patches范围内的结构损失。

Method

Objective:

conditional GAN的优化目标可以用以下式子表达:
L c G A N ( G , D ) = E x , y [ log ( D ( x , y ) ) ] + E x , z [ log ( 1 D ( x , G ( x , z ) ) ) ] \mathcal{L}_{cGAN}(G,D)=\mathbb{E}_{x,y}[\log(D(x,y))]+\mathbb{E}_{x,z}[\log{(1-D(x,G(x,z)))}]
为了验证条件对于判别器的重要性,作者也设计了判别器没有使用的条件的优化目标:
L c G A N ( G , D ) = E y [ log ( D ( y ) ) ] + E x , z [ log ( 1 D ( G ( x , z ) ) ) ] \mathcal{L}_{cGAN}(G,D)=\mathbb{E}_{y}[\log(D(y))]+\mathbb{E}_{x,z}[\log{(1-D(G(x,z)))}]
有之前的研究表明将GAN的优化目标和一些更加传统的优化目标(如L2距离)混在一起是有好处的。这样判别器的任务没有改变,但是生成器不仅要骗过判别器,二而且要让输出图形与真实图像的L2距离尽可能的接近。在论文中作者使用的是L1距离而不是L2距离,因为使用L1距离能让生成的图像更清晰:
L L 1 ( G ) = E x , y , z [ y G ( x , z ) ] \mathcal{L}_{L1}(G)=\mathbb{E}_{x,y,z}[||y-G(x,z)||]
因此最终的优化目标为:
G = arg min G max D L c G A N ( G , D ) + λ L L 1 ( G ) G^*=\arg\min_G\max_D\mathcal{L}_{cGAN}(G,D)+\lambda\mathcal{L}_{L1}(G)

没有 z z ,网络仍然可以学习到从 x x y y 的映射,但会产生确定性的输出,因此无法匹配 δ \delta 函数以外的任何分布。之前的conditional GAN已经意识到了这一点,所以除了 x x 还提供了高斯噪声 z z 作为生成器的输入。在最初的实验中作者发现这种策略并不是很有效。因此,作者在在最终的模型中通过Dropout的形式来提供噪声,Dropout在训练和测试的时候都被应用到了生成器的某些层中。尽管添加了Dropout噪声,作者发现他们的网络的输出还是只有很小的随机性。

Network architecture

Generator with skips
很多之前的image-to-image任务使用的大都是encoder-decoder这种形式的网络。这种网络都是输入经过一系列的下采样,直到到达一个bottleneck层,然后再经过一些列的上采样,最终得到输出图像。但是这样的网络要求得到的所有信息都通过所有的层,这样就会导致得到的信息丢失了低层的一些信息,比如边界的位置等。而这些信息在image-to-image任务中试很重要的。

为了找到一种为生成器提供丢失信息的方法,作者添加了skip connection,并将这种网络称为“U-Net”。具体的实现是作者在第 i i 层和第 n i n-i 层之间添加了skip connection, n n 是网络层数的总和。每个skip connection就是简单把第 i i 层和第 n i n-i 层在channel方向上连接起来。
在这里插入图片描述
Markovian discriminator (PatchGAN)
除了在判别器里添加了L1限制,作者还设计了一种称为patchGAN的判别器结构。这种结构只惩罚patch范围内的结构。patchGAN的判别器尝试去分辨一张图片中每个 N N N*N patch是真的还是假的。

Experiments

作者在实验中测试了各种方法的效果,包括添加L1损失与不添加L1损失,使用“U-Net”结构和不使用“U-Net”结构,使用不同数量的patch。这部分就不详述了。

发布了11 篇原创文章 · 获赞 7 · 访问量 8930

猜你喜欢

转载自blog.csdn.net/zh20166666/article/details/83651519