在本文中,将构建一个能够执行无配对图像到图像翻译的循环一致对抗网络(CycleGAN),并展示一些既有趣又具有学术深度的例子。将使用Jupyter Notebook作为集成开发环境(IDE),并利用TensorFlow 2.0、NumPy和Matplotlib等库。假设已经熟悉深度学习的概念以及Jupyter Notebooks和TensorFlow的使用。欢迎下载项目代码。
风格迁移是通过图像到图像的翻译技术构建的。这种技术可以将图像从源域A转移到目标域B。具体来说,这意味着可以从一个图像中提取属性并将其应用到另一个图像上。图像到图像的翻译有一些有趣(并且有趣!)的应用,例如风格迁移,它可以将夏天拍摄的照片转换成冬天拍摄的样子,或者反过来:或者让马看起来像斑马。图像到图像的翻译还支持深度伪造,让可以数字化地将一个人的脸部移植到另一个人身上。所以,如果想知道如果由尼古拉斯·凯奇扮演的卢克·天行者会是什么样子,图像到图像的翻译可以帮助找到答案。
图像到图像的翻译最初是在2016年的一篇名为《使用条件对抗网络进行图像到图像的翻译》的文章中提出的。这个过程涉及到像素到像素的翻译,因此被称为pix2pix CGAN。简而言之,一个生成对抗网络(GAN)可以学习将噪声向量z映射到输出图像y:G: z→y。相比之下,pix2pix CGAN可以将输入图像x和噪声向量z映射到另一个图像y:G: x,z→y。下图说明了这个概念。
上图清楚地表明了为什么所讨论的模型是生成性的、有监督的和受控的(或引导的)。模型给出了一个示例输入图像,这个图像不一定呈现一个完整或可理解的图像,以及一个输出图像或真值。学习过程涉及训练CGAN以受控的方式将图像从域A(输入)翻译到B(输出)以及反之。因此,如果决定在训练过程中更改输出示例图像,模型将生成与这里不同的图像。这意味着生成的图像受到真值的引导。
如下图所示,一个生成模型(a)是一个可以生成新数据作为输入到一个判别模型(b)的模型,其作用是区分(或歧视)数据样本。生成对抗网络(GAN)是一种结合了生成和判别模型的神经网络,执行一个单一的任务:生成新的数据样本。近年来,这种类型的处理取得了很大的进展,提高了生成学习网络的性能,并帮助它们生成更好的图像。
如条件生成对抗网络(CGAN)、深度卷积生成对抗网络(DCGAN)、f-GAN和Wasserstein生成对抗网络(WGAN)等网络是原始GAN的更新版本,它们解决了一些限制,如梯度消失、多样性差和训练困难。所有上述模型都很好。然而,在图像到图像翻译的背景下,CGAN更有趣。这是因为CGAN提供了一种引导生成图像的方法,通过引入一个条件变量y到建模中。