第3部分的任务是选择我们应该在每个单元格/像素处关注的部分(2或3)。例如,在与嘴相关的单元/像素处,该网络将告诉我们更多地关注第2部分,因为嘴与身份更相关。这是通过图8所示的一个实验进行的经验证明。
图8。显示AAD层第3部分所学内容的实验。右边的图像显示了整个AAD生成器中不同步数/空间分辨率的第3部分的输出。亮区表示我们应该关注同一性的单元格(即第2部分),黑色区域表示关注第1部分。注意,在高空间分辨率下,我们主要关注的是第1部分。
如此,AAD生成器将能够一步一步地构建最终图像,在每个步骤中,它将确定给定身份和属性编码的当前特征映射的最佳放大方式。
现在,我们有了一个网络,AEI网络,它可以嵌入Xₛ&Xₜ,并以实现我们目标的方式集成它们。我们将AEINet的输出称为Yₛₜ*。
训练损失函数
一般来说,损失是我们希望网络所达到目的的数学公式。训练AEI网有4个损失:
- 我们希望它输出一个真实的人的脸,所以我们将有一个对抗性的损失,就像任何对抗网络。
2.我们希望生成的人脸具有Xₛ的身份。我们唯一能代表同一性的数学对象是zᵢ此,这个目标可以用以下损失来表示:
我们希望输出具有Xₜ的属性。损失是:
作者根据网络应该输出Xₜ(如果Xₜ和Xₛ实际上是相同的图像)的观点,又增加了一个损失:
我相信这最后的损失是必要的,以驱动zₐ实际编码属性,因为它不是像zᵢ预先训练。如果没有它,AEI网可以忽略Xₜ,使zₐ只产生0。
我们的总损失只是以前损失的加权和。
Hear网络
AEI网络是一个不光能够进行面部交换完整的网络。然而,它在保持一致方面还不够好。具体地说,每当目标图像中的某项事物遮挡了最终输出中应该出现的部分面部(如眼镜、帽子、头发或手),AEI网络就会将其移除。这些事物应该仍然存在,因为它与将要更改的标识无关。因此,作者实现了一个称为"启发式错误确认细化网络"的附加网络,该网络具有恢复这种遮挡的单一任务。
他们注意到,当他们将AEI网络(即Xₛ&Xₜ)的输入设为相同的图像时,它仍然没有像图9那样保留遮挡。
图9。当我们输入与Xₛ&Xₜ相同的图像时AEINet的输出。注意头巾上的链子是如何在输出中丢失的。改编自[1]。
因此,他们没有将Yₛₜ*和Xₜ做为HEAR网络的输入,而是将其设为Yₛₜ*&(Xₜ-Yₜₜ*),其中Yₜₜ*是当Xₛₜ和Xₜ是相同图像时AEI网络的输出。这将把HEAR网络指向遮挡未保留的像素。如图10所示。
图10。HEAR网络的结构。改编自[1]。
训练损失函数
HEAR网络的损失函数为:
- 因保留身份而蒙受的损失:
- 不大幅度改变Yₛₜ*的损失:
- 如果Xₛ&Xₜ是相同的图像,那么HEAR网络的输出应该是Xₜ:
总损失是这些损失的总和。
总结
换脸器的效果是惊人的。在图11中,您可以找到它在设计它所依赖的数据集之外的图像上的泛化性能的一些示例(即来自更宽泛的数据集)。注意它是如何在不同和困难的条件下正确工作的。
图11。结果表明,该变换器具有良好的性能。改编自[1]。
- L. Li, J. Bao, H. Yang, D. Chen, F. Wen, FaceShifter: Towards HighFidelity And Occlusion Aware Face Swapping (2019), Arxiv.
论文地址:https://arxiv.org/pdf/1912.13457.pdf