CycleGAN:图片风格,想换就换 | ICCV 2017论文解读

简介:

前言

CycleGAN 是发表于 ICCV17 的一篇 GAN 工作,可以让两个 domain 的图片互相转化。传统的 GAN 是单向生成,而 CycleGAN 是互相生成,网络是个环形,所以命名为 Cycle。

并且 CycleGAN 一个非常实用的地方就是输入的两张图片可以是任意的两张图片,也就是 unpaired。

单向GAN


读者可以按照原论文的顺序理解 CycleGAN,这里我按照自己的思路解读。CycleGAN 本质上是两个镜像对称的 GAN,构成了一个环形网络。其实只要理解了一半的单向 GAN 就等于理解了整个CycleGAN。

b02db44b597975fd31f7ffb0ba53ed7da7608656

上图是一个单向 GAN 的示意图。我们希望能够把 domain A 的图片(命名为 a)转化为 domain B 的图片(命名为图片 b)。

为了实现这个过程,我们需要两个生成器 G_AB 和 G_BA,分别把 domain A 和 domain B 的图片进行互相转换。

图片 A 经过生成器 G_AB 表示为 Fake Image in domain B,用 G_AB(a) 表示。而 G_AB(a) 经过生辰器 G_BA 表示为图片 A 的重建图片,用 G_BA(G_AB(a)) 表示。

最后为了训练这个单向 GAN 需要两个 loss,分别是生成器的重建 loss 和判别器的判别 loss。

判别 loss:判别器 D_B 是用来判断输入的图片是否是真实的 domain B 图片,于是生成的假图片 G_AB(A) 和原始的真图片 B 都会输入到判别器里面,公示挺好理解的,就是一个 0,1 二分类的损失。最后的 loss 表示为:

03beb3da6f37cf44653b44896c733b6cc962fa92

生成 loss:生成器用来重建图片 a,目的是希望生成的图片 G_BA(G_AB(a)) 和原图 a 尽可能的相似,那么可以很简单的采取 L1 loss 或者 L2 loss。最后生成 loss 就表示为:

4af08b1c53670524228a9352b9ee9b4060bcccd2

以上就是 A→B 单向 GAN 的原理。

CycleGAN

CycleGAN 其实就是一个 A→B 单向 GAN 加上一个 B→A 单向 GAN。两个 GAN 共享两个生成器,然后各自带一个判别器,所以加起来总共有两个判别器和两个生成器。一个单向 GAN 有两个 loss,而 CycleGAN 加起来总共有四个 loss。

CycleGAN 论文的原版原理图和公式如下,其实理解了单向 GAN 那么 CycleGAN 已经很好理解。

11da773fc895019cb6c99384b7ed28e02cb71222

X→Y 的判别器损失为,字母换了一下,和上面的单向 GAN 是一样的:

828e36d828ac23084d5d7a195fa79d4450e2fcf0

同理,Y→X 的判别器损失为:

2a32c174f9a6f06f36e7d31b2823b43054ca9d57

而两个生成器的 loss 加起来表示为:

e22a9163a2ffc7255b41be2ace9bb4dc69cc79d8

最终网络的所有损失加起来为:

afee5417b79e87a873e577515c36a92c4ccbebbf

论文里面提到判别器如果是对数损失训练不是很稳定,所以改成的均方误差损失,如下:

c877678f35c71dbbbfdd858523dff0a66da443af

下面放一张网友们自制的 CycleGAN 示意图,比论文原版的更加直观。

3bdda24995da07ca6410610d7650f1d9a5ce64a1

效果展示


CycleGAN 的效果还是不错的,论文里给出了很多结果图,可以欣赏一下。


4debbfb3a36bccdc084fac179f0c5701763f4d07

原文发布时间为:2018-03-14本文作者:罗浩本文来自云栖社区合作伙伴“ PaperWeekly”,了解相关信息可以关注“ PaperWeekly”微信公众号
相关文章
|
4月前
|
计算机视觉
CV项目肢体动作识别(三)内附完整代码和详细讲解
首先我还是给出完整的代码,然后再进行详细的讲解。这一次我们用模块化的思想,把一个功能模块化(moudle),这种思想在工程中非常常见,在分工中你需要做好自己的工作就可以,最后再调用这些模块。
|
4月前
|
机器学习/深度学习 人工智能 计算机视觉
【计算机视觉】不来试试图片轮廓提取?
🚩 前言 最近学到了深度学习的卷积操作,在卷积神经网络出现之前,就已经有使用卷积核 (也叫滤波器),但那时的卷积核依靠人工的经验和知识来进行设计,而不能像卷积神经网络中那样让机器自己学习出合适的卷积核参数。 下面就介绍通过卷积来获取图像轮廓图的操作。
50 1
|
8月前
|
人工智能 编解码 移动开发
NeRF基于线稿生成逼真三维人脸,细节风格随意改,论文已上SIGGRAPH
NeRF基于线稿生成逼真三维人脸,细节风格随意改,论文已上SIGGRAPH
385 0
|
8月前
|
机器学习/深度学习 算法 TensorFlow
探索图片的真相--卷积神经网络
探索图片的真相--卷积神经网络
56 0
|
11月前
|
机器学习/深度学习 自然语言处理 算法
论文赏析【EMNLP19】语言模型效果不好?也许你可以给它添加一点句法信息
论文赏析【EMNLP19】语言模型效果不好?也许你可以给它添加一点句法信息
|
11月前
|
存储 计算机视觉
涨点Trick | ReLabel超越LabelSmoothing解决单图多类单标签问题(附论文与源码下载)(二)
涨点Trick | ReLabel超越LabelSmoothing解决单图多类单标签问题(附论文与源码下载)(二)
124 0
|
11月前
|
机器学习/深度学习 计算机视觉
涨点Trick | ReLabel超越LabelSmoothing解决单图多类单标签问题(附论文与源码下载)(一)
涨点Trick | ReLabel超越LabelSmoothing解决单图多类单标签问题(附论文与源码下载)(一)
71 0
|
11月前
|
机器学习/深度学习 编解码 人工智能
谷歌复用30年前经典算法,CV引入强化学习,网友:视觉RLHF要来了?
谷歌复用30年前经典算法,CV引入强化学习,网友:视觉RLHF要来了?
|
编解码
新的换脸模型FaceShifter论文的简单而完整的解释(二)
新的换脸模型FaceShifter论文的简单而完整的解释(二)
379 0
新的换脸模型FaceShifter论文的简单而完整的解释(二)
|
编解码 定位技术 计算机视觉
新的换脸模型FaceShifter论文的简单而完整的解释(一)
新的换脸模型FaceShifter论文的简单而完整的解释(一)
205 0
新的换脸模型FaceShifter论文的简单而完整的解释(一)