CycleGan

CycleGan
​ 今天我们要介绍的是CycleGAN。其主要功能是实现两个领域之间的图像转换,比如图像风格迁移(莫奈艺术风格滤镜),物体转换(将图片中的马转换为斑马)等等。其优势是不需要成对的训练图像。

这里写图片描述

图1.CycleGan在图像领域转换中的结果

1.介绍

CycleGAN由两个判别器(Dx,Dy)和两个生成器(G和F)组成。

image-20210514120336833

图2.模型构成。使用两个生成器和两个判别器是为了避免所有的X图片都被映射到同一个Y图片上。生成器G能满足X->Y的映射,生成器F能满足Y->X的映射。

损失函数描述如下:

​ 这是判别器Dy对X->Y生成器G的损失:

image-20210514120528114

​ 当映射G 试图生成与数据域Y相似的图片 G(x) 的时候,判别器也在试着将生成的图片从原图中区分出来。映射G 希望通过优化减小的项与 映射F 希望优化增大的项相对抗,另一个映射F 也是如此。

理论上对抗训练可以学习到 映射G与F,并生成与目标域 Y与X 相似的分布的输出(严格地讲,这要求映射G与F 应该是一个随机函数。然而,当一个网络拥有足够大的容量,那么输入任何随机排列的图片,它都可以映射到与目标图片相匹配的输出分布。因此,不能保证单独依靠对抗损失而学习到的映射可以将每个单独输入的 xi映射到期望得到的 yi 。

为了进一步减少函数映射可能的得到的空间大小,作者认为学习的的得到的函数应该具有循环一致性(cycle-consistent): 如图2(b) 所示,数据域X 中的每一张图片x 在循环翻译中,应该可以让x 回到翻译前的图片,反之亦然,即 前向、后向循环一致,即:

image-20210514123001523

由此得到循环一致性损失Lcyc:

image-20210514120856115

这是两个生成器的循环损失。以等式右端第一项为例,这其实是图2(b)所描述的过程,X中的图片经过G转换为Y领域的图片Fake_Y,F再将Fake_Y转换回X领域的图片Cyc_X,Cyc_X应该和原始图片的差距越小越好。

img

图3.循环一致性

整体的损失函数和优化目标:

image-20210514121425621

image-20210514121623533

公式4表示先优化D然后优化G和F,这一点和普通的GAN是一样的。

以上