摘要
GAN的训练需要图片是两两匹配的,这样经过训练后,生成器可以逐步生成一张让判别期无法判断真伪的图片。但实际上会碰到一些非匹配的图片,于是就提出了非匹配的图片转换(Unpaired image-to-image),一种在没有成对例子的情况下学习将图像从源域X转换到目标域Y的方法。使得
x→G(x)→F(G(x))≈x
其中x是原图,G(x)是经过生成器处理后的转换图片,再经过生成器F的还原后,还原图片需要尽可能的和原图相同。
相关工作
- GANs
- 匹配与非匹配的图片转换
- 一致性损失计算
- 风格迁移
系统阐述
- 目标:找到合适的函数F和G,使得原图和转换后的图片尽可能相似。
- 结构:由两组生成对抗网络组成;第一组生成对抗网络有生成器G(实现G:X→Y的映射)和鉴别器Dy(判别图像是目标图片还是转换图片);第二组生成对抗网络有生成器F(实现F:Y→X的映射)和鉴别器Dx(判别图像是原图还是还原图片)。
结构示意图
![](https://img2020.cnblogs.com/blog/1813159/202008/1813159-20200807135755628-1548491728.png)
Adversarial Loss
提出对抗一致性损失计算,每个判别器应该尽可能的区分图片来自于哪个领域。
LGAN(G,DY,X,Y)=Ey∼pdata(y)[logDY(y)]Ex∼pdata(x)[log(1−DY(G(x))]LGAN(G,DX,X,Y)=Ey∼pdata(y)[logDX(F(G(x)))]Ex∼pdata(x)[log(1−DX(x)]
根据GAN的基础知识,判别器DY应该尽可能地区别转换图片与目标图片,所以得到上述公式,目标是minGmaxDYLGAN(G,DY,X,Y)及minFmaxDXLGAN(G,DX,X,Y)。
Cycle Consistency Loss
从理论上使用对抗学习可以使生成的分布逼近于目标域的分布,且使反转后的分布近似于源域的分布,但是实际中发现,或出现Mode Collapse问题。如下图所示:
![这里写图片描述](https://img-blog.csdn.net/2018070616214882?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Nhc3NpZVB5dGhvbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
即我们生成的分布(红色)很可能会偏向于目标分布(蓝色)的某一部分(图中表示为一座峰)。例如训练集有很多种类别(如猫狗牛羊),但是我们只能生成狗(或猫或牛或羊),虽然生成的狗的图片质量特别好,但是!整个G就只能生成狗,根本没法生成猫牛羊,陷入一种训练结果不好的状态。这和我们对GAN的预期是相悖的。
基于上述问题,作者提出了前向和反向的循环一致性损失:
Lcyc(G,F)=Ex∼pdata(x)[∥F(G(x))−x∥1]+Ey∼pdata(y)[∥G(F(y))−y∥1].
Full Objective
最终目标函数为:
L(G,F,DX,DY)=LGAN(G,DY,X,Y)+LGAN(F,DX,Y,X)+λLcyc(G,F)
在整个处理过程中,我们通过一个中间表示将图像映射到自身,即图像转换到另一个域。
实现过程
网络结构
训练细节
使用最小二乘损失替换负的log似然损失。利用该损失训练过程更稳定,且得到了更好的结果:
LGAN(G,DY,X,Y)=Ey∼pdata(y)[(DY(y)−1)2]Ex∼pdata(x)[(DY(G(x))2)]
评价指标
baseline
- CoGAN;
- Pixel loss+GAN;
- Feature loss+GAN;
- BiGAN/ALI;
- pix2pix;
实验结果
![](https://img2020.cnblogs.com/blog/1813159/202008/1813159-20200807135818737-467645035.png)
![](https://img2020.cnblogs.com/blog/1813159/202008/1813159-20200807135831273-9823466.png)
无论是单独的周期和GAN + backward 都不能产生与目标域相似的图像。GAN alone和GAN + forward导致模式崩溃,不管输入的照片是什么,都产生相同的标签映射。
![](https://img2020.cnblogs.com/blog/1813159/202008/1813159-20200807135857435-592068035.png)