cycleGAN:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

不使用成对图片,通过两对 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)\begin{aligned}\mathcal{L}(G,F,D_X,D_Y)=&\mathcal{L}_{\mathrm{GAN}}(G,D_Y,X,Y)\\+&\mathcal{L}_{\mathrm{GAN}}(F,D_X,Y,X)\\+&\lambda\mathcal{L}_{\mathrm{cyc}}(G,F)\end{aligned}

  • GAN Loss:即图 (a) 所示损失,包括两个方向的 GAN 损

LGAN(G,DY,X,Y)=Eypdata(y)[logDY(y)]+Expdata(x)[log(1DY(G(x))]\begin{gathered}\mathcal{L}_{\mathrm{GAN}}(G,D_{Y},X,Y) =\mathbb{E}_{y\sim p_{\mathsf{data}}(y)}[\log D_{Y}(y)]+\mathbb{E}_{x\sim p_{\mathrm{data}}(x)}[\log(1-D_{Y}(G(x))]\end{gathered}

  • Cycle Consistency Loss:即图 (b), © 所示, GAN 只可以保证生成器生成的样本与真实样本同分布,但是我们希望对应的域之间的图像是一一对应的。即 A-B-A 还可以再迁移回

xG(x)F(G(x))xyF(y)G(F(y))yL(G,F)=Expdata(x)[F(G(x))x]+Eypdata(y)[F(G(y))y]\begin{aligned}x\to G\left(x\right)\to F\left(G\left(x\right)\right)\approx x\\y\to F\left(y\right)\to G\left(F\left(y\right)\right)\approx y \\ L\left(G,F\right)=E_{x\sim p_{data}}\left(x\right)\left[\left|\left|\left|F\left(G\left(x\right)\right)-x\right|\right|\right]+E_{y\sim p_{data}\left(y\right)}\left[\left|\left|F\left(G\left(y\right)\right)-y\right|\right|\right]\right. \end{aligned}

参考: