3. Methods
定义Xs为source image,提供identity信息,Xt为target image,提供attribute信息(包括pose、expression、scene lighting和background)
FaceShifter包含2个stage,在stage1中,采用Adaptive Embedding Integration Network(AEI-Net)生成high fidelity face swapping result Y^s,t;在stage2中,采用Heuristic Error Acknowledging Network((HEAR-Net)处理脸部的遮挡问题,进一步生成更精细的结果Ys,t
3.1. Adaptive Embedding Integration Network

如Figure 3(a)所示,stage1的网络结构包含3个部分
- the Idenitty Encoder zid(Xs)(橙色部分),用于提取identity信息
- the Multi-level Attributes Encoder zatt(Xt)(灰色部分),用于提取attrubute信息
-
Adaptive Attentional Denormalization (AAD) Generator(绿色部分),结合identity和attribute信息,生成换脸结果
Identity Encoder
采用最新的人脸识别模型(来自文献[13]),取the last feature vector generated before the final FC layer作为identity embedding
Multi-level Attributes Encoder
Face attributes, such as pose, expression, lighting and background, require more spatial informations than identity.
为了保存attribute信息,取multi-level feature maps作为attribute embedding(之前的工作将attribute信息压缩为single vector)
具体来说,将Xt送入类似U-Net的网络,然后收集decoder部分每一层的feature map作为zatt(Xt)
zatt(Xt)={zatt1(Xt),zatt2(Xt),⋯,zattn(Xt)}(1)
其中zattk(Xt)表示U-Net decoder第k层输出的feature map
值得注意的是,Multi-level Attributes Encoder不需要attribute annotation,能够通过self-supervised training的方式自动提取attribute信息
定义了attribute embedding之后,我们希望换脸结果Y^xt与target image Xt有相同的attribute embedding
Adaptive Attentional Denormalization Generator
这一步将2个embedding zid(Xs)和zatt(Xt)整合起来,用于生成换脸结果Y^s,t
之前的工作采用feature concatenation,会生成模糊的结果,因此我们提出Adaptive Attentional Denormalization(AAD),采用adaptive fashion的思想来解决这个问题
定义hink表示AAD layer的输入,首先对hink,进行instance normalization
hˉk=σkhink−μk(2)
第一步,attributes embedding integration
ADD layer接收zattk∈RCattk×Hk×Wk作为输入,然后对zattk进行卷积得到γattk,βattk∈RCk×Hk×Wk
然后利用γattk,βattk对normalized hˉk进行denormalization,得到attribute activation Ak
Ak=γattk⊗hˉk+βattk(3)
第二步,identity embedding integration
从Xs中提取identity embedding zidk,然后对zidk进行FC得到γidk,βidk∈RCk
以同样的方式对normalized hˉk进行denormalization,得到identity activation Ik
Ik=γidk⊗hˉk+βidk(4)
第三步,adaptively attention mask
对hˉk进行conv+sigmoid运算,学习一个attentional mask Mk,最终利用Mk对Ak和Ik进行组合
houtk=(1−Mk)⊗Ak+Mk⊗Ik(5)
Figure 3 ( c)展示的就是上述所说的三步操作,然后将多个AAD layer组合起来,得到AAD ResBlk,如Figure 3(b)所示
Training Losses
首先设置multi-scale discriminator,得到adversarial loss Ladv
然后定义identity preservation loss Lid
Lid=1−cos(zid(Y^s,t),zid(Xs))(6)
接着定义attributes preservation loss Latt
Latt=21k=1∑n∥∥∥zattk(Y^s,t)−zattk(Xt)∥∥∥22(8)
在训练过程中以80%的比例令Xt=Xs,则定义reconstruction loss Lrec如下
Lrec={21∥∥∥Y^s,t−Xt∥∥∥220if Xt=Xsotherwise(8)
对于AEI-NET,完整的损失函数如下
LAEI−Net=Ladv+λattLatt+λidLid+λrecLrec(9)
其中设置λatt=λrec=10,λid=5
3.2. Heuristic Error Acknowledging Refinement Network
stage1生成的图像能够很好的保持target attributes,但无法保持来自Xt中的遮挡(occlusion)
已有的工作额外训练一个face segmentation network,缺点是需要occlusion annotation,并且对于新的occlusion的泛化性不好

在实验中,Xt是一幅包含occlusion的图像,令Xs=Xt,重构的图像为Y^tt=AEI-Net(Xt,Xt),我们观察到Y^tt本该重构出来的occlusion消失了,于是将Y^tt与Xt进行比对,可以得知图像中哪些地方是occlusion
定义heuristic error如下
ΔYt=Xt−AEI-Net(Xt,Xt)(10)
如Figure 4(b)所示,HEAR-Net本质上是一个U-Net,接收ΔYt和Y^s,t作为输入,输出最终的换脸结果Ys,t
Ys,t=HEAR-Net(Y^s,t,ΔYt)(11)
训练HEAR-Net的损失项包含3项
第1项是the identity preservation loss Lid′
Lid′=1−cos(zid(Ys,t),zid(Xs))(12)
第2项是the change loss Lchg′
Lchg′=∣∣∣Y^s,t−Ys,t∣∣∣(13)
第3项是the reconstruction loss Lrec′
Lrec′={21∥Ys,t−Xt∥220if Xt=Xsotherwise(14)
总体的损失函数为三者之和
LHEAR-Net=Lrec′+Lid′+Lchg′(15)