概
以往的图片到图片的转换(或者图片到文字, 文字到图片等等), 往往需要成对的数据集, 本文提出了一种方法, 只需给出两种不同的数据集, 就能学习到风格之间的转换.
主要内容
倘若我们想将数据集(X)的图片的图片转换为(Y)类型的图片, 很自然的, 构造一个生成器(G)
[G(X) : X
ightarrow Y,
]
为了达到类型转换的目的, 需要添加一个判别器(D_Y), 判断输入是否为(Y)类型的图片. 如果仅仅如此是不够的, 因为
- 一个图片到另一个图片的转化是很多的;
- 仅仅有(G)和(D_Y)往往会导致mode collapse.
于是作者又引入了生成器(F: Y ightarrow X)和判别器(G_X), 这是一个逆操作, 并且引入cycle一致损失,
[mathcal{L}_{cyc} (G, F) = mathbb{E}_{x sim p_{data(x)}} [|F(G(x)) - x|_1] + mathbb{E}_{y in p_{data}(y)} [|G(F(y)) - y|_1].
]
即, 我们希望(F(G(X)) approx X), (G(F(Y)) approx Y), 非常直接却很有意思的想法.
最后的损失是
[mathcal{L}(G, F, D_X, D_Y) = mathcal{L}_{GAN} (G, D_Y,X, Y) + mathcal{L}_{GAN}(F, D_X, Y, X) + lambda cdot mathcal{L}_{cyc} (G, F).
]
注: 仅仅有(mathcal{L}_{cyc})也是不足以进行图片转换的, 这是很直观的.