文章地址

本文通过通过两个 branch,在不同区域的网络用了不同的 loss 监督,分离了人脸中与 ID 有关和与 ID 无关的 feature。编码器解码器结构使得整个网络是端到端的,同时也能手动调整 feature,使用解码器重建修改后的人脸图像。

Pipeline

Fig 2.

如 Fig 2. $E_{\theta_{enc}}$ 是编码器,$E_{\theta_{dec}}$ 是解码器,保证了网络是端到端的。编码器提取的 feature 会送给两个分支:$B_{\theta_{\tau}}$ 和 $B_{\theta_{\mathcal{P}}}$ 。其中,$B_{\theta_{\tau}}$ 会分离出与 ID 有关的 feature,而 $B_{\theta_{\mathcal{P}}}$ 会分离出与 ID 无关的 feature。

其中,$E_{\theta_{enc}}$ 是预训练的 Inception-ResNet,$B_{\theta_{\tau}}$ 和 $B_{\theta_{\mathcal{P}}}$ 是三层卷积和 AvePool,$E_{\theta_{dec}}$ 的具体参数可以见文章中的 Table 4.

Loss

Fig 3.

如图 Fig 3. 为了两个分支能够正确的分离 feature,我们在不同部分的网络有不同的 loss 对网络进行监督。其中:

$\mathcal{L}_{\mathcal{I}}$ 是带 $W$ 的交叉熵(也就是说这里画的 FC 层并不是最后输出 label 的 FC 层,是倒数第二层的 FC)。交叉熵能保证 feature 能够识别出 label,保证了 feature 是与 ID 有关的,反传时候只更新 $B_{\theta_{\tau}}$ 部分和 $E_{\theta_{enc}}$ 部分。

$\mathcal{L}_{\mathcal{I}}^{adv}$ 是带 $W$ 的交叉熵,类似GAN 中的 discriminator,但是反向传播的时候只更新最后两层 FC 的参数。

$\mathcal{L}_{\mathcal{H}}$ 是用来欺骗分类器的 loss。我们考虑,如果我们需要 ID 无关的 feature,首先我们越不能分辨 label 越好,所以应该类似负的交叉熵 $\mathcal{L}_{\mathcal{H}}=\sum_{j=1}^{N_{ID}}{u^{j}_{\mathcal{I}}\log{y_{\mathcal{P}}^{j}}}$,其中 $u^{j}_{\mathcal{I}}$ 是我们期望的 feature 的 GT,注意我们这里是负的交叉熵。其次 feature 的分布不应该是类似 one-hot 的那种,而是应该均匀的分布(类似 label smoothing 的感觉)。所以 $u^{j}_{\mathcal{I}}=\frac{1}{N_{ID}}$,所以 $\mathcal{L}_{\mathcal{H}}=\frac{1}{N_{ID}}\sum_{j=1}^{N_{ID}}{\log{y_{\mathcal{P}}^{j}}}$ 。注意这里反向传播时,只更新 $B_{\theta_{\mathcal{P}}}$ 除去最后 FC 的网络部分和 $E_{\theta_{enc}}$ 部分。

$\mathcal{L}_{\mathcal{X}}$ 是最后端到端的 loss,就是解码器输出图片的 MSE。它反向传播并更新整个网络所有的参数

我们的最终 loss 是 $\mathcal{L}=\lambda_{\tau}\mathcal{L}_{\mathcal{I}}+\lambda_{\mathcal{P}}(\mathcal{L}^{adv}_{\mathcal{I}} + \mathcal{L}_{\mathcal{H}}) + \lambda_{\mathcal{X}}(\mathcal{L}_{\mathcal{X}} + \widetilde{\mathcal{L}}_{\mathcal{x}})$,其中超参的设置为:$\lambda_{\tau}=1$,$\lambda_{\mathcal{P}}=0.1$,$\lambda_{\mathcal{X}}=1.81\times10^{-5}$。

Train

为了能够更好的学习和表示,我们对数据进行增强,具体操作是向两个分支算出来的 feature 加入随机的高斯噪声。我们刚刚的 $\widetilde{\mathcal{L}}_{\mathcal{x}}$ 就是引入噪音后,解码器生成的图像的 MSE loss。

数据集是 MS-Celeb-1M,但似乎已经没了……

初始学习率是 0.01 每过 10 个 epoch 就下降 10%。

Experiment

人脸识别

如表 Table 1.
Table 1.

人脸属性识别

我们与 ID 无关的 feature 是可以进行人脸属性识别的,feature 后面接一个线性 SVM 可以识别诸如性别,发色,笑容 balabala

人脸编辑

如图 Fig 9. 因为分离了 ID 有关与 ID 无关的 feature,我们可以手动调整 feature 来编码出同 ID 下,不同属性的人脸照片,也可调整相同属性下,不同 ID 的人脸照片。并且这种编辑是可以通过调整编辑的权重,平滑进行的。
Fig 9.

消融实验

如表 Table 2. 所示,Baseline 为仅留下 $E_{\theta_{enc}}$ 的表现结果,文章说这俩比较起来还行。如果训练集变成 WebFace,那么 D2AE 效果会更好,造成结果不同的原因可能是数据集间的 bias,和 WebFace 太小。
Fig 4.

可视化

如图 Fig 4. 与 ID 有关的 feature 呈现聚类的性质,而与 ID 无关的 feature 呈现了均匀的分布。
Fig 4.

文章目录