Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks——CycleGAN学习笔记
目录Abstract
图像到图像的翻译变换是一类视觉方面的问题,目标是使用已经对齐后的图像对来学习输入样本和输出样本之间的变换,但是很多情况下成对的训练集并不可用。
作者提出了在没有成对样本的情况下学习将图像从源域翻译到目标域的方法:学习一个变换\(G:X\rightarrow Y\),使得\(G(x)\)的输出的样本分布与使用了对抗分布的分布Y尽可能的相似。因为这个变换的约束是欠约束的,所以将这个变换与它的逆变换\(F:Y \rightarrow X\)耦合,并引入循环一致性损失来强制\(F(G(X)) ≈ X\)。
1.Introduction
本文主要研究一种方法在缺失成对训练样本的情况下来捕捉一个图像的特殊特征,并将这些特征转化到另一个图像集合中。这个问题可以被更广泛地描述为图到图的翻译,即将一张图片由所在的已知场景表示\(x\)转移到另外一个表示\(y\)(例如灰度图到彩色图,图片到语义标签)。
该方法学习一个变换\(G:X\rightarrow Y\),\(G(x)\)将源域的样本翻译变换到一个与目标域相似的领域\(\hat{Y}\),使得\(G(x)\)的输出的样本分布与Y中的样本分布尽可能的相似。但是这种翻译变换不能保证输入x与输出y形成合理的配对,翻译变换应该“循环一致”的特性,例如我们把映射翻译为法语,然后再把法语翻译成英语。
于是该方法使用两个变换:\(G:X\rightarrow Y\)与\(F:Y \rightarrow X\),G与F是彼此的逆变换。在训练G与F的同时,作者还使用了循环一致性损失来鼓励\(F(G(x))\approx x\)和\(G(F(x))\approx y\)。将循环一致性损失与源域X和目标域Y上的对抗损失相结合,就产生了不成对的图像到图像翻译的完整目标。
2.Formulation
我们的任务就是在给定源域X的样本\(\{x_i\}^N_{i=1}\)与目标域的样本\(\{y_i\}^M_{j=1}\)下学习样本从X到Y的变换函数。其中源域的样本分布为\(x\sim p_{data}(x)\),目标域的样本分布为\(y\sim p_{data}(y)\)。
该方法的模型包括两个变换:\(G:X\rightarrow Y\)与\(F:Y \rightarrow X\),并且使用两个对抗域分类器\(D_x\)与\(D_y\),其中\(D_x\)用来区别图像\(\{x\}\)与图像\(\{F(y)\}\);同理\(D_y\)来区别图像\(\{y\}\)与图像\(\{G(x)\}\)。方法的目标函数包括两部分:对抗损失来将生成的图像分布与目标域的样本分布对齐,而循环一致性损失则用来防止学习到的变换G与F相互矛盾。
\(D_y\)来鼓励变换G将X翻译到一个与目标域Y相似的领域;而\(D_x\)与F也是同理。为了进一步规范变换,引入两个循环一致性损失,这两个损失遵循一种直觉,即如果从一个域转换到另一个域,然后再转换回来,应该到达最初开始的地方。
2.1 Adversarial Loss
在两个变换函数中都使用了对抗损失,对于\(G:X\rightarrow Y\)与它的分类器\(D_y\),损失函数定义为:\(\mathcal{L}_{GAN}(G,D_Y,X,Y)=\mathbb{E}_{y\sim p_{data(y)}}[log(D_Y(y))]+\mathbb{E}_{x \sim p_{data(x)}}[log(1-D_Y(G(X)))]\)
G来生成与目标域Y相似的图像\(G(x)\),而\(D_y\)来区别经过翻译变换后的样本\(G(x)\)与真实的目标域样本y。其中G试图最小化损失\(L_{GAN}\),而D则尝试最大化\(L_{GAN}\).同理另外一个变换函数\(F:Y \rightarrow X\)与分类器\(D_x\)与器思路类似。
2.2 Cycle Consistency Loss
从理论上来说,变换G与F的输出可以分别被分类到领域Y与X。然而,通过足够大的容量,网络可以将同一组输入图像变换到目标域中图像的任何随机排列,其中任何学习到的变换都可以产生与目标分布匹配的输出分布。
于是作者提出学习的变换需要满足循环一致性:对于源域的每个样本x,图像翻译循环能够将样本x重新变换回源域,即\(x \rightarrow G(x) \rightarrow F(G(x)) \approx x\),称之为正向循环一致性。
同理,对于目标域的每个样本y,G与F也可以满足反向循环一致性,即\(y\rightarrow F(y) \rightarrow G(F(y)) \approx y\).
所以整体的循环一致性损失为:\(\mathcal{L}_{cyc}(G,F)=\mathbb{E}_{x \sim p_{data(x)}}[||F(G(x))-x||_1]+\mathbb{E}_{y \sim p_{data}(y)}[||G(F(y))-y||_1]\).
输入x、输出\(G(x)\)与重新变换回源域的样本\(F(G(x))\)如图:
2.3 Full Objective
任务整体的损失函数为:\(\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 \mathcal{L}_{cyc}(G,F)\).其中\(\lambda\)控制两部分的相对重要性。任务的目标函数为:\(G^*,F^*=arg min_{G,F}max_{D_x,D_y}\mathcal{L}(G,F,D_X,D_Y)\).