论文泛读1:基于Disentangle的Image-to-Image Translation

1. Unsupervised Image-to-Image Translation Networks

针对什么问题?

图像翻译旨在将图像从一个领域映射到另一个领域。在监督的设定下,数据集是成对的,领域之间的映射是可行的。但在非监督的情况下,即数据集不是成对的,而是分成两个彼此独立的领域,图像翻译的任务将会变得艰难。而现实生活中,成对的数据是很难获得的,故无监督的图像翻译更实在。

提出什么方法?

本文指出图像翻译的主要挑战是学习两个不同领域之间的联合分布。在无监督条件下,两个数据集合分别包括在不同领域中来自两个边缘分布的图像,而图像翻译的目的正是从这两个边缘分布得到联合分布。而耦合理论指出:一般情况下,存在无穷多的联合分布可以到达给定的边缘分布。因此,从边缘分布推断联合分布是一个不适合的方法。为了解决这个问题,本文对联合分布提出了额外的假设。

  • 本文提出一个共享隐藏空间的假设,即不同领域中的一对相关图像可以被映射到共享隐藏空间中的相同隐藏表达。
  • 基于上述假设,本文提出了结合了GAN和VAE的UNIT框架

效果怎么样?

本文将提出的框架应用于多种无监督的图像翻译问题并取得了高质量的翻译结果,这也从侧面反映了共享隐藏空间暗含了Cycle-Consistency Constraint(循环一致损失)。

1.1 Model

本文提出的UNIT框架如下图所示:

  • 其中,(a)图示了隐藏空间的含义,即Domain$X_1, X_2$中的图像$x_1, x_2$都被映射到了相同的隐藏空间$z$中
  • (b)图示了整个框架的结构
    • Domain$X_1, X_2$中的图像$x_1, x_2$分别通过$E_1, E_2$映射到隐藏空间$z$中,再分别通过$G_1, G_2$还原成自我重构图像$\tilde{x}_1^{1 \rightarrow 1}, \tilde{x}_2^{2 \rightarrow 2}$或者领域翻译后的图像$\tilde{x}_1^{1 \rightarrow 2}, \tilde{x}_2^{2 \rightarrow 1}$。
      • $E_1, E_2$共享了最后几层网络,$G_1, G_2$共享了前面几层网络
      • $\left\{ E_1, G_1 \right\}$, $\left\{ E_2, G_2 \right\}$对各自的领域$X_1, X_2$都构成了$VAE$的结构
    • 判别器$D_1, D_2$负责验证翻译后的图像是否真实
  • 本文指出,权重共享的约束并不能保证两个领域中相关的图像能够得到相同的隐藏空间编码。因为在无监督条件下,这两个领域中没有对应的图像能够训练网络输出相同的隐藏编码。即使隐藏编码是相同的,它们在不同的领域将会具有不同的语义意义。但话又说回来,通过对抗损失的训练,两个领域中对应的图像可以被映射到相同的隐藏空间,并可以被反射回不同的领域。

1.2 Optimization

本文通过联合寻来你解决了$VAE_1, VAE_2, GAN_1, GAN_2$的学习问题,损失如下

  • 其中$L_{VAE}$旨在最小化变量的上界
  • $L_{GAN}$确保了翻译后图像的真实性
  • $L_{CC}$类似于循环一致性约束,确保了两次翻译后的图像与输入图像一致

以上损失的具体形式请参考原论文

1.3 Experiment

  • 验证指标
    • average pixel accuracy over the images in the test set
  • 对比模型
    • DANN
    • DTN
    • CoGAN
  • 数据集
    • map dataset
    • Synthetic to real
    • Dog breed conversion

下面展示本文部分的实验结果

2. Multimodal Unsupervised Image-to-Image Translation

针对什么问题?

本文指出,在许多场景中,对于交叉领域的映射是多模态的,而现有的Image-to-Image Translation方法,如Pix2Pix, CycleGAN经仅仅只能得到一个确定性的映射。这是什么意思呢?

  • 举个例子,一个冬天的场景可能会有多个状态,天气、时间、光线等因素都会使得冬天的场景看起来不一样。
  • 而现有的方法,若是做 夏天->冬天,一张夏天的场景仅能转换出到一种冬天领域下的场景,无法做到多种不同的输出。
  • 特别是,本文指出,有些方法通过注入噪音完成图像中信息的改变,但是经过训练后的网络会忽略这些噪音,从而使得噪音的注入无效。

提出什么方法?

故本文针对以上问题,提出了MUNIT模型,并做了以下的假设

  • 首先,假设图像的潜在空间(Latent Space)可以被分解为内容空间(Content Space)和风格空间(Style Space)。

    • 内容空间编码了在图像翻译时需要保留的内容
    • 风格空间代表了剩余那些输入图片中不需要保留的变量
  • 其次,假设处于不同领域中的图像共享一个共同的内容空间,但是不共享风格空间。如下图所示,其中$X_1, X_2$共享同一个内容空间,但是风格空间彼此独立。

那么,在进行领域转换的时候,将内容编码和不同的随机采样的风格编码相结合,就可以得到多样化和多模态的输出。

效果怎么样?

实验表明该方法在多模态输出建模中的有效性,且能生成质量更好的图像。

2.1 Model

上图为模型的概述。整个模型包含了两个auto-encoders,也就是模型中的红线和蓝线,各自代表一个domain。

  • 在图(a)中,两个auto-encoders的作用如下
    • 对于$x_1$,针对domain1的auto-encoders将其分解成风格空间$s_1$和内容空间$c_1$,再通过$L_1$损失重构成原图$\hat{x_1}$
    • 对于$x_2$,针对domain2的auto-encoders将其分解成风格空间$s_2$和内容空间$c_2$,再通过$L_1$损失重构成原图$\hat{x_2}$
  • 在图(b)中,对于拆分后的$c_1, c_2$操作如下
    • 通过采样获取风格编码$x_1$, 将其和$c_2$一起输入到domain1的auto-encoders中,使其能够重构为$\hat{s_1},\hat{c_2}$。
    • 通过采样获取风格编码$s_2$, 将其和$c_1$一起输入到domain2的auto-encoders中,使其能够重构为$\hat{s_2},\hat{c_1}$。

其中,auto-encoders的构造如下图

  • 可以看到,内容编码和风格编码都有各自的Encoder才获得
    • 对于Content Encoder,它由几个跨步卷积紧跟着几个残差块获得
    • 对于Style Encoder,它由几个跨步卷积紧跟着几个全局的池化,并接上了全连接层
  • 之后,作者通过使用AdaIN方法将Content Code和Style Code结合了在一起,具体操作如下
    • 对于Content Code,它继续接几个残差块来不断地传播语义特征
    • 对于Style Code,它通过MLP获得AdaIN的参数,在Content Code传播的过程中结合AdaIN参数
  • 最后,再通过上采样获得最后的重构图像

其中,AdaIN的公式如下

  • z代表卷积后输出的激活值
  • $\mu$代表通道均值
  • $\sigma$代表通道标准差
  • $\gamma, \beta$代表MLP生成的参数

2.2 Optimization

  • 首先,是图像重构损失(Image Reconstruction),如下

    • 即从Domain1中采样数据$x_1$,通过Domain1的Auto-Encoders来提取内容空间和风格空间,再通过Domain1的$G_1$转换为重构后的图像,和原始图像$x_1$做$L_1$损失。
    • 同理,可以推出$L_{recon}^{x_2}$损失。
  • 其次,是隐藏重构损失(Latent Reconstruction)

    • 其中$q(s_2)$是先验分布$N(0, I)$中采样的,$p(c_1)$由$c_1 = E_1^c(x_1)$得到,$x_1 \thicksim p(x_1)$。
    • $L_{recon}^{c_1}$通过$G_2$将$c_1, s_2$转化为Domain2中的图像,并通过Domain2中的内容解码器抽取内容空间,得到重构后的$c_1$的内容空间和原$c_1$做$L_1$损失
    • $L_{recon}^{s_2}$通过$G_2$将$c_1, s_2$转化为Domain2中的图像,并通过Domain2中的风格解码器抽取风格空间,得到重构后的风格空间和原$s_2$做$L_1$损失
    • 同理,可以推出
  • 最后,是对抗损失(Adversarial Loss)

    • 判别器$D_2$尝试区分由$x_1$翻译到$x_2$中的图像与$X_2$中的真实图像
    • 同理,可以推出$D1$的损失$$L{GAN}^{x_1}$$

根据以上的单一损失描述,可以得到本文的总损失如下:

其中,$\lambda_x, \lambda_c, \lambda_s$都是超参数。

2.3 Experiment

  • 验证指标
    • Human Preference,即人们对图像的欣赏度
    • LPIPS Distance,验证翻译后的多样性
    • Inception Score,验证多模态翻译后的真实度
  • 对比模型
    • UNIT
    • CycleGAN
    • CycleGAN*
    • BicycleGAN
  • 数据集
    • Edges <-> Shoes/handbags
    • Animal Image Translation
    • Street Scene Images
    • Summer <-> Winter

下面是挑选的实验中的几张效果图,总之就是比其他方法真实,且多样性好

3. Diverse Image-to-Image Translation via Disentangled Representations

在写这篇论文泛读之前想说的话:本文是本次所有泛读文章中,文笔最好,实验最多的;若是对Image-to-Image Translation中Disentangle做法感兴趣,可以先从这篇读起。

针对什么问题?

本文指出Image-to-Image Translation旨在学习两个视觉域中的映射关系,但存在以下两个挑战

  • 缺乏对齐的训练数据
  • 输入单一的图像,缺乏多样化的输出结果

提出什么方法?

为了生成多样化的输出且不依靠对齐的训练数据,本文将图像嵌入到两个空间中

  • 领域不变的内容空间(Domain-Invariant Content Space),来捕捉共享信息
  • 领域专有的属性空间(Domain-Specific Attribute Space)

如下图所示

  • 其中,CycleGAN将$x, y$映射到分离的隐层空间
  • UNIT将$x, y$映射到共享的隐层空间
  • MUNIT和DRIT将$x, y$分别映射到共享的内容空间,和专有的属性空间

效果怎么样?

大量的实验表明本文提出的方法能够生成多样化和真实的图像,并且能够被运用于多领域的图像翻译来生成多样性的输出。

3.1 Model

本文的目标是在没有成对训练数据的情况下,学习两个视觉领域之间的多模态映射。其中,本文完整的模型如下图所示

  • 针对领域$x, y$,存在各自的内容编码器$E_x^c, E_y^c$和属性编码器$E_x^a, E_y^a$,以及各自的解码器$G_x, G_y$。

  • 在训练过程中,我们以领域$x$中的图像为例。第一步,对于领域$x$中的图像使用$E_x^a$抽取专有属性,再使用$E_y^c$抽取领域$y$中的内容信息,并通过领域$x$的解码器$G_x$将映射到领域$x$中。第二步,使用$E_x^a, E_x^c$抽取映射后图像的内容信息和专有属性,再使用$E_y^c$抽取领域$y$中的内容信息,最后通过领域$x$的解码器$G_x$将其映射回领域$x$,即得到重构后的$\hat{x}$。领域$y$中的图像同理。

  • 在测试过程中,分为两种情况

    • 一是使用随机属性进行测试。输入图像$x$,使用$E_x^c$抽取图像内容,并采样属性信息,通过$G_y$将其映射到领域$y$中。
    • 二是使用给定的图像抽取专有属性。输入图像$x$,使用$E_x^c$抽取领域$x$中的图像信息,再使用$E_y^a$抽取领域$y$中的图像专有属性,最后通过解码器$G_y$生成领域$y$中的图像。
  • 为了取得更好的分解效果,本文还采用了两个策略

    • 参数共享(Weight-Sharing)。基于两个领域共享相同的隐层空间,本文共享了$E_X^c, E_Y^c$的最后几层和$G_X, G_Y$的第一层。在参数共享的策略下,内容表达能够被强制映射到同一个空间,即使得判别器无法判断学习到的内容表达到底属于领域$x$还是领域$y$。

    • 内容判别器(Content Discriminator)。内容的对抗损失如下

本文除了双领域之间的转换,还尝试了多领域之间的转化,我们这里也提一下,模型如下图

模型和双领域转换类型,存在两方面的不同

  • 多了领域编码(Domain Code),其实就是$One-hot$向量,领域编码将会在$E_a$抽取领域的专有属性时嵌入到特征里。
  • 内容判别器不仅需要判别图像是否真实,还需要判别来自哪一个领域,应该就是条件GAN判别器的做法,输入分为图像内容和条件。

3.2 Optimization

除了上述的内容判别器损失,本文还使用了交叉循环一致性损失(Cross-cycle Consistency Loss),使得模型可以将任意图像的内容和目标领域中另一个图像的属性表达结合在一起。

  • 交叉循环一致性损失分为两个步骤:前向翻译和后向翻译,也就是上文模型图的内容,即映射和重构。损失如下

除了内容对抗损失和交叉循环一致性损失,本文还使用了其他损失来确保网络的训练,如下图所示

  • $L_{1}^{recon}$在训练中完成自我重构
  • $L_{KL}$从先验高斯分布中采样,对齐属性的表达
  • $L_{adv}^{domain}$鼓励生成器G在每个领域生成真实的图像
  • $L_1^{latent}$对隐藏属性进行重构
  • $L_{ms}$进一步提升多样性

损失的详情请看原文。

3.3 Experiment

  • 验证指标
    • FID
    • LPIPS
    • JSD and NDB
    • User Performance
  • 对比模型
    • DRIT
    • MUNIT
    • Cycle/Bicycle GAN
  • 数据集
    • Winter -> Summer
    • Cat -> Dog

本文的实验极其丰富,此外还尝试了生成高分辨率的图像,建议大家阅读原文,我下面就稍微贴几张。

4. Image-to-Image-Translation-for-Cross-Domain-Disentanglement

本文的主要思想和上述论文类似,主要不同点在于引入了$GRL$模块使得编码器能分别提取共享信息和专有属性。

针对什么问题?

从场景的固有属性出发,将光照、阴影、视点、物体方向等场景事件分离出来,一直是计算机视觉长期追求的目标。当应用于深度学习时,这允许模型了解实体独立的变量因素,若信息与当前任务无关,那么模型可以沿着特定的变化因素边缘化信息。这样的分解过程对于基于表示学习的任务提供了更加精准的控制。故本文旨在将分解表示和图像翻译结合在一起,以达到更好的效果。

提出什么方法?

本文将分解目标和图像翻译结合,引入了跨域分解的概念,其目的是将域内专有的属性和跨域共享的属性分开。为了做到这一点,本文将交叉领域中图像的表示分解为三部分:交叉领域共有的信息,以及各自领域专有的信息,如下图

  • 图中两个数字领域共享的是没有颜色信息的数字
  • 专有的信息是,数字的背景信息等

效果怎么样?

  • 多样性样本(Sample diversity)。可以基于给定的输入图片输出多样化的结果
  • 跨域检索(Cross Domain Retrieval)。可以根据域之间共享的表示部分在两个域中检索相似的图像
  • 专有域的图像迁移(Domain-specific Image Transfer)。领域专有的特征可以在图像间传输
  • 专有域的插值(Domain-specific Interpolation)。可以在两个图像间插入领域专有的特征。

4.1 Model

本文的模型如下图,左边是图像翻译模块,右边是跨域自动编码器。

  • 首先要分清楚图中各模块的作用,本文对模块的命名不是很友好,建议先看右边的跨域编码器。我们以右图中对于领域$X$的操作为例,领域$X$的编码器$G_e$将图像分解为共享的信息部分$S^x$和专有的属性部分$E^x$;再将$E^x$和来自领域$Y$中由编码器$F_e$抽取的图像的共享信息$E^y$相结合,输入到领域$X$的解码器$F_d$,可以得到重构后的图像$x$。同理对于领域$Y$的操作。
  • 我们再看图中左边的图像翻译。我们以领域$X$操作为例,依然通过$G_e$提取共享信息$S_x$以及专有特征$E^x$。
    • 首先讲一下GRL操作。在黄色虚线那部分,作者认为由于$E^x$中体现的是专有属性,必不能包含领域$Y$中的信息,所以仅仅使用$E^x$不可能生成领域$Y$中的图像。为了强化这种认知,作者用了我看起来很“奇葩”的行为,他尝试使用$E^x$生成领域$Y$中的图像,却有积极的引导特征学习来防止这种情况发生。故作者专门设置了一个GRL(Gradient Reversal Layer)模块来学习与域无关的特性。在网络的前向传播过程中,它作为指示函数;在反向传播的时候,返回相应分支的梯度。
    • 剩下的就是常规操作,将$S^x$和采样得到的属性结合,并通过解码器$G_d$将$x$翻译到领域$Y$中,再通过领域$Y$的编码器提取共享信息和专有属性。

4.2 Optimization

  • 重构隐层空间。用于翻译的解码器接收共享的表示$S$以及用于充当专有属性的随机输入噪音作为输入,在这里本文从8维的噪音向量$z$中采样,这也要求专有属性表示的能够满足合理的分布。为此,作者在这里加入了原始对抗损失,训练使得能从$N(0, I)$中采样接近于$E^x$分布的特征。

  • 重构后的图像必须与解码器的输入匹配,因此需要在原图像和重构后的图像$S^X$中加入$L_1$损失。

  • 为了使得翻译后的图像接近于真实数据分布,还需要引入对抗损失,本文作者采用了$WGAN-GP$的损失,以获得稳定的训练和高质量的输出

  • 最后在跨域自动编码器中,重建的图像需要接近于原图,故有以下损失

损失的详情请查看原文

4.3 Experiment

  • 验证指标
    • 引入某篇论文中相关的读量协议
  • 对比方法
    • BicycleGAN
    • Pix2Pix
  • 数据集
    • MNIST-CD
    • MNIST-CB
    • 3D car models
    • 3D chair models

最后,给一些实验截图,有兴趣的朋友可自行阅读原文。

5. Conditional Image-to-Image translation

针对什么问题?

现有的图像翻译方法缺乏控制翻译结果的能力,从而导致生成的结果缺乏多样性。

提出什么方法?

本文提出了条件图像翻译的概念,即可以在给定的图像条件下,将源于转换为目标域中的图像,如下图示

  • 图a以人脸作为条件,生成指定领域的人脸
  • 图b以背包作为条件,生成指定领域的背包

该模型要求生成的图像必须从目标域中继承条件图像的特定域特征。

效果怎么样?

本文进行了人脸转换、轮廓到背包等实验,并证明了该方法的有效性。

5.1 Model

本文提出的模型如下图所示

  • 上图中有两个编码器$e_A, e_B$以及两个解码器$g_A, g_B$。
    • 编码器用来抽取特征,输入图像后输出两类特征:领域无关特征(Domain-Independent Features)及领域专有特征(Domain-Specific Features)。(感觉名字取得很不友好)
      • 在翻译过程中,领域无关特征会保留。如将男人脸转为女人脸时,会保留脸的边缘,眼睛,鼻子
      • 在翻译过程中,领域专有特征会改变,如脸的头发及风格。(例子也举得不友好)
    • 解码器充当生成器,将源域中图像的领域无关特征和目标域中图像的领域专有特征作为输入,输出属于目标域中的生成图像
  • 在编码器中,编码器网络会被切分成两个分支:一个接上卷积网络用来抽取领域无关特征,另一个接上全连接层用来抽取领域专有特征,通过损失函数的更新实现两分支不同的功能。
  • 现在以领域$X$为例,讲一下模型的流程。
    • 输入图像$x_A$,编码器$e_A$提取领域不变特征$x_A^i$以及领域专有特征$x_A^S$,编码器$e_B$提取图像$x_B$的领域专有特征$x_B^s$。
    • 接着,将结合并输入解码器得到映射到领域中的图像
    • 判别器接收以判断生成数据是否真实。
    • 最后,将通过编码器拆分出的领域不变重构特征以及领域专有重构特征,并将结合输入解码器,以得到重构后的图像
  • 领域$Y$同理。

5.2 Optimization

  • 对抗损失(GAN Loss)。为了保证都能映射到相关的领域中,本文设计了判别器损失如下

  • 双重学习损失(Dual Learning Loss),使得模型最小化重构损失,如下

    ,

    ,

    .

5.3 Experiment

  • 验证指标
    • 本文的都是视觉性实验,通过观赏性来验证模型,且输入图像为64x64大小,怀疑是经费不够
  • 对比模型
    • DualGAN
    • DualGAN-c
    • GAN-c
  • 数据集
    • men->women
    • edges->shoes

下面贴几张模型的效果图

最后,感谢前辈们的付出,Respect!