作者:Sebastian Theiler
翻译:吴金笛
校对:张玲
本文约2300字,建议阅读10分钟。
本文介绍了CycleGAN的映射原理和4项损失的基本含义,并提供了详细的损失方程。
本文假定你已经对GANs的工作方式有非常深刻的了解。如果你想快速回顾一下,或者完全不了解GANs,我这有一篇关于它们的、以前写的文章可供参考
(https://medium.com/analytics-vidhya/
implementing-a-gan-in-keras-d6c36bc6ab5f)。
CycleGAN的目标很简单,学习某个数据集X与另一个数据集Y之间的映射。例如,X可以是赛马图像数据集,Y可以是斑马图像数据集。
图片链接:https://arxiv.org/pdf/1703.10593.pdf
CycleGAN的美妙之处在于X和Y不一定是成对的。我们可以为CycleGAN 提供X的任意图像和Y的任意图像,这意味着Y中的每一个图像不是X中相关图像的直接映射。
CycleGAN还可以做什么?
很多。
CycleGAN几乎可以做任何涉及到照片编辑的操作。包括:
昼夜交换图像
季节/温度变化
从轮廓渲染逼真的图像
从图像中添加或删除元素,例如树木
自动为黑白图像着色
还有更多。
那么CycleGAN是如何学习这种映射的呢?让我们来看看。
CycleGAN由两个发生器和两个判别器组成。
第一个生成器,G,需要一个图像,X中的x,并将其映射成ŷ。理想情况下 ŷ与属于Y的真实图像没有区别。
然后,一个判别器Dy尝试对图像进行分类,判断图像是Y中真实采样出来的还是由G虚假最终生成的。
形式上,映射函数G:X→Y的目标及其判别符Dy表示为: