不使用成对图片,通过两对 GAN 完成两个域的图片转换
图 A + 图 B-> 实现 A->B 或者 B->A,图生图
什么是 cycleGAN ?
- 使用两对 GAN 完成两个域的图片转换,不像 pixel2pixel 一样需要提供成对的图像
- 上图 G、F 是两个生成器,Dx,Dy 是两个判别器,训练数据流程是 x->G (x)=y’->F (y’)=x’,y->F (y)=x’->G (x’)=y’,通过比较 x 与 x’,y 与 y’计算损失,判别器判定 G、F 生成器的真假
cycleGAN 的损失函数?
- 模型包括:2 个生成器,2 个判别器,损失包括监督生成器、判别器的 GAN 损失,保持两个域风格变换一致的损
L(G,F,DX,DY)=++LGAN(G,DY,X,Y)LGAN(F,DX,Y,X)λLcyc(G,F)
- GAN Loss:即图 (a) 所示损失,包括两个方向的 GAN 损
LGAN(G,DY,X,Y)=Ey∼pdata(y)[logDY(y)]+Ex∼pdata(x)[log(1−DY(G(x))]
- Cycle Consistency Loss:即图 (b), © 所示, GAN 只可以保证生成器生成的样本与真实样本同分布,但是我们希望对应的域之间的图像是一一对应的。即 A-B-A 还可以再迁移回
x→G(x)→F(G(x))≈xy→F(y)→G(F(y))≈yL(G,F)=Ex∼pdata(x)[∣∣∣F(G(x))−x∣∣]+Ey∼pdata(y)[∣∣F(G(y))−y∣∣]
参考: