Abstract

CycleGAN 是Berkeley AI Research (BAIR) laboratory, UC Berkeley发表在ICCV2017上的工作, 传统的GAN都是单向的, 论文首先提出了GAN inverse 构建功能, 即将生成的假图, 重建回原图的风格.

Contents

[论文笔记 GAN] 2017 ICCV CycleGAN阅读
之前的工作考虑的都是在训练集中, 训练样本和label中的物体都是匹配好的, 但是在真实生活中, 这样标记好的数据是很少的, 所以作者考虑的是unpaired数据, 让GAN可以实现图像从源域到目标域的转换.

[论文笔记 GAN] 2017 ICCV CycleGAN阅读
文章中的网络流程图如上所示, 首先是输入inputs, 通过G(Generate) 生成Y(Fake images), 通过DYD_Y来判别生成图像的真假; 所以这有一个Discrimitor loss, 用来评估生成图像的好坏.
紧接着, 将生成图像采用F(Generate) 还原成X; 这里使用一个cycle-consistency loss来评估重建的效果;

可以用一张网络上的图, 将这样一个流程表示的更佳清楚;
正向过程:
[论文笔记 GAN] 2017 ICCV CycleGAN阅读
反向过程:
[论文笔记 GAN] 2017 ICCV CycleGAN阅读
CycleGAn其实就是A-> B一个生成器一个判别器 再加一个生成loss,一个判别loss;
B-> A 也是一个生成器一个判别器, 再加上一个生成loss, 一个判别loss;

那么理解了这个原理以后,剩下的问题是怎么设计loss函数;

  • 判别器的Loss
    判别器判别生成的图片跟目标域的图片是否真实?
    所以作者简单才用了而二分类的交叉熵损失函数:
    LGAN(GAB,DB,A,B)=EbB[logDB(b)]+EaA[log(1DB(GAB(a)))] LGAN(G_{AB},D_B,A,B)=E_{b∼B}[logD_B(b)]+E_{a∼A}[log(1−D_B(G_{AB}(a)))]
  • 生成的Loss
    生成器是用来重建图片的, loss的目的是希望生成的图像与原图尽可能的相似; 所以作者首先采用了L2 Loss:
    L(GAB,GBA,A,B)=Ea A[GBA(GAB(a))a1] L(G_{AB}, G_{BA}, A,B)=E_{a~A}[||G_{BA}(G_{AB}(a))-a||_1]

论文里面提到判别器如果是对数损失训练不是很稳定,所以改成的均方误差损失,如下
LLSGAN(G,DY,X,Y)=Eypdata(y)[(DY(y)1)2]+Expdata(x)[(1DY(G(x)))2] L_{LSGAN}(G,D_Y,X,Y)=E_{y∼p_{data}(y)}[(D_Y(y)−1)^2]+E_{x∼p_{data}(x)}[(1−D_Y(G(x)))^2]

Conclusion

CycleGAN的问世可谓在image-to-image应用上有了很大的提升, cyclegan的主要应用领域也是图像转换.

相关文章: