深度学习(32)——CycleGAN
文章目录
- 深度学习(32)——CycleGAN
- 1. GAN原理
- 2. CycleGAN
- (1)原理
- (2)核心思想
- (3)优点
- (4)缺点
- (5)应用
前几天被Ly问GAN,所以去学了学,之前只知道大概,现在稍微懂一点
1. GAN原理
一个随机向量经过生成器生成的一个图像作为fake image,然后在训练集上随机挑选一张图片real image,将两张image输入辨别器,让他判断照片是real 或者fake
注
- generator生成的数据是fake,在做loss的时候要保证fake image和real image的数据格式是相同的
- real image是在训练集上随便选择的
- 我们期望generator生成的数据是无限逼近甚至是可以和真实数据相似的
- 生成器是辨别生成数据是假的(生成的)还是真的(训练集本有的),因此是一个二分类模型
- 损失函数很重要,损失函数的定义决定了网络的最终结果
2. CycleGAN
CycleGAN是一种无监督的图像转换模型,它可以在两个不同领域的图像之间进行转换,而无需配对的训练样本。其核心理念是通过两个生成器和两个判别器相互竞争来实现图像的转换
。
(1)原理
- 生成器(Generator):包括一个从域A到域B的生成器G_AB和一个从域B到域A的生成器G_BA。这两个生成器用于学习两个域之间的映射关系,并尝试将输入图像转换为目标域。
- 判别器(Discriminator):包括一个用于区分域A图像和生成器G_BA生成的图像的判别器D_A,以及一个用于区分域B图像和生成器G_AB生成的图像的判别器D_B。这两个判别器用于评估生成图像的真实性。
- 循环一致性损失(Cycle Consistency Loss):为了保持图像转换的一致性,CycleGAN引入了循环一致性损失。即通过将一个生成的图像再次转换回原始域,并计算其与原始图像之间的差异,来确保转换过程中信息的保留。
- 4个网络:generator(G_AB& G_BA),discriminator(D_A& D_B)
- 4个损失:generator,discriminator,cycle,identity
(2)核心思想
通过竞争性训练生成器和判别器,以及引入循环一致性损失,来实现不同域之间的图像转换。通过反复迭代训练过程,生成器可以学习到两个域之间的映射关系,并生成高质量的转换图像。
(3)优点
- 无需配对样本:CycleGAN
不需要配对的训练数据
,因此可以在两个不同领域之间进行转换,而无需手动标记每个图像对
。这使得其适用于许多实际场景,如风格迁移、动漫化等。 - 可学习的映射关系:通过竞争性训练生成器和判别器的过程,CycleGAN能够学习到两个域之间的映射关系,从而实现高质量的图像转换。
(4)缺点
- 训练过程相对复杂:由于要训练两个生成器和两个判别器,以及计算循环一致性损失,CycleGAN的训练过程相对复杂,需要更多的计算资源和时间。
- 生成图像可能存在一些失真:由于CycleGAN是一种无监督方法,它不能保证生成的图像与目标域的图像完全一致,因此生成的图像可能会存在一些失真或偏差。
(5)应用
- 输入数据集:两个不同域的图像数据集,这些数据集中的图像可以代表两个领域的样本。例如,一个数据集可以包含城市景观照片(域A),另一个数据集可以包含油画图片(域B)。
- 输出结果:CycleGAN可以将输入域A的图像转换为目标域B的图像,并将输入域B的图像转换为目标域A的图像。因此,输出结果是经过转换后的图像集合,这些图像可以在两个不同领域之间进行转换。
OK,今天就先这样,下一期上代码,886