论文题目:Learning Residual Images for Face Attribute Manipulation(CVPR 2017)

介绍

人脸属性操作问题的目标是根据跟定的属性值修改一张人脸图像。本文提出了一种学习“残差图像” (原始图像和操作后图像的不同之处) 的方法,而不是操作整个图像。我们的方法基于生成式对抗网络,由 两个图像变换网络和一个判别网络组成。变换网络负责图像操作,判别网络负责区分生成的图像和真实 图像。我们还使用双重学习来使变换网络彼此相互学习。

生成模型,例如生成式对抗网络 (GANs) 和变分自动编码器 (variational autoencoders, VAES),具 有强大的生成图片的能力。GAN 生成的图片清晰而且真实,但它不能编码图片,因为在生成图片时使用的是随机噪声。VAE 能编码图片,但是图片通过 encoder-decoder pipeline 后往往会损害重建图片的质量。对于人脸属性操作来说,细节十分重要,因此直接使用 GAN 或 VAE 都难以解决这个问题。

另一种方法是将人脸属性操作视为一个变换过程,将原始图片作为输入,输出经过变换的图片,而不使用具体的 embedding。这种转换过程可以使用前馈卷积神经网络有效地实现。对于人脸表情操作而言,前馈网络必须修改与属性有关的区域而保持无关区域不变,这很难做到。

对于人脸属性操作问题,本文提出了一种基于残差图像学习的方法,它结合了 GAN 的生成能力和 feed-forward network 的高效性。与学习整张被操作的图片相比,只学习残差图像避免了冗余的与属性无关的信息。为了改进效率,我们采用两个 CNN 来建模两种相反的操作 (例如去除眼镜和添加眼镜),并在训练阶段应用双重学习 (dual learning) 策略。

1.png

本文的工作可概括如下:

  • 提出学习残差图像来进行人脸属性操作。
  • 设计了一种双重学习机制来同时学习两种相反的属性操作。
  • 采用 landmark detection accuracy gain 作为指标在数量上展示提出的方法针对“去除眼镜”的有效性。

相关工作

Radford 使用深度卷积生成式对抗网络 (DC-GANs) 为广义图片生成学习一个从物体到场景的分层表示,Chen 介绍了一个对 GAN 的信息上理论的扩展来学习 disentangled representations;Larsen 将 VAE 与 GAN 结合起来学习一个 embedding,高层次的抽象视觉特征可以被很简单地修改。

我们的工作与左旺孟等人的工作相独立,不同之处在于:

  • 我们的方法使用残差图像来生成图片。
  • 我们的方法通过共享同一个判别器将两个相反的操作建模到一个结构中。
  • 我们的方法不需要后处理。

残差图像学习

本文的方法结构如下图所示。对每一个人脸属性操作,有两个图像变换网络 $G_{0}$ 和 $G_{1}$,和一个判别网络 D。$G_{0}$ 和 $G_{1}$ 分别模拟主操作和镜像操作。$D$ 将参照图片和生成图片分为三类。

2.png

生成式对抗网络

GAN 的 $\text { minimax game }$ 表达式如下:

$$ \min _{G} \max _{D} V(D, G)=E_{x \sim p_{\text {data}}(x)}[\log D(\mathbf{x})]+E_{z \sim p_{z}(z)}[\log (1-D(G(z)))] $$

$G$ 和 $D$ 的参数在训练过程中被迭代更新。基于 GAN 框架,我们为人脸属性操作重新设计了生成器和判别器。

图像变换网络

图像变换网络 $G_{0}$ 和 $G_{1}$ 模拟一对相反的操作,给定负属性值的人脸图片 $x_{0}$ 和正属性值的人脸图片 $x_1$,经过学习的网络 $G_{0}$ 和 $G_{1}$ 对图片进行变换操作产生残差图像 $r_{0}$ 和 $r_{1}$。然后输入图像与残差图像相加产生最终的输出 $\tilde{x}_{0}$ 和 $\tilde{x}_{1}$:

$$ \tilde{x}_{i}=x_{i}+r_{i}=x_{i}+G_{i}\left(x_{i}\right), i=0,1 $$

为了使残差图像稀疏,使用 $\text{L-1}$ 正则:

$$ \ell_{p i x}\left(r_{i}\right)=\left\|r_{i}\right\|_{1}, i=0,1 $$

判别网络

给定带有已知属性标签 0 和 1 的真实图片 $x_{0}$ 和 $x_{1}$,我们将变换后的图片 $\tilde{x}_{0}$ 和 $\tilde{x}_{1}$ 视为标签为 2 的另一类,损失函数为:

$$ \ell_{c l s}(t, p)=-\log \left(p_{t}\right), t=0,1,2 $$

其中 $t$ 是图片的标签,$p_t$ 是第 $t$ 个标签的 softmax 概率。

感知损失 (perceptual loss) 被广泛用于度量不同图片之间的差别,我们也使用这个损失来使变换后的图片与输入图片有相似的内容。另 $\phi(x)$ 表示 D 中第三层的激活,则感知损失定义如下:

$$ \ell_{p e r}(x, \tilde{x})=\|\phi(x)-\phi(\tilde{x})\|_{1} $$

给定判别网络 $D$,对图片变换网络 $G_{0}$ 和 $G_{1}$ 的 GAN 损失为:

$$ \ell_{G A N}=\left\{\begin{array}{ll}{-\log \left(D\left(G_{i}\left(x_{i}\right)\right)\right)} & {i=0} \\ {-\log \left(1-D\left(G_{i}\left(x_{i}\right)\right)\right)} & {i=1}\end{array}\right. $$

双重学习

3.png

对于给定的负属性值的图片 $x_{0}$,我们让它通过变换网络 $G_{0}$,然后将获得的图片 $\tilde{x}_{0}=G_{0}\left(x_{0}\right)$ 喂到变换网络 $G_{1}$ 里,产生的图片为 $\hat{x}_{0}=G_{1}\left(G_{0}\left(x_{0}\right)\right)$。$\hat{x}_{0}$ 应该与 $x_{0}$ 具有相同的属性值。相似的过程也被应用到 $x_{1}$ 上,在这个阶段中变换网络的损失函数可表达为:

$$ \ell_{d u a l}\left(\tilde{x}_{i}\right)=\left\{\begin{array}{ll}{-\log \left(1-D\left(G_{1-i}\left(\tilde{x}_{i}\right)\right)\right)} & {i=0} \\ {-\log \left(D\left(G_{1-i}\left(\tilde{x}_{i}\right)\right)\right)} & {i=1}\end{array}\right. $$

损失函数:

将上面的损失函数结合到一起,可以得到 $G_{o} / G_{1}$ 的损失函数如下:

$$ \ell_{G}=\ell_{G A N}+\ell_{d u a l}+\alpha \ell_{p i x}+\beta \ell_{p e r} $$

其中 $\alpha$ 和 $\beta$ 是正则项的权重。
$D$ 的损失函数为:

$$ \ell_{D}=\ell_{c l s} $$

数据集

在实验过程中使用两个数据集:

  • $\text{CelebA Dataset}$:包含超过 200000 张名人图片,每张带有 40 个二进制属性。从中选出 6 个属性用于测试:galsses,mouth-open,smile,no-beared,young,male。对每个属性,随机挑出 1000 张正属性类和 1000 张负属性类用于测试。
  • $\text{LFW Dataset}$:Labeled face in the Wild,只用于测试方法的泛化能力。

实现细节

$G_0,G_1$ 和 $D$ 的实现细节如下表所示。我们保持 $\beta = 0.1\alpha$ 并对局部人脸属性操作 (glasses,no-beared,mouth-open,smile) 设置 $\alpha = 5e − 4$,对全局人脸属性操作 (male,yound) 设置 $\alpha = 1e − 6$。所有网络的权重通过均值为 0,标准差为 0.02 的正态分布初始化;在训练阶段使用 Adam optimizer;变换网络和判别网络的学习率均设置为 $2e-4$;$G_0$ 和 $G_1$ 同时进行训练。

4.png

实验

局部与全局属性操作

我们对我们的方法与之前最先进的 VAE-GAN 方法在 CelebA 数据集上进行了比较。从下图的结果可以看出,VAE-GAN 模型改变了许多细节,如发型、肤色和背景等,而我们的方法则保留了大部分细节。

除此之外我们对 mouth-open、smile 这种属性操作进行了分析。这两种操作都会导致下巴的移动。从下图 4(c,d) 中,我们可以观察到下巴的运动被图片变换网络捕捉到了。

全局属性 young 和 male 是最有挑战性的任务。在下图 4(f) 中,从 young 到 old 的操作会导致更多的皱纹,相反的操作则会加深头发的颜色。从 4(e) 的残差图中可以看出,male 与 female 的主要差别在于胡子,嘴唇和眼睛的颜色。残余图中对于这两种操作的强烈的反应是分散到整张图片内的,而不是集中于某个局部区域。

5.png

在 LFW 数据集上的结果如下图所示:

6.png

模型简化测试 (Ablation Study)

我们的模型包括两个关键的部分:残差图像学习和双重学习,接下来将通过实验来验证它们的有效性。我们将模型进行修改,构造两个模型:一个打破变换网络中的 identity mapping,强迫网络学习生成整张图片;另一个打破 data-feed loop;其他网络设置保持不变。使用 glasses 属性操作进行测试,结果如图 6 所示。

7.png

可以观察到:没有了残差图像学习,模型生成的图片质量大大降低,产生了许多噪声和一些奇怪的特征;没有了双重学习,同样使图片质量降低。双重学习的有效性可以从两个方面来解释:

  • 两个生成器中生成的图片增加了训练样本的数量。
  • 在双重学习过程中,$G_{1}(G_{0}(x_{0}))$ 和 $G_{0}(G_{1}(x_{1}))$ 的 ground truth images 是已知的,这使得两个生成器的训练都变得更加容易。

综上所述,可以得出结论:残差图像学习和双重学习都有利于属性操作的效果。

视觉特征去相关

用 end-to-end 的方式训练一个分类器不能保证分类器能精确地识别出目标视觉特征,尤其当数据集具有偏向性时。当分析 CelebrA 数据集时,我们发现 male 和 no-beared 这两个属性具有强烈的相关性。

使用具有相关性的特征训练出的分类器可能将盲点传播回生成模型中,这可能导致生成器产生具有相关性的视觉特征。为了证明我们提出的方法能较少地收到相关特征的影响,我们在 female 人脸图片上添加 beard。我们与 VAE-GAN 方法的属性操作结果进行了比较,如图 7 所示:

8.png

可以看出,操作后的图片头发长度明显比原始图片短,这可以解释为:大多数 male 人脸都是短头发, 这个视觉特征被与 beard 特征相关联,VAE-GAN 模型错误地将 short-hair 特征视为 beard 特征出现的征兆。然而,我们提出的方法成功地不关联这两个特征,变换后的图片中头发长度几乎与原始图片相同。 我们将这个吸引人的特性归功于残差图像学习和双重学习,它们使得此方法专注于 attribute-specific 区域。

去除眼镜后的人脸关键点检测

我们使用人脸关键点检测的准确率来衡量去除眼镜的有效性。关键点检测算法是基于 $Dlib$ 实现的 ERT 方法,我们在 300-W 数据集上训练探测模型。一共有三个测试集:$D1$ 包含戴眼镜的图片,$D0$ 包含不戴眼镜的图片,$D1_m$ 中的图片与 $D1$ 中的相同,但是是通过本文提出的方法经过去除眼镜操作后得到的。测试结果如下表和下图所示:

9.png

10.png

根据表中的数据可知:从第一列到第二列,探测误差升高,这说明戴眼镜对于关键点检测是有影响的;然而,$D1_m$ 上的误差比 $D1$ 上的低得多,这说明了使用去除眼镜操作对眼部关键点检测的好处;比较表中第二行中的结果,我们发现 $D1$ 和 $D1_m$ 上的误差几乎相同,这说明人脸其余部分几乎保持不变。

参考文献

[1] Learning Residual Images for Face Attribute Manipulation

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