目录
介绍
图像到图像的转换
生成对抗学习
我们系列中的CycleGAN
下一步
- 下载项目代码 - 7.2 MB
在本系列文章中,我们将展示一个基于循环一致对抗网络(CycleGAN)的移动图像到图像转换系统。我们将构建一个CycleGAN,它可以执行不成对的图像到图像的转换,并向您展示一些有趣但具有学术深度的示例。
在这个项目中,我们将使用:
- Jupyter Notebook作为IDE
- 库:
- TensorFlow 2.0
- NumPy
- 绘图库
- 可下载的公共CycleGAN数据集
我们假设您熟悉深度学习的概念以及Jupyter Notebooks和TensorFlow。欢迎下载项目代码。
图像到图像的转换风格转换是使用图像到图像的转换构建的。这种技术将图像从源域A传输到目标域B。这究竟是什么意思?简而言之,图像到图像的转换让我们从一个图像中获取属性并将它们应用到另一个图像。
图像到图像的转换有一些有趣(也很有趣!)的应用,例如风格转换可以从夏天拍摄的照片开始,让它看起来像是冬天拍摄的,反之亦然:
或者让马看起来像斑马:
图像到图像的转换还支持深度伪造,让您可以将一个人的脸以数字方式移植到另一个人身上。因此,如果您曾经想知道如果卢克·天行者由尼古拉斯·凯奇扮演会是什么样子,图像到图像的转换可以帮助您找到它。
图像到图像的转换最早是在2016年在一篇题为Image-to-Image Translation with Conditional Adversarial Networks的文章中提出的。这个过程涉及像素到像素的转换,因此被称为pix2pix CGAN。
简而言之,GAN可以学习将噪声向量z映射到输出图像y:
G:z→y
相比之下,pix2pix CGAN可以将输入图像x和噪声向量z映射到另一个图像y:
G: x,z→y
下图说明了这个概念。
上图清楚地说明了为什么所讨论的模型是生成式、监督式和控制式(或引导式)。该模型给出了一个示例输入图像,该图像不一定呈现完整或可理解的图像,以及输出图像或真是情况。
学习过程包括训练CGAN以受控方式将图像从域A(输入)转换为域B(输出),反之亦然。因此,如果您决定在训练期间更改输出示例图像,您的模型将生成与此处不同的图像。这意味着生成的图像是由地面实况引导的。
生成对抗学习如下图所示,生成模型(a)是可以生成新数据作为输入给判别模型(b)的模型,判别模型(b)的作用是区分(或区分)数据样本。
一个生成对抗网络(GAN)是一种组合的生成和判别模型进行一个单任务神经网络:生成新的数据样本。近年来,这种类型的处理取得了很大进展,提高了生成学习网络的性能并帮助它们生成了更好的图像。
网络如条件剖成对抗性网络(CGAN) ,深卷积剖成对抗性网络(DCGAN) ,F-GAN和瓦瑟斯坦剖成对抗式网络(WGAN)更新原来的GAN,出来有一定的局限性,如消失梯度的版本,多样性差,训练困难。
以上所有模型都很好。然而,CGAN在图像到图像转换的上下文中更有趣。这是因为CGAN提供了一种通过在建模中引入条件变量y来引导生成图像的方法。
我们系列中的CycleGAN使用pix2pix CGAN的图像到图像转换使用像素到像素映射将图像从一个域映射到另一个域,这意味着配对图像应该可用于每个图像样本。然而,训练图像对并不总是可用的,这使得任务变得困难。这促使研究人员提出一种新的基于GAN的网络,该网络提供不成对的图像到图像的转换。
这个网络于2017年提出,它被称为使用循环一致对抗网络(CycleGAN)的未配对图像到图像转换。该网络提出了一种将图像从域X映射到域Y的新方法,无需配对图像示例。因此,使用此网络,您可以将猫转换为狗,将男性面孔转换为女性面孔,等等。
这种方法激发了人们开发非常有趣和娱乐性的应用程序,例如季节转换、风格转换、性别到性别的转换、FaceApp的面部交换,以及最新的DeepNostalgia的死者照片动画。我们将在我们的系列中使用未配对的图像方法。
在接下来的文章中,我们将讨论CycleGAN架构,并解释每个体系结构组件是如何实现的。
https://www.codeproject.com/Articles/5304919/Mobile-Style-Transfer-With-Image-to-Image-Translat