cycleGAN

date:2017.5.16

今天在看cycle consistent adversarial network,结果看到一半发现对抗网络的实现是基于李菲菲之前的Perceptual Losses for Real-Time Style Transfer and Super-Resolution.,于是又这篇Gatys的neural art改进论文看了看

Perceptual Losses for Real-Time Style Transfer and Super-Resolution.

这篇论文的思想精髓在于把neural art不再看作是一个目标图与内容之间的生成问题,而是内容图变换问题。损失函数不使用像素间的距离,而是经过变换的特征图。其中residual block长这样:
cycleGAN_第1张图片
总的来说相比于原始算法,感知损失函数大大降低了参数量,却能使得图像语义很好地得到保留,实用性相比以前增强了。

Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

论文展示的效果有点神奇,感觉在图像造假方向有前途啊。
文中定义了两个损失,一个是对抗损失,这个都是老生常谈,有点意思的是cycle consistent loss。
cycleGAN_第2张图片
怎么说呢,它定义了 前向损失x → G(x) → F(G(x))和后向损失y → F(y) → G(F(y)),相当于一种跨域损失函数的定义吧,双向保证了训练稳定性。
这里的generator跟 Perceptual losses for real-time style transfer and super-resolution是一样的。他们使用了Instance Normalization。判别器使用的和pix2pix一样(PatchGAN on 70x70 patches). 为了稳定GAN的训练,他们使用了最小二乘gan(least square gan)和 Replay buffer。不像pix2pix,他们的模型没有任何的随机性。(没有随机输入z,没有dropout)这里的生成器更像是一个deteministic的style transfer模型,而不是一个条件GAN。他们使用了L1距离作为cycle consistency。
其实类似的模型还有dualgan、discogan,它们之间实现细节略微有差异。
由于是无监督的,会出现一个有趣的现象,错误映射,把建筑映射成树的情况。
另一个问题就是对于几何变换无能为力,无法把猫变成狗,或者把斑马变成马,论文中给出的效果很糟糕。

实现代码空着

你可能感兴趣的:(开源项目学习,深度学习笔记)