0%

论文阅读-disentanglement-Disentangling Factors of Variation by Mixing Them

动机

  • 当图像的变化因子被解纠缠,它的表征可以被用来开发各种计算机视觉任务,在图像级别可以实现属性的转移,在特征层可以用来做图像检索或者分类;

  • 之前的解纠缠方法,如autoencoder,GAN相关的一些方法,通常使用手动注释,来自训练数据的标签信息或者外部模型的指导;

  • 对于无监督的方法,如InfoGAN不包含编码阶段,不能将输入图像恢复为解纠缠的表征,更不能进行属性交换与融合;对于beta-VAE,DIP-VAE则建立在VAE的基础上,通过KL散度约束变化因子前后分布之间的相似性,同时特征块是一维的。

贡献

  • 提出一种完全无监督的方法(不使用任何注释或数据域的知识)来学习由变化的解纠缠因子组成的图像表征,它将特征向量分割成多个块,每个块代表一个变化因子,使得用户可以指定特征块去混合和分离图像属性;
  • 提出了一种新的不变性损失函数来鼓励对图像属性和特征块分别进行不变性编码和译码;提出了一种新的分类约束函数,确保每个特征块的表示的是被表示图像一致的且可识别的变化因子;
  • MNISTSpritesCelebA数据集上证明了本文方法的有效性。

本文的方法

本文方法的基本假设是图像可以由一组变化因子来表示,每一个变化因子对应一个语义上有意义的图像属性。此外,每个变异因子都可以使用其自身的特征向量进行编码,称之为特征块。也就是说,图像被简单地表示为有一定顺序的特征块的串联。

网络结构

模型主要包含三部分:两个混合自编码器序列和一个判别器增强不变性,一个分类器避免shortcut问题。

  • Mixing/Unmixing Autoencoders

    文章利用两个混合的自动编码器序列来加强不变性,确保将每个属性编码成一个特征块,不因其他属性的变化而改变,并以类似的不变性方式将每个块解码成其属性。它的工作流程如下:

    • 独立的采样两个样本 \mathbf{x}_{1} \mathbf{x}_{2} ,并分别编码 \mathbf{f}_{1}=\operatorname{Enc}\left(\mathbf{x}_{1}\right) \mathbf{f}_{2}=\operatorname{Enc}\left(\mathbf{x}_{2}\right) ;
    • 混合:定义一个mask \mathbf{m}=\left[m^{1} \mathbf{1}, m^{2} \mathbf{1}, \ldots, m^{n} \mathbf{1}\right] ,其中 m^i \{0,1\} 采样, \mathbf{1}=[1,1,…,1]\in \mathbf{R}^d ,如果 m^i=1 则从 \mathbf{f}_1 否则从 \mathbf{f}_2 选择第 i 个特征块,由此得到新的特征 \mathbf{f}_{1 \oplus 2}=\mathbf{m} \odot \mathbf{f}_{1}+(\mathbb{1}’ -\mathbf{m}) \odot \mathbf{f}_{2} ,其中 \mathbb{1}’=[\mathbf{1},\mathbf{1},…,\mathbf{1}]
    • 译码得到新的图片 \mathbf{x}_{3}=\operatorname{Dec}\left(\mathbf{f}_{1 \oplus 2}\right)
    • 再次编码得到 \mathbf{f}_{3}=\operatorname{Enc}\left(\mathbf{x}_{3}\right)
    • 解混合:通过给定的mask \mathbb{1}’-\mathbf{m} 来替换 \mathbf{f}_3 中来自 \mathbf{f}_2 的特征块,并和对应的来自 \mathbf{f}_1 的部分得到 \mathbf{f}_{3 \oplus 1}=\mathbf{m} \odot \mathbf{f}_{3}+(\mathbb{1}’ -\mathbf{m}) \odot \mathbf{f}_{1}
    • 译码得到最后的图像 \mathbf{x}_{4}=\operatorname{Dec}\left(\mathbf{f}_{3 \oplus 1}\right)

    该部分的损失函数为对所有可能的mask设置进行求和(在训练期间,是随机采样掩码m)计算最小化 \mathbf{x}_1 \mathbf{x}_4 L^2 距离:

    \mathcal{L}_{M}\left(\theta_{\mathrm{Enc}}, \theta_{\mathrm{Dec}}\right)=E_{\mathbf{x}_{1}, \mathbf{x}_{2}}\left[\sum_{\mathbf{m}}\left|\mathbf{x}_{4}-\mathbf{x}_{1}\right|^{2}\right]

    这里的关键思想是混合特征向量 \mathbf{f}_{1 \oplus 2} 的译码和编码应该保留 \mathbf{f}_{1} 的特征块,即来自 \mathbf{f}_{1} 的特征块应该被解码成 \mathbf{x}_3 对应的属性,并将混合了 \mathbf{x}_{1} \mathbf{x}_{2} 属性的中间图像 \mathbf{x}_{3} 重新编码成 \mathbf{f}_{3} 时,应该返回同 \mathbf{x}_{1} 相同的特征块。

  • Discriminator

    为了保证所生成的图像 \mathbf{x}_3 是根据输入数据分布的有效图像,由此增加了一个对抗性项:

    \begin{array}{l} \mathcal{L}_{G}\left(\theta_{\mathrm{Enc}}, \theta_{\mathrm{Dec}}, \theta_{\mathrm{Dsc}}\right)= \sum_{\mathrm{m}} E_{\mathrm{x}_{1}, \mathrm{x}_{2}}\left[\log \left(\operatorname{Dsc}\left(\mathrm{x}_{1}\right)\right)+\log \left(1-\operatorname{Dsc}\left(\mathrm{x}_{3}\right)\right)\right] \end{array}

    在理想情况下,当GAN损失函数达到全局最优时,伪图像的分布应该与真实图像的分布一致,但是在不变性和对抗损失的基础下,可能存在将所有图像属性编码成一个特征块,并保持其余的不变,而此时不变性损失和对抗性损失都是完美优化状态。将此问题称为shortcut问题,使用额外的分类损失来解决。

  • Classifier

    分类器的输入为输入图像 \mathbb{x}_1 \mathbb{x}_2 和生成图像 \mathbb{x}_3 ,分类器判断每个块的生成图像是使用第一个输入图像的特征,还是第二个输入图像的特征生成的:

    \begin{array}{l} \mathcal{L}_{C}\left(\theta_{\mathrm{Enc}}, \theta_{\mathrm{Dec}}, \theta_{\mathrm{Cls}}\right)= \left.E_{\mathbf{x}_{1}, \mathbf{x}_{2}}\left[-\sum_{\mathbf{m}} \sum_{i} m^{i} \log \left(y^{i}\right)+\left(1-m^{i}\right) \log \left(y^{i}\right)\right)\right] \end{array}

    该分类器由n个二类分类器组成,每个二分类器对应一个特征块,决定生成图像 \mathbb{x}_3 是使用第一幅图像对应的特征块还是使用第二幅图像对应的特征块生成的。只有在每个特征块中编码有意义的属性,分类器的损失才能最小化,因此不会出现shortcut问题,因为存在的话则不可能决定使用哪些特征块来生成图像。

所以,总的损失函数为:

\min _{\theta_{\mathrm{Enc}}, \theta_{\mathrm{Dec}}, \theta_{\mathrm{Cls}}} \max _{\theta_{\mathrm{Dsc}}} \quad \lambda_{M} \mathcal{L}_{M}+\lambda_{G} \mathcal{L}_{G}+\lambda_{C} \mathcal{L}_{C}

实现方法

使用类似于DCGAN的网络结构作为编码器、解码器和鉴别器,分类器,使用了在每个卷积层后进行批处理规范化的不带dropoutAlexNet。在MNISTSprites数据集上, \lambda_{M}=\lambda_{G}=\lambda_{C}=1 ,对于CelebA \lambda_{M}=30 ;本文将特征向量(即encoder的最后一层)分为8个具有相同大小的特征块,每个特征块代表一个属性,具体特征块的大小为:MNIST为8,SpritesCelebA为64,观察到减小CelebA的特征块的大小会导致生成质量下降。

部分实验结果

MNIST的实验结果

Sprites的实验结果

CelebA的实验结果

对于每个子图,从最上面的行提取一个特征块,从最左边的列提取其余的特征块,不同的子图显示了不同特征块的作用,标题显示与该特征块关联的属性。