主要内容

开始使用GANs进行图像到图像的翻译

图像域是一组具有相似特征的图像。例如,图像域可以是在特定光照条件下获得的一组图像,也可以是具有一组共同噪声失真的图像。

图像间的翻译是将风格和特征从一个图像域转换到另一个图像域的任务。源域是起始图像的域。目标域是经过平移后的期望域。三个样本图像域的域翻译应用包括:

应用程序 源领域 目标领域
Day-to-dusk风格转换 白天拍摄的图像 黄昏时拍摄的影像
图像去噪 有噪声失真的图像 无可见噪声的图像
超分辨率 低分辨率图像 高分辨率的图像

选择一个甘

您可以使用深度学习生成对抗网络(GANs)执行图像到图像的翻译。GAN由一个生成器网络和一个或多个同时训练的鉴别器网络组成,以最大化整体性能。生成网络的目标是在翻译后的域中生成与原域中无法区分的真实图像。鉴别器网络的目标是正确地将原始训练数据分类为真实的,将生成器合成的图像分类为假的。

GAN的类型取决于训练数据。

  • 监督gan在源域和目标域的映像之间具有一对一的映射关系。示例请参见利用深度学习从分割图中生成图像(计算机视觉工具箱).在本例中,源域由捕获的街景图像组成。目标域由表示语义分割映射的分类图像组成。该数据集为每个输入训练图像提供一个地面真值分割图。

  • 无监督gan在源域和目标域中的映像之间没有一对一的映射关系。示例请参见使用UNIT进行无监督的从黄昏到黄昏的图像翻译.在本例中,源和目标域分别由在白天和黄昏条件下捕获的图像组成。但是白天和黄昏图像的场景内容不同,所以白天图像没有对应的黄昏图像,且场景内容相同。

甘创建网络

图像处理工具箱™提供的功能,使您能够创建流行的GAN网络。您可以通过更改下采样操作的数量和激活和规范化类型等属性来随意修改网络。该表描述了创建和修改GAN网络的功能。

网络 创建和修改功能
pix2pixHD发电机网络[1]

pix2pixHD GAN执行监督学习。该网络由单个发生器和单个鉴别器组成。

创建一个pix2pixHD生成器网络使用pix2pixHDGlobalGenerator.向pix2pixHD网络添加本地增强器addPix2PixHDLocalEnhancer函数。

CycleGAN发电机网络[4]

CycleGAN网络执行无监督学习。该网络由两个发生器和两个鉴别器组成。第一个生成器从域中获取图像一个并在域中生成图像B.相应的鉴别器取第一个生成器生成的图像和域中的真实图像B,并试图正确地将图像分为真假。相反,第二个生成器从域中获取图像B并在域中生成图像一个.相应的鉴别器取第二生成器生成的图像和域中的真实图像一个,并试图正确地将图像区分为假的和真实的。

创建一个CycleGAN生成器网络cycleGANGenerator函数。

单位发电机网络[4]

无监督图像间翻译(UNIT) GAN执行无监督学习。该网络由一个发生器和两个鉴别器组成。生成器在两个域都拍摄图像,一个而且B.生成器返回四个输出图像:两个经过翻译的图像(一个- - - - - - - - -B而且B- - - - - - - - -一个)和两张自我重建图像(一个- - - - - - - - -一个而且B- - - - - - - - -B).第一个鉴别器从域中取一个实像和一个生成的像一个并返回图像是实数的可能性。类似地,第二个鉴别器从域中取一个实像和一个生成的像B并返回图像是实数的可能性。

方法创建UNIT生成器网络unitGenerator函数。在经过训练的UNIT网络上执行图像到图像的转换unitPredict函数。

PatchGAN鉴别器网络[3]

PatchGAN鉴别器网络可以作为pix2pixHD、CycleGAN和UNIT gan以及自定义gan的鉴别器网络。

创建一个PatchGAN鉴别器网络patchGANDiscriminator函数。鉴别器在补丁级别决定图像是真还是假。通过对补丁而不是像素进行操作,PatchGAN关注的是输入的一般样式,而不是特定的内容。

你也可以使用patchGANDiscriminator函数创建像素鉴别器网络。该网络是补丁大小为单像素的PatchGAN鉴别器网络。

有些网络需要在网络创建功能中提供的选项之外进行额外的修改。例如,您可能希望用深度连接层替换添加层,或者您可能希望单元网络的初始泄漏ReLU层的比例因子不是0.2。要改进现有的GAN网络,您可以使用深层网络设计师(深度学习工具箱).有关更多信息,请参见用深度网络设计器构建网络(深度学习工具箱)

如果您需要一个无法通过内置创建功能获得的网络,那么您可以从模块化组件创建自定义GAN网络。首先,创建编码器和解码器模块,然后使用encoderDecoderNetwork函数。您可以选择在网络末端包含网桥连接、跳过连接或其他层。有关更多信息,请参见创建模块化神经网络

火车GAN网络

要训练GAN发生器和鉴别器网络,必须使用自定义训练循环。准备定制训练循环涉及几个步骤。有关显示完整工作流的示例,请参见训练生成对抗网络(GAN)(深度学习工具箱)

  • 创建生成器和鉴别器网络。

  • 创建一个或多个数据存储,用于读取、预处理和增加培训数据。有关更多信息,请参见用于深度学习的数据存储(深度学习工具箱).然后,创建一个minibatchqueue(深度学习工具箱)对象,用于管理自定义训练循环中观察结果的小批处理。

  • 定义每个网络的模型梯度函数。该函数以网络和小批输入数据作为输入,并返回损失的梯度。您可以选择将额外的参数传递给梯度函数(例如,如果丢失函数需要额外的信息),或者返回额外的参数(例如,丢失值)。有关更多信息,请参见定义自定义训练循环的模型损失函数(深度学习工具箱)

  • 定义损失函数。某些类型的损失函数通常用于图像到图像的翻译应用程序,尽管每种损失的实现可能不同。

    • 对抗性损失通常用于发生器和鉴别器网络。这种损失依赖于正确分类与鉴别器预测分类之间的像素或补丁差异。

    • 循环一致性损失在无监督发电机网络中普遍使用。这种损失是基于这样一个原理,即图像从一个域转换到另一个域,然后再返回到原始域,应该与原始图像相同。

  • 指定训练选项,例如求解器类型和周期数。有关更多信息,请参见在自定义训练循环中指定训练选项(深度学习工具箱)

  • 创建自定义训练循环,在每个epoch中循环小批量。循环读取每个小批数据,使用dlfeval(深度学习工具箱)函数,更新网络参数。

    可选的,包括显示功能,如评分图或生成的图像批次,使您能够监视训练进度。有关更多信息,请参见监控GAN培训进度,识别常见故障模式(深度学习工具箱)

参考文献

[1]王廷春,刘明宇,朱俊燕,陶安卓,简·考茨,布莱恩·卡坦扎罗。基于条件gan的高分辨率图像合成和语义操作。在2018 IEEE/CVF计算机视觉和模式识别会议, 8798 - 8807。盐湖城,UT,美国:IEEE, 2018。https://doi.org/10.1109/CVPR.2018.00917

[2]朱俊燕,朴taesung Park, Phillip Isola, Alexei A. Efros。使用周期一致对抗网络的未配对图像对图像翻译。在2017 IEEE计算机视觉国际会议(ICCV), 2242 - 2251。威尼斯:IEEE 2017。https://ieeexplore.ieee.org/document/8237506

[3]朱俊燕,周廷辉,朱俊燕。基于条件对抗网络的图像间翻译。在2017年IEEE计算机视觉与模式识别会议, 5967 - 76。檀香山,HI: IEEE, 2017。https://arxiv.org/abs/1611.07004

[4]刘明宇,Thomas Breuel, Jan Kautz。“无监督图像对图像翻译网络。”神经信息处理系统进展30 (NIPS 2017).加利福尼亚州长滩:2017。https://arxiv.org/abs/1703.00848

另请参阅

||||||

相关的例子

更多关于

Baidu
map