Pix2Pix:Image-to-Image Translation with Conditional Adversarial Networks
图像到图像翻译(image-to-image translation)是GAN很重要的一个应用方向,什么叫图像到图像翻译呢?其实就是基于一张输入图像得到想要的输出图像的过程,可以看做是图像和图像之间的一种映射(mapping),我们常见的图像修复、超分辨率其实都是图像到图像翻译的例子。这篇论文列举了一些图像到图像翻译的例子如图Figure1所示,包括从标签到图像的生成、图像边缘到图像的生成等过程。
图像处理的很多问题都是将一张输入的图片转变为一张对应的输出图片,比如灰度图、梯度图、彩色图之间的转换等。通常每一种问题都使用特定的算法(如:使用CNN来解决图像转换问题时,要根据每个问题设定一个特定的loss function 来让CNN去优化,而一般的方法都是训练CNN去缩小输入跟输出的欧氏距离,但这样通常会得到比较模糊的输出)。这些方法的本质其实都是从像素到像素的映射。于是论文在GAN的基础上提出一个通用的方法:pix2pix 来解决这一类问题。通过pix2pix来完成成对的图像转换(Labels to Street Scene, Aerial to Map,Day to Night等),可以得到比较清晰的结果。
pix2pix基于GAN实现图像翻译,更准确地讲是基于cGAN(conditional GAN,也叫条件GAN),因为cGAN可以通过添加条件信息来指导图像生成,因此在图像翻译中就可以将输入图像作为条件,学习从输入图像到输出图像之间的映射,从而得到指定的输出图像。而其他基于GAN来做图像翻译的,因为GAN算法的生成器是基于一个随机噪声生成图像,难以控制输出,因此基本上都是通过其他约束条件来指导图像生成,而不是利用cGAN,这是pix2pix和其他基于GAN做图像翻译的差异。
Related work
图像建模的结构化损失
图像到图像的转换问题通常被表示为按像素分类或回归。从每个输出像素在条件上被认为独立于给定输入图像的所有其他像素来看,这些公式将输出空间视为“非结构化”。相反,有条件的GAN学习到了结构性损失。
Conditional GANs
本文的方法在生成器和判别器的几种结构选择上也不同于先前的工作。与过去的工作不同,对于生成器,本文使用基于“ U-Net”的体系结构,对于判别器,我们使用卷积的“ PatchGAN”分类器,该分类器仅在图像补丁范围内惩罚结构。本文还研究了不同大小的patch size的影响。
对抗框架
Pix2Pix是基于GAN框架,那么首先先定义输入输出。普通的GAN接收的G部分的输入是随机向量,输出是图像;D部分接收的输入是图像(生成的或是真实的),输出是对或者错。这样G和D联手就能输出真实的图像。
对于图像翻译任务来说,pix2pix对传统的GAN做了个小改动,它不再输入随机噪声,而是输入用户给的图片。它的G输入显然应该是一张图 x x x,输出当然也是一张图 y y y。但是D的输入却应该发生一些变化,因为除了要生成真实图像之外,还要保证生成的图像和输入图像是匹配的。于是D的输入就做了一些变动,如下图所示:
训练大致过程如上图所示。图片 x x x作为此CGAN的条件,需要输入到G和D中。G的输入是 x , z {x,z}