摘要
GAN的训练需要图片是两两匹配的,这样经过训练后,生成器可以逐步生成一张让判别期无法判断真伪的图片。但实际上会碰到一些非匹配的图片,于是就提出了非匹配的图片转换(Unpaired image-to-image),一种在没有成对例子的情况下学习将图像从源域X转换到目标域Y的方法。使得
其中(x)是原图,(G(x))是经过生成器处理后的转换图片,再经过生成器(F)的还原后,还原图片需要尽可能的和原图相同。
相关工作
- GANs
- 匹配与非匹配的图片转换
- 一致性损失计算
- 风格迁移
系统阐述
- 目标:找到合适的函数F和G,使得原图和转换后的图片尽可能相似。
- 结构:由两组生成对抗网络组成;第一组生成对抗网络有生成器(G)(实现(G: X ightarrow Y)的映射)和鉴别器(D_y)(判别图像是目标图片还是转换图片);第二组生成对抗网络有生成器(F)(实现(F: Y ightarrow X)的映射)和鉴别器(D_x)(判别图像是原图还是还原图片)。
结构示意图
Adversarial Loss
提出对抗一致性损失计算,每个判别器应该尽可能的区分图片来自于哪个领域。
根据GAN的基础知识,判别器(D_Y)应该尽可能地区别转换图片与目标图片,所以得到上述公式,目标是(min_Gmax_{D_Y}L_{GAN}(G, D_Y , X, Y ))及(min_Fmax_{D_X}L_{GAN}(G, D_X , X, Y ))。
Cycle Consistency Loss
从理论上使用对抗学习可以使生成的分布逼近于目标域的分布,且使反转后的分布近似于源域的分布,但是实际中发现,或出现Mode Collapse问题。如下图所示:
即我们生成的分布(红色)很可能会偏向于目标分布(蓝色)的某一部分(图中表示为一座峰)。例如训练集有很多种类别(如猫狗牛羊),但是我们只能生成狗(或猫或牛或羊),虽然生成的狗的图片质量特别好,但是!整个G就只能生成狗,根本没法生成猫牛羊,陷入一种训练结果不好的状态。这和我们对GAN的预期是相悖的。
基于上述问题,作者提出了前向和反向的循环一致性损失:
Full Objective
最终目标函数为:
在整个处理过程中,我们通过一个中间表示将图像映射到自身,即图像转换到另一个域。
实现过程
网络结构
训练细节
使用最小二乘损失替换负的log似然损失。利用该损失训练过程更稳定,且得到了更好的结果:
评价指标
baseline
- CoGAN;
- Pixel loss+GAN;
- Feature loss+GAN;
- BiGAN/ALI;
- pix2pix;
实验结果
无论是单独的周期和GAN + backward 都不能产生与目标域相似的图像。GAN alone和GAN + forward导致模式崩溃,不管输入的照片是什么,都产生相同的标签映射。