论文题目:Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks (ICCV 2017)

摘要

图像到图像翻译是一类视觉和图形问题,目标是使用一个对齐后的图片对训练集学习一个从输入图片到输出图片的映射。然而对很多任务来说,并没有成对的训练数据。我们将展示一个学习将来自原始域 $X$ 的图片翻译到目标域 Y 中的方法,而不需要成对的数据。我们的目标是使用对抗损失 (adversarial loss) 来学习一个映射 $G : X → Y$ 从而使来自 $G(X)$ 的图片分布与 $Y$ 的分布不可区分。我们引入 $G$ 的逆映射 $F : Y → X$ 和一个循环一致性损失 (cycle consistent loss) 来使得 $F(G(X)) ≈ X$(反之亦然)。我们在几个没有成对数据的任务上展示了大量结果,包括 collection 风格转换,物体变形(如:马 → 斑马),季节转换,照片增强等。大量与之前方法的比较证明了我们方法的优越性。

1.png

介绍

对于许多任务来说,成对的数据很难获取,因此我们希望能找到一个不需要成对数据的图像到图像 翻译的方法。我们假设两个域之间存在某种隐藏的关系,然后试图找到这种关系。我们训练一个映射 $G : X → Y$ ,通过对抗地训练从 $y$ 中区分出 $\hat{y}$,来使得输出 $\hat{y} = G(x),x ∈ X$ 与图片 $y \in Y$ 不易区分。在理论上,这个目标函数能促使 $\hat{y}$ 服从 $y$ 的经验分布 $p_Y (y)$(总之,这需要 $G$ 是随机的)。经过最优化后的 $G$ 从而能将域 $X$ 翻译到域 $\hat{Y}$ 中,且其分布与域 $Y$ 相同。

常规的对抗目标函数会导致风格崩溃 (mode collapse) 的问题,因此需要在目标函数上添加更多结构。我们认为翻译应当具有“循环一致性”,从数学上来说,如果我们有一个翻译器 $G : X → Y$ 和另一个 翻译器 $F : Y → X$,则 $G$ 和 $F$ 应该互逆,且两个映射都是双射。我们通过同时训练 $G$ 和 $F$ 来应用这个关于目标函数的结构性假设,添加一个循环一致性损失来鼓励 $F (G(x)) ≈ x$ 和 $G(F (y)) ≈ y$。将这个损失与域 $X$ 和 $Y$ 上的对抗损失结合就得到了对于不成对图像翻译的完全目标函数。

相关工作

GANs GAN 在许多任务上都取得了成功,如图片生成,图片编辑,表示学习等。最近的方法采用了相同的思想来进行条件图像生成应用,如文本转图像,绘画转照片等。GAN 成功的关键在于使用了对抗损失来迫使生成的图片与真实图片接近。

图像翻译 图像到图像翻译的想法可以追溯到 Hertzmann2001 年的论文《Image Analogies》,它将一个非参数化的混合结构应用到单独的图片对上。更近一些的方法使用 CNN 来学习一个参数化的翻译函数。我们的方法建立在 pix2pix 框架的基础上,该框架使用一个条件 GAN 来学习输入图片到输出图片的映射。与之前的一些工作不同的是,我们不需要使用成对的数据来学习映射。

不成对的图片翻译 一些其他方法也研究了不成对的图像翻译。Rosales 等人提出了一种基于先验的从源图片计算出马尔科夫随机场的贝叶斯框架。更近一些的,CoupledGANs 和 cross-model scene networks 使用一个权重共享策略来学习域之间的共同表示。与我们的方法一致,Liu 等人使用 VAE 和 GAN 的结合拓展了这个框架。

与上述方法不同,我们的方法不依赖于任何 task-specific,预定义的输入和输出之间的相似度函数, 也不假设输入和输出必须在相同的低维嵌入空间中。这让我们的方法对于视觉和图形学的各种任务具有广泛适用性。

循环一致性 循环一致性在许多领域早已被广泛应用,如视觉追踪 (visual tracking)、语言翻译、structure from motion、3D shape matching、co-segmentation、dense semantic alignment 和 depth estimation 等。Zhou 等人的工作与我们最为接近,他们适用循环一致性损失来指导 CNN 的训练。

神经风格转换 (Neural Style Transfer) 神经风格转换是另一种图像翻译的方法,它通过匹配预先定义的深度特征的 Gram matrix statistics,将一张图片的内容与另一张图片的风格相结合来生成新图片。然而我们的目标在于学习两个域之间的映射,而不是两张具体的图片。因此我们的方法可以被应用于各种任务,而单样本的神经风格转换表现不好。

架构

我们的目标是,给定训练样本 $\left\{x_{i}\right\}_{i=1}^{N} \in X$ 和 $\left\{y_{j}\right\}_{j=1}^{M} \in Y$ ,学习两个域之间的映射。我们使用两个对抗的判别器 $D_X$ 和 $D_Y$ ,$D_X$ 的目标是区分图片 ${x}$ 和翻译后的图片 ${F(y)}$,$D_Y$ 的目标是区分图片 ${y}$ 和翻译后的图片 ${G(x)}$。

2.png

Adversarial Loss

我们对两个映射函数 $G$ 和 $F$ 都应用了对抗损失。对 $G : X → Y$ 和它的判别器 $D_Y$ ,我们使用如下目标函数:

$$ \mathcal{L}_{G A N}\left(G, D_{Y}, X, Y\right)=\mathbb{E}_{y \sim p_{\text {data}}(y)}\left[\log D_{Y}(y)\right]+\mathbb{E}_{x \sim p_{\text {data}}(x)}\left[\log \left(1-D_{Y}(G(x))\right)\right] $$

对 $F : Y → X$ 和它的判别器 $D_X$ 也使用相似的损失函数 $\mathcal{L}_{\mathrm{GAN}}\left(F, D_{X}, Y, X\right)$。

Cycle Consistent Loss

前向循环一致性 (forward cycle consistency): $x \rightarrow G(x) \rightarrow F(G(x)) \approx x$。
反向循环一致性 (backward cycle consistency): $y \rightarrow F(y) \rightarrow G(F(y)) \approx y$。
循环一致性损失:

$$ \mathcal{L}(G, F)=\mathbb{E}_{x \sim p_{\text {data}}(x)}\left[\|F(G(x))-x\|_{1}\right]+\mathbb{E}_{y \sim p_{\text {data}}(y)}\left[\|G(F(y))-y\|_{1}\right] $$

在初步的实验中,我们尝试了将 L1 norm 替换为 $F(G(x))$ 和 $x$ 之间,以及 $G(F(y))$ 和 $y$ 之间的对抗损失,但没有观察到性能的改进。

Full Objective

$$ \mathcal{L}\left(G, F, D_{X}, D_{Y}\right)=\mathcal{L}_{G A N}\left(G, D_{Y}, X, Y\right)+\mathcal{L}_{G A N}\left(F, D_{X}, Y, X\right)+\lambda \mathcal{L}_{c y c}(G, F) $$

我们的目标问题是:

$$ G^{*}, F^{*}=\arg \min _{G, F} \max _{D_{x}, D_{Y}} \mathcal{L}\left(G, F, D_{X}, D_{Y}\right) $$

值得指出的是,我们的模型可视为训练两个“自动编码器”:$F \circ G : X \rightarrow X$ 和 $G \circ F : Y \rightarrow Y$ 。然而,这些自动编码器有特殊的内部结构:它们将一个图片通过一个中间层表示映射到自身,这个中间层表示是该图片在另一个域中的翻译结果。

实现

网络结构 我们使用了 Johnson 的生成网络结构,因为它在神经风格转换和图像超分辨率上展示了令人印象深刻的效果。网络包含两个 stride-2 conv,几个 residual block,和两个 1 -stride conv,使用 instance normalization。对于判别网络,使用 70x70 PatchGANs,其目标是判断每个 70x70 overlapping image patches 的真假。这种 patch-level 判别器结构参数很少,且能被应用到任意大小的图片上。

训练细节 我们使用两个技术来使训练稳定。第一,将 LGAN 中的负对数似然损失转化为一个最小平方损失:

$$ \mathcal{L}_{L S G A N}\left(G, D_{Y}, X, Y\right)=\mathbb{E}_{y \sim p_{\text {data}}(y)}\left[\left(D_{Y}(y)-1\right)^{2}\right]+\mathbb{E}_{x \sim p_{\text {data}}(x)}\left[D_{Y}(G(x))^{2}\right] $$

第二,为了减少模型震荡 (model oscillation),我们采用了 Shrivastava 的策略,使用生成图片的历史记录来更新 $D_X$ 和 $D_Y$ ,而不是最新生成的图片。我们维护一个存有 50 张先前生成的图片的 buffer。

结果

评估

与其他图像翻译方法的比较

3.png

消融研究 (Ablation Study)

4.png

应用

物体变形 (Object transfiguration)、季节转化 (Season transfer):

5.png

集合风格转化 (Collection style transfer):

6.png

由绘画生成照片 (Photo generation from paintings):

7.png

照片增强 (Photo enhancement):

8.png

参考文献

[1] Unpaired Image-To-Image Translation Using Cycle-Consistent Adversarial Networks

Last modification:August 11th, 2019 at 11:10 pm
如果觉得我的文章对你有用,请随意赞赏