paper
STIT
: Stitch it in Time - GAN-Based Facial Editing of Real Videos
- 2022 CVPR
- StyleGan 人脸编辑相关
- 视频编辑
Abstract
在人脸图像编辑领域,Gan在latent space内的丰富编码能力已经被广泛应用,然而事实证明,在视频领域仍具有一定困难。高质量的人脸面部视频很缺乏,同时在视频领域需要克服一个基本障碍–时间一致性,我们认为这个障碍大多是人为造成的。源视频是满足时间一致性的,而编辑视频时偏离这种状态的部分原因可能是对编辑pipeline中某些组件的关注度不足。我们使用StyleGan中的人脸对齐网络以及当前先进的神经网络来学习低频函数,并证明了它在提供高度一致性的方面处于领先地位。我们利用以上发现提出了一种框架,用于编辑视频中的人脸。
本篇文章更像是工程上的创新,提出了一种视频编辑的pipeline。
Method
(1) Alignment
作者在这里使用了crop + FFHQ对齐
(2)Inversion
作者做了很多的实验,最终决定:首先通过e4e来完成投影,得到图片的latent code。【这些latent vectors被作为PTI的 ‘pivots’(枢纽)。】接下来finetune训练生成器,训练的损失函数如下:
min
θ
1
N
∑
N
(
L
L
P
I
P
S
(
c
i
,
r
i
)
+
λ
L
2
P
L
L
2
(
c
i
,
r
i
)
)
+
λ
R
P
L
R
.
\min _{\theta} \frac{1}{N} \sum^{N}\left(\mathcal{L}_{\mathrm{LPIPS}}\left(c_{i}, r_{i}\right)+\lambda_{L 2}^{\mathrm{P}} \mathcal{L}_{L 2}\left(c_{i}, r_{i}\right)\right)+\lambda_{R}^{\mathrm{P}} \mathcal{L}_{R} .
θminN1∑N(LLPIPS(ci,ri)+λL2PLL2(ci,ri))+λRPLR.
简述loss为:LPIPS损失+pixel-wise MSE损失+正则化。
代码中如下所示:
#l2损失
l2_loss_val = l2_loss.l2_loss(generated_images, real_images)
#lpips损失
loss_lpips = self.lpips_loss(generated_images, real_images)
#正则化
ball_holder_loss_val = self.space_regularizer.space_regularizer_loss(new_G, w_batch, log_name,use_wandb=self.use_wandb)
Edit
我们证明了我们的方法适用于现有的线性编辑技术。因为StyleGan本身倾向于低频表示(并进一步收到路径长度正则化的激励),它会对附近的latent code应用足够一致的编辑。
e i = G ( w i + δ w ; θ p ) e_{i}=G\left(w_{i}+\delta w ; \theta_{p}\right) ei=G(wi+δw;θp)
Stitching Tuning
作为最后一步,我们必须将编辑过的人脸贴回原始视频。如果只是直接覆盖裁剪面部的原始位置,这种效果是不好的,因为编辑过程通常会导致背景发生变化。以前的工作选择通过使用segmentation mask来限制面部区域的修改,然而这种融合仍然容易导致边界周围不一致。受PTI的启发,我们提出了一种新颖的方案来解决该问题:Stitching Tuning。
对于每个编辑的帧,我们在边缘指定一个segmentation mask,围绕具有双重目标的edited pivot微调生成器。(1)我们希望可以将边界恢复到反演前的值,使它可以和原始背景完美融合(2)我们也希望通过segmentation mask完美的保留我们的编辑结果。
我们首先利用一个分割网络对每一帧画面生成segmentation mask,接下来扩充它们得到expand masks。我们的第一个目标就是融合原始图像的边界:
L
b
,
i
=
L
L
1
(
s
i
⊙
b
i
,
x
i
⊙
b
i
)
\mathcal{L}_{b,i} = \mathcal{L}_{L1}(s_i\odot b_i,x_i \odot b_i)
Lb,i=LL1(si⊙bi,xi⊙bi)
第二步时保留编辑结果:
L
m
,
i
=
L
L
1
(
s
i
⊙
m
i
,
e
i
⊙
m
i
)
\mathcal{L}_{m,i} = \mathcal{L}_{L1}(s_i\odot m_i,e_i \odot m_i)
Lm,i=LL1(si⊙mi,ei⊙mi)
这些loss用于去进一步优化生成器的weights:
m
i
n
L
b
,
i
+
λ
m
L
m
,
i
min \mathcal{L}_{b,i} + \lambda_m\mathcal{L}_{m,i}
minLb,i+λmLm,i
实现细节
在所有的实验中,我们设置:
λ
L
2
P
=
10
,
λ
R
P
=
0.1
,
λ
m
=
0.01
\lambda_{L2}^{\mathrm{P}} =10 ,\lambda_{R}^\mathrm{P}=0.1,\lambda_{m}=0.01
λL2P=10,λRP=0.1,λm=0.01
当使用PTI来tuning模型时,学习率设置为3e-5,每一帧训练80次;当使用stitching来tuning模型时,学习率设置为3e-4,每一帧训练100次。
总结
我们提出了一种新的视频语义编辑的方法,证明了Stylegan可以轻松应用于域外的视频完成编辑、而不损害时间一致性。虽然我们的方法在许多实际场景中效果良好,但它仍然存在一些缺陷,特别是在数据预处理时,ffhq对齐过程中容易在边界存在一些污点(比如毛发),同时在编辑头发长度或者颜色属性时可能会导致不和谐的过度。
Stylegan3优化了“纹理粘连”的问题,我们希望在未来将我们的方法与其结合。
这篇文章虽然没有在模型结构做创新,但是提出的pipeline很好,视频编辑的效果也不错。可以以此作为基础pipeline后续不断优化改进。