Augmented CycleGAN

CycleGAN 简介

CycleGAN 论文链接: https://arxiv.org/abs/1703.10593v6

CycleGAN 是一种图像到图像转换的网络, 它的特点是不需要配对的样本, 只要给定两个样本集合, 就可以自动学习两个集合之间的映射关系. 可以用于图像风格转换, 季节转换和草图与图片的相互转换等.

如图所示是 CycleGAN 的结构. 模型将要学习两个映射函数 $G,F$, 和对应的两个判别器 $D_Y, D_X$. 作者还引入循环一致损失(cycle consistency loss) 来作为正则项. 如图中 (b)(c) 所示.

损失函数分为对抗损失和循环一致损失两部分, 对抗损失如下:

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

$$\mathcal{L}_\text{GAN}(F,D_X,X,Y)=\mathbb{E}_{x \sim p_{\text{data}}(x)}[\log D_X(x)]+ \mathbb{E}_{y \sim p_{\text{data}}(y)}[1-\log D_X(F(y))]$$

文中指出, 对抗式的训练, 理论上能够学习到 $G,F$ 映射, 使得生成的分布分别与 $Y,X$ 一致, 然而这种映射并不是唯一的, 它可以是输入和目标之间的任意的一种一一对应的关系. 所以, 为了降低这种不确定性, 作者认为期望得到的映射应该是循环一致的.

从而得到循环一致损失:

$$\mathcal{L}_\text{cyc}(G,F)=\mathbb{E}_{x \sim p_{\text{data}}(x)}[\lVert F(G(x))-x \rVert_1]+ \mathbb{E}_{y \sim p_{\text{data}}(y)}[\lVert G(F(y))-y \rVert_1]$$

最终 CycleGAN 的损失函数为

$$\begin{equation}\begin{split}\mathcal{L}(G,F,D_X,D_Y)&=\mathcal{L}_{\text{GAN}}(G,D_Y,X,Y)\\& + \mathcal{L}_{\text{GAN}}(F,D_X,Y,X) \\& + \lambda \mathcal{L}_{\text{cyc}}(G,F) \end{split}\end{equation},$$

其中 $\lambda=10$.

下图是例子

Augmented CycleGAN

Augmented CycleGAN 论文链接: https://arxiv.org/abs/1802.10151v2

CycleGAN 是一种学习两个域之间非配对数据的映射的网络, 但是这种映射是近乎确定的并且一对一的, 即一个输入只产生一个输出, 这对于需要灵活的多对多的映射是不适用的. 作者认为, 两个域之间的映射关系是更加复杂的, 最好能够找到多对多的映射关系. 举例来说, 考虑鞋子和鞋子轮廓之间的映射关系, 希望可以通过鞋子的轮廓, 产生多种不同样式的鞋子.

另外, 当两个域有显著的不同时, 很难找到某种一对一的映射关系. 例如, 在面部属性和人脸图像之间, 训练一个 CycleGAN 模型是非常困难的.

CycleGAN with Stochastic Mappings

图中(a)是原版的 CycleGAN, 右边是本文将要改进后的结构. 通过在 $A,B$ 之间建立一个随机的映射来使得模型具有多对多映射的能力. 定义一个隐空间 $Z$ , 服从标准正态分布, 即 $z \sim p(z)$. 定义两个映射:

$$\begin{equation}\begin{split} G_{AB}:A \times Z \mapsto B \\ G_{BA}:B \times Z \mapsto A \end{split}\end{equation}$$

每一个映射能将噪声变量和样本映射为目标域中的一个样本, 因此通过采样不同的 $z$, 能够产生多个基于同一个样本 $a$ 的在样本 $b$ 条件下的样本. 得到改进后的损失:

$$\mathcal{L}_\text{GAN}^B (G_{AB},D_B)=\mathbb{E}_{b \sim p_{\text{data}}(b)}[\log D_B(b)]+ \mathbb{E}_{a \sim p_{\text{data}}(a)\\z \sim p(z)}[1-\log D_B(G_{AB}(a,z))]$$

$$\mathcal{L}_\text{CYC}^A (G_{AB},G_{AB})=\mathbb{E}_{a \sim p_{\text{data}}(a)\\ z_1,z_2 \sim p(z)}\lVert G_{BA}(G_{AB}(a,z_1),z_2)-a \rVert_1$$

上面这个模型称为 Stochastic CycleGAN, 然而这种模型有一个根本上的缺陷, 这种缺陷来源于循环一致损失 $\mathcal{L}_{\text(CYC)}^A$, 它使得映射 $G_{BA}$ 变成多对一的, 这是因为对给定的样本 $a$ 和任意的 $z$, 生成的 $b$ 都会服从$a’=G_{BA}(b,z) \approx a$.

接下来进一步讨论如何改进这个缺陷.

Augmented CycleGAN

为了学习多对多的映射, 作者提议学习一种在 $(a,z_b) \in A \times Z_b$ 和 $(b,z_a) \in B \times Z_a$之间的映射. $Z_a, Z_b$ 是一个能够捕获在 $A,B$ 之间相互转换时所缺失信息的隐空间, 与 $A,B$是相互独立的. 举例来说, 如果需要将男人脸的照片转换成女人脸的照片, 那么隐变量就能够捕获女人脸的特征(头发长度或发型).

$A \times Z_b, B \times Z_a$ 称为增强空间(Augmented Spaces), 学习这两种空间的多对多映射的方法称为 Augmented CycleGAN.

除了前面 Stochastic CycleGAN 中要学习的映射 $G_{AB},G_{BA}$ 外,还引入两个编码器:

$$E_A:A \times B \mapsto Z_a \\ E_B:B \times A \mapsto Z_b$$

给定一个 $(a,z_b) \sim p_{\text{data}}(a)p(a_b)$, 生成 $(\widetilde{b},\widetilde{z}_a)$ 为

$$\widetilde{b} =G_{AB}(a,z_b), \widetilde{z}_a =E_A(a,\widetilde{b})$$

同理给定一个 $(b,z_a) \sim p_{\text{data}}(b)p(z_a)$, 生成 $(\widetilde{a},\widetilde{z}_b)$ 为

$$\widetilde{a} =G_{BA}(b,z_a), \widetilde{z}_b =E_B(b,\widetilde{a})$$

训练一个 Augmented CycleGAN 和训练 CycleGAN 的方法是类似的, 仍然包含两类损失, 下面是 $A \to B \to A$ 的循环部分损失.

Marginal Matching Loss:

$$\mathcal{L}_\text{GAN}^{Z_a} (E_A,G_{AB},D_{Z_a})=\mathbb{E}_{z_a \sim p_(z_a)}[\log D_{Z_a}(z_a)]+ \mathbb{E}_{a \sim p_{\text{data}}(a)\\ z_b \sim p(z_b)}[\log(1- D_{Z_a}(\widetilde{z}_a)]$$

Cycle Consistency Loss:

第一项是 $a \sim p_d(a)$ 的重构损失:

$$\mathcal{L}_\text{CYC}^A (G_{AB},G_{AB},E_A)=\mathbb{E}_{a \sim p_{\text{data}}(a)\\ z_b \sim p(z_b)}\lVert G_{BA}(\widetilde{b},\widetilde{z}_a)-a \rVert_1,\\ \widetilde{b}=G_{AB}(a,z_b),\widetilde{z}_a=E_A(a,\widetilde{b}).$$

第二项是 $z_b \sim p(z_b)$ 的重构损失:

$$\mathcal{L}_\text{CYC}^{Z_b}A (G_{AB},E_B)=\mathbb{E}_{a \sim p_{\text{data}}(a)\\ z_b \sim p(z_b)}\lVert E_B(a,\widetilde{b})-z_b \rVert_1,\\ \widetilde{b}=G_{AB}(a,z_b).$$

最终实现的结果, 从鞋子的轮廓生成鞋子的图片, 通过选择5个 $z_b \sim p(z_b)$ 得到5种不同的鞋子.

失:

$$\mathcal{L}_\text{CYC}^{Z_b}A (G_{AB},E_B)=\mathbb{E}_{a \sim p_{\text{data}}(a)\\ z_b \sim p(z_b)}\lVert E_B(a,\widetilde{b})-z_b \rVert_1,\\ \widetilde{b}=G_{AB}(a,z_b).$$

最终实现的结果, 从鞋子的轮廓生成鞋子的图片, 通过选择5个 $%z_b \sim p(z_b)$% 得到5种不同的鞋子.