深度学习【47】Unsupervised Image-to-Image Translation with Generative Adversarial Networks

我们之前介绍了pix2pix和pix2pixHD都是属于有监督的图片到图片的转换,也就是其训练数据集要求每一张待转换图片必须有一张目标转换图像相对应。

今天我们来看看如何利用GAN做无监督的图像到图像的转换。既然是无监督的图像到图像转换,那么在训练数据集中肯定是没有成对的数据了。比如性别的转换,假设我有张奥巴马的图片,那么肯定不能找到一张女的奥巴马图片吧吧。所以这就叫无监督。还是以性别转换为例,我们还是有可用信息的,那就是图片的标签信息。这篇论文就是利用图片的标签信息,来达到某一类别的图片转成另一类别的图片的目的。

我们直接看看论文给的模型图:
深度学习【47】Unsupervised Image-to-Image Translation with Generative Adversarial Networks_第1张图片

训练过程分两步,先训练一个GAN网络;然后固定G网络,训练一个Encoder网络。接着就可以用训练好的Encoder网络和G网络进行转换了。

训练GAN

该GAN的目标函数为:
深度学习【47】Unsupervised Image-to-Image Translation with Generative Adversarial Networks_第2张图片
其中s表示图片为真实图片的分数,c表示类别, Xreal 为真实图片, Xfake 为G网络生成的图片。其实跟原始的GAN损失函数差不多。就是D网络和G网络分别多了一个分类损失函数 log(P(c|Xreal)) log(P(c|xfake))

由于加入类别信息,输入G网络的随机向量z就有了类似word2vec的语义信息作用,就能作为G网络生成的图片的特征向量。这部分可以参考DCGAN的内容。

另外,类别信息是以embedding的形式作为G网络的输入的。

训练Encoder网络

这边的Encoder网络的输出不是图片,而是训练GAN时的随机向量Z。训练encoder的整个模型在上图的中间可以看到。模型是由训练好的G网络加上要训练的encoder网络构成的。G网络的输入还是类别信息和随机向量Z,encoder的输入是G网络生产的图片,输出是特征向量 Z (为了和G网络的输入向量Z区分开)。encoder网络的目的是重构出G网络的输入向量Z。这样就能在给定一张图片的时候抽取出其特征向量,并且该特征向量所表示的语义信息能够和GAN输入的Z向量所表达的语义信息是一样的。

转换

训练好了Encoder网络和G网络后,给定一张待转换图片(比如男人的图片)经过Encoder网络提取出编码特征Z,然后将Z和想要转换的目标标签(女人的标签)一起输入到G网络中就可以生成目标转换图片(生产女人的图片)

实验结果

性别转换
深度学习【47】Unsupervised Image-to-Image Translation with Generative Adversarial Networks_第3张图片

两个人之间的转换
深度学习【47】Unsupervised Image-to-Image Translation with Generative Adversarial Networks_第4张图片

你可能感兴趣的:(深度学习)