图像域是一组具有相似特征的图像。例如,图像域可以是在特定光照条件下获得的一组图像,或者具有一组常见的噪声畸变的图像。
图像到图像的转换是将风格和特征从一个图像域转移到另一个图像域的任务。源域是起始图像的域。目标域是翻译后需要的域。域平移在三个样本图像域的应用包括:
应用程序 | 源领域 | 目标领域 |
---|---|---|
Day-to-dusk风格转换 | 白天获取的图像 | 黄昏时获取的图像 |
图像去噪 | 带有噪声失真的图像 | 无可见噪声图像 |
超分辨率 | 低分辨率图像 | 高分辨率的图像 |
您可以使用深度学习生成对抗网络(GANs)执行图像到图像的转换。GAN由一个生成器网络和一个或多个鉴别器网络组成,这些鉴别器网络被同时训练以最大化整体性能。生成网络的目的是生成翻译域中的真实图像,不能与原始域中的图像区分开来。鉴别器网络的目标是正确地将原始训练数据分类为真实图像,将生成合成图像分类为虚假图像。
GAN的类型取决于训练数据。
监督gan在源域和目标域的图像之间有一个一对一的映射。例如,请参见利用深度学习从分割地图生成图像(计算机视觉工具箱).在本例中,源域由街景捕获的图像组成。目标域由表示语义分割图的分类图像组成。该数据集为每个输入训练图像提供一个地面真值分割图。
无监督gan在源域和目标域的图像之间没有一对一的映射。例如,请参见无监督的日黄昏图像翻译使用单位.在本例中,源域和目标域分别由在白天和黄昏条件下捕获的图像组成。但是白天和黄昏图像的场景内容不同,所以白天图像没有相应的黄昏图像具有相同的场景内容。
图像处理工具箱™提供的功能,使您能够创建流行的GAN网络。您可以通过更改属性(如降采样操作的数量、激活和归一化的类型)来修改网络。该表描述了创建和修改GAN网络的功能。
网络 | 创建和修改功能 |
---|---|
pix2pixHD发电机网络[1] | pix2pixHD GAN执行监督学习。该网络由单个发生器和单个鉴别器组成。 创建一个pix2pixHD生成器网络使用 |
CycleGAN发电机网络[4] | CycleGAN网络执行无监督学习。该网络由两个发生器和两个鉴别器组成。第一个生成器从域获取图像一个并在域中生成图像B.对应的鉴别器取第一个生成器生成的图像和域中的真实图像B,并试图正确地将图像分为真实和虚假。相反,第二个生成器从域获取图像B并在域中生成图像一个.对应的鉴别器分别取第二生成器生成的图像和域中的真实图像一个,并试图正确地将图像分为真伪。 创建CycleGAN发电机网络使用 |
单位发电机网络[4] | 无监督图像到图像转换(UNIT) GAN执行无监督学习。该网络由一个发生器和两个鉴别器组成。生成器在两个域都取图像,一个和B.生成器返回四个输出图像:两个翻译后的图像(一个- - - - - - - - -B和B- - - - - - - - -一个),以及两幅自我重建的图像(一个- - - - - - - - -一个和B- - - - - - - - -B).第一个鉴别器取实图像和从域生成的图像一个并返回图像是真实的可能性。类似地,第二个鉴别器从域取实数和生成的图像B并返回图像是真实的可能性。 创建一个单元发电机网络使用 |
PatchGAN鉴别器网络[3] | PatchGAN识别器网络可以作为pix2pixHD、cyclclegan、UNIT gan以及自定义gan的识别器网络。 创建PatchGAN鉴别器网络使用 你也可以用the |
一些网络需要额外的修改,超出了网络创建功能中可用的选项。例如,您可能想要用深度连接层替换附加层,或者您可能想要UNIT网络的初始泄漏ReLU层的比例系数不是0.2。要完善现有的GAN网络,您可以使用深层网络设计师(深度学习工具箱).有关更多信息,请参见用深度网络设计器构建网络(深度学习工具箱).
如果您需要的网络不能通过内置的创建功能使用,那么您可以从模块化组件创建自定义的GAN网络。首先,创建编码器和解码器模块,然后使用encoderDecoderNetwork
函数。您可以选择包括网桥连接、跳过连接或网络末端的附加层。有关更多信息,请参见创建模块化神经网络.
要训练GAN生成器和鉴别器网络,必须使用自定义的训练循环。准备一个定制的训练循环有几个步骤。有关显示完整工作流的示例,请参见训练生成对抗网络(GAN)(深度学习工具箱).
创建生成器和鉴别器网络。
创建一个或多个数据存储,用于读取、预处理和扩充训练数据。有关更多信息,请参见用于深度学习的数据存储(深度学习工具箱).然后,创建一个minibatchqueue
(深度学习工具箱)对象,该数据存储在自定义训练循环中管理观察的小批处理。
为每个网络定义模型梯度函数。该函数以网络和一小批输入数据作为输入,并返回损失的梯度。您可以选择向gradient函数传递额外的参数(例如,如果loss函数需要额外的信息),或者返回额外的参数(例如,loss值)。有关更多信息,请参见为自定义训练循环定义模型梯度函数(深度学习工具箱).
定义损失函数。某些类型的损耗函数通常用于图像到图像的转换应用程序,尽管每种损耗的实现可能有所不同。
对抗性损耗是生成器和鉴别器网络中常用的一种。这种损失依赖于鉴别器的正确分类和预测分类之间的像素或斑块差异。
周期一致性损失是无监督发电机网络中普遍存在的问题。这种损失是基于这样的原理:图像从一个域转换到另一个域,然后再返回到原始域,应该与原始图像相同。
指定训练选项,如求解器类型和纪元的数量。有关更多信息,请参见在自定义训练循环中指定训练选项(深度学习工具箱).
创建自定义训练循环,循环在每个时代的小批量。方法读取每个小批数据,计算模型梯度dlfeval
(深度学习工具箱)命令,更新网络参数。
可选地,包括显示功能,如分数图或生成的图像批次,使您能够监视训练进度。有关更多信息,请参见监控GAN培训进度,识别常见故障模式(深度学习工具箱).
[1]
[2]
[3]
[4]
encoderDecoderNetwork
|blockedNetwork
|pretrainedEncoderNetwork
|cycleGANGenerator
|patchGANDiscriminator
|pix2pixHDGlobalGenerator
|unitGenerator