论文阅读:Neural Voice Puppetry: Audio-driven Facial Reenactment

  • 这篇文章就简单记录一下

概览

在这里插入图片描述
这个是方法概览, 输入是视频和音频, 输出是配音之后的视频, 有些像Wav2lip, 语音提取用了deepspeech,框架分为两个部分, 一个是generalized, 一个是specialized, 通用的网络会从音频学到一个所有人共享的audio expression speech, 然后会把得到的audio expression 转变为3D face model 需要的参数。

方法

  • 这里很有意思的一点是我以为这个是可以对所有人生效的, 但是这个更像是一个先train后才能用的网络, 只是train的要求没有很多的数据。
  • 因为每个人说话的风格不一样, 所以建立了针对每个目标序列计算的person-specific expression spaces, 为了确保多个人之间的通用性,作者创建了 a latent audio-expression space,该空间由所有人共享。从这个 audio-expression space,可以映射到person specific expression space,从而实现重演。
  • 上面的怎么理解呢。 我想的就是说这个其实像个分类器, 你映射到一个音频表情的空间, 然后网络选好要映射到目标的哪个人上, 这样得到的3d model 参数就不会说不能用了

Audio2ExpressionNet

在这里插入图片描述
这个分为两个小网络,一个是单帧的一个注意连续, 这里注意1维卷积的应用, 看起来还是挺有用的, 比如一个输入维度是 (batch, seq, input_dim), pytorch的参数有方向k, 还有输出的维度, 这个变换的是input_dim, seq的维度由k决定, 输入前要变换seq和input_dim的位置, 输出就变成(seq, change_seq, change_dim)

Person-specific Expressions

一个通用的网络怎么变为特定的3D model 呢? 这里需要learn 一个person-specific audio-expression blend shape basis, 把它约束在统计人脸模型的通用blend shape basis上(也就是说通过通用模型可以得到expression的一些东西, 这个部分是通用的,然后就是从这个expression映射到person的参数, 这里提到一个人的audio-expression blendshapes是其他基础blendshape的线性组合, 是3DMM吗?)最后得到的就是N个76*32的矩阵, N就是train sequences, 76是generic blendshapes的数量

  • 这样在测试的时候选择哪个目标演员, 就选它对应的参数映射就行了。

  • 训练 Audio2ExpressionNet 的时候有针对于3d model的mask

在这里插入图片描述

具体的渲染过程是这样的:

image-20211128182156372

这个渲染有两个部分, 一个是从栅格化的3d model变为对应的RGB图片, 然后通过另一个网络融合起来。

Guess you like

Origin blog.csdn.net/landing_guy_/article/details/121594556