论文阅读:HeadGAN: One-shot Neural Head Synthesis and Editing

介绍

提出了HeadGAN, 一种适用于头部动画和编辑的基于GAN的 one-shot方法。 这里特别的是使用了PNCC特征, 同时使用了3DMM。HeadGAN可以:

  1. 以20fps的速率运行实时reenactment系统
  2. 面部视频压缩和面部重建的有效方法
  3. 面部表情编辑方法
  4. 新颖的view分析方法, 包括正面化

相关工作提到:Warp-Guided GANs is a more recent work that uses 2D facial landmarks and 2D warps to animate an image, MarioNETte tries to solve this problem, by proposing a method for landmark transformation that adapts the driving landmarks to the reference head shape

方法

3D面部表示

为了转移驱动人的表情, 同时保留source身份的face geometry, 利用3dmm中的先验知识, 给定T帧的视频帧, y 1 : t y_{1:t} y1:t= { y t ∣ t = 1 , . . . . . T y_t|t=1, .....T ytt=1,.....T}, 3Dmm fitting阶段产生了相机参数 c 1 : T c_{1:T} c1:T,形状参数 p 1 : T p_{1:T} p1:T, 以及 p t = [ p t i d T ; p t e x p T ] T p_t=[p_t^{idT}; p_t^{expT}]^T pt=[ptidT;ptexpT]T的序列. 对于每帧t, 我们获得两种shape 参数, 一个是 p t i d ∈ R n i d p_t^{id}∈R^{n_{id}} ptidRnid身份有关的参数, 另一个是表情参数 p t e x p ∈ R n e x p p_t^{exp}∈R^{n_{exp}} ptexpRnexp,表示面部变形.
这里3DMM fitting阶段使用密集的3d points, 是用RetinaFace回归的, 这个模型是在WIDER FACE上预训练的. 给定源身份的参考图 y r e f y_{ref} yref, 对其进行3dmm fitting, 获得形状参数 p r e f i d p_{ref}^{id} prefid, p r e f e x p p_{ref}^{exp} prefexp, 相机参数 c r e f c_{ref} cref, 附录A有3dmm fitting
算法

对于每帧t, 计算出的3d mesh公式如下:

在这里插入图片描述
其中 s t : s_t: st:
在这里插入图片描述
x ˉ ∈ R 3 N \bar x ∈R^{3N} xˉR3N 是平均形状, U i d U_{id} Uid是正交化的bias, U e x p U_{exp} Uexp是来自LSTM morphable 表情正交化bias(论文A 3d morphable model learnt from 10,000 faces.). 然后再就是渲染出3d 脸部的representation, x t = R ( s t , c t ) x_t=R(s_t, c_t) xt=R(st,ct) c是相机参数, 这个 x t x_t xt是一张类似PNCC的RGB图. 同样也渲染出 x r e f x_{ref} xref, 这是从参考图像 y r e f y_{ref} yref中恢复的3D表达,如下图所示.

在这里插入图片描述

综上, 给定驱动视频 y 1 : t y_{1:t} y1:t以及一个源参考图 y r e f y_{ref} yref, 数据预处理阶段恢复了一系列图片 x 1 : T x_{1:T} x1:T,这些x描述了从驱动视频提取到的并且可以应用到源图片的面部几何信息, 同时还有 x r e f x_{ref} xref

声音特征

我们将音频信号分成T个部分 a 1 : T a_{1:T} a1:T,其中每个部分对应于长度为T的驱动视频的第 y t y_t yt帧。
然后,我们将音频特征提取应用于2L长度的音频窗口。 a t − L − 1 : t + L = { a t − L − 1 , . . . . a t , . . . . a t + L } a_{t-L-1:t+L} = \{a_{t-L-1},....a_t,....a_{t+L}\} atL1:t+L={ atL1,....at,....at+L},以帧t为中心,得到一个特征向量 h t ( a ) h_t^{(a)} ht(a), 它包含了过去和未来的时间步骤的信息. 我们采用(论文An opensource python library for audio signal analysis.)来提取低层次的特征,如MFCCs,信号能量和熵,从而得到一个特征向量 h t ( a L ) h^{(aL)}_t ht(aL) R 84 R^{84} R84
然后,我们使用DeepSpeech从每个音频部分提取字符级别的logits。这结果是2L个logits,串联后得到一个特征向量 h t ( a H ) h^{(aH)}_t ht(aH) R 2 L ∗ 27 R^{2L*27} R2L27。我们最终的音频特征向量为 h t ( a ) h^{(a)}_t ht(a) = [ h t ( a L ) T ] [h_t^{(aL)^T}] [ht(aL)T]; h t ( a H ) T ] T h_t^{(aH)^T}]^T ht(aH)T]T ∈R300,对于L = 4。

HeadGan 框架

HeadGan的生成器有两种模式, 一种是从驱动视频视频和参考图片中提取出的3d 面部表达, 一种是来自驱动者的音频.
给定(1) x t − k : t x_{t-k:t} xtk:t, 即从t帧里得到的3d 脸部表达, 和过去的k=2帧channel级的连接起来, (2)参考图片 y r e f y_{ref} yref及其对应的 x r e f x_{ref} xref, 以及声音特征 h t ( a ) h_t^{(a)} ht(a), 生成器可以将这些输入的特征变为真实的图片, 公式如下:

在这里插入图片描述
生成器由两个子网络组成:一个密集流网络F和一个渲染网络R, 整个网络架构如下图:
在这里插入图片描述

Dense flow network F

事实证明将视觉特征于所需的头部姿态对齐更有意义, 这反映在 x t x_t xt中, 即驱动视频的特征. F可以学习到流 w t w_t wt来扭曲视觉特征. 将参考图片和其对饮的3d 特征( y r e f , x r e f y_{ref}, x_{ref} yref,xref)通过encoder提取三个空间尺度的特征 h ( 1 ) , h ( 2 ) , h ( 3 ) h^{(1)}, h^{(2)}, h^{(3)} h(1),h(2),h(3)来表示原图片identity的信息.
然后一个decoder预测出流 w t w_t wt, 这是被驱动视频的3d特征 x t − k : t x_{t-k:t} xtk:t引导生成的. x t − k : t x_{t-k:t} xtk:t被注入F, 通过SPADE blocks , 这个block 是论文(Semantic image synthesis with spatially-adaptive normalization.)里面的, 结构大致如下:

在这里插入图片描述

理想情况下, 当应用于参考图片 y r e f y_{ref} yref时, 这个密集流应该产生一个warped image对应于源person, 然后和驱动视频中3d特征 x t x_t xt有同样的头部姿态和表情, 通过在每个视觉特征map上应用流场, 我们获得了warped 视觉特征, h ˉ t ( 1 ) , h ˉ t ( 2 ) , h ˉ t ( 3 ) \bar h_t^{(1)}, \bar h_t^{(2)}, \bar h_t^{(3)} hˉt(1),hˉt(2),hˉt(3),以及warped 参考图片 y ˉ t r e f \bar y_t^{ref} yˉtref, 所有这些都取决于驱动视频第t帧的姿势。

Rendering network

编码器接收 x t − k : t x_{t-k:t} xtk:t作为输入然后对其进行卷积下采样, 然后由交替的SPADE和AdaIN层组成的解码器生成需要的帧 y ~ t \tilde y_t y~t. 这些自适应归一化层能够将2d 的特征图通过SPADE blocks注入到渲染网络中, 也可以将1d 的音频特征通过AdaIN注入到渲染网络中.
与SPADE的原始工作相反,所有SPADE层的条件输入都是相同的分割图(segmentation map)向下采样以匹配每个层的空间大小,我们利用了多个空间尺度的视觉特征图 h ˉ t ( 1 ) , h ˉ t ( 2 ) , h ˉ t ( 3 ) \bar h_t^{(1)}, \bar h_t^{(2)}, \bar h_t^{(3)} hˉt(1),hˉt(2),hˉt(3) y ˉ t r e f \bar y_t^{ref} yˉtref作为SPADE blocks的调制输入。
我们将相同的音频特征向量 h t ( a ) h_t^{(a)} ht(a)传递给所有空间尺度的AdaIN块。解码器还配备有用于上采样的PixelShuffle layers,来自论文(Real-time single image and video super-resolution using an efficient sub-pixel convolutional neural network) , 这有助于提高生成样本的质量。

Discriminators D and Dm.

图像鉴别器接收合成的一对 ( x t ; y ~ t ) (x_t; \tilde y_t) (xt;y~t),或一个真实的一对 ( x t ; y t ) (x_t; y_t) (xt;yt),并且学习如何区分它们。我们使用第二个鉴别器Dm,它专注于嘴部区域。除了真实的 y t m y^m_t ytm或生成的 y ~ t m \tilde y^m_t y~tm裁剪的嘴部区域, 该网络以音频特征向量 h t ( a ) h^{(a)}_t ht(a)为条件,在空间上进行复制(spatially replicated),然后与裁剪后的图像进行channel-wise级联。

Training Objective.

构成生成器的网络F和R联合优化。我们通过应用感知和像素损失(perceptual and pixel losses) L F V G G , L G V G G L_F^{VGG}, L_G^{VGG} LFVGG,LGVGG, L F L 1 , L G L 1 L_F^{L1}, L_G^{L1} LFL1,LGL1上面结构图中所示(红色箭头)。还有其他的损失作者在附录中讲了.

在这里插入图片描述

数据集

  • VoxCeleb

猜你喜欢

转载自blog.csdn.net/landing_guy_/article/details/120777136