赞
踩
论文:
https://personal.utdallas.edu/~xxg061000/TVCG2021.pdf
相关视频:
https://www.youtube.com/watch?v=KflYlxiia5Q
图3。我们的统一框架概述。
G
p
o
s
e
G_{pose}
Gpose 表示三维头部姿势序列的生成器,
D
p
o
s
e
D_{pose}
Dpose表示鉴别器。面形状参数由PGFace生成。
对话人脸生成是计算机视觉和图形学中一个非常有吸引力的研究课题。除了有趣之外,它还有广泛的应用,例如,游戏动画、3D视频通话和AR/MR的3D化身。大多数现有作品[1]、[2]、[3]、[4]、[5]、[6]、[7]、[8]、[9]都建议从静态图像生成会说话的人脸。由于缺乏三维人脸模型数据集,只有少数研究[10],[11]在三维形状中生成会说话的人脸。通过最先进的方法合成的会说话的人脸在整个语音过程中通常具有头部模型的静态和固定姿势。然而,在任何现实的谈话场景中,一个人的头部都会相应地旋转和平移。如果3D会说话的脸不能合理地移动,那么它对观众来说就不真实了。在这项工作中,我们将相应的头部运动命名为头部姿势序列。卷积神经网络(CNN)已被用作3D人脸形状生成的编码器,以获得最先进的结果[11]。VisemeNet[10]采用长-短记忆(LSTM)网络生成3D对话人脸,而无需任何头部运动。需要注意的是,所有这些传统方法在生成3D对话人脸时都没有考虑头部姿势,这严重影响了合成结果的真实性。头部姿势序列在不同的视频场景中有所不同,但与人的身份密切相关,如图2所示。因此,生成动态姿势动画,是真实感3D说话人头部合成的关键步骤。
Zhou等人[12]使用人脸标志作为中间表示,生成具有新头部姿势的对话人脸视频。然而,由于头部姿势和面部表情是两种截然不同的特征,因此使用地标位置来表示它们无法完全实现个性化头部姿势动力学。我们在Sec 5.3.3. 的实验比较中显示了这种基于里程碑的方法的缺点。
在当前的论文中,我们介绍了一个全自动生成框架,用于音频驱动的具有姿势动力学的3D对话人脸(见图1)。为了给不同的人分配不同的头部姿势,我们通过为每个视频提供相应的头部姿势序列和面部形状来构建特定于人的头部运动数据集。在推理阶段,首先使用深度语音对输入音频进行编码[13],然后将提取的特征输入两个拟定模块:头部姿势生成对抗网络(PoseGAN)模块和姿势引导面部(PGFace)生成模块。如图3所示,PoseGAN模块用于提取具有旋转和平移参数的交叉模态头部姿态序列。使用带有头部姿势参数的PGFace模块生成与音频相对应的面部形状参数。通过组合音频、头部姿势序列和面部形状参数,可以合成最终的具有姿势动力学的三维说话人脸。
基于这个特定于人的头部运动数据集,我们提出了一种端到端的统一方法来合成一个自然的3D会说话的头部。我们工作的主要贡献有三个方面:
人脸动画研究的一个分支是从音频合成人脸运动,并生成2D视频或3D模型作为输出。
基于音频的2D人脸动画Chung等人[1]提出了一种编码器-解码器CNN模型,用于生成合成大小的说话人脸视频帧。Fan等人[14]将深度双向LSTM(BLSTM)应用于他们的说话头系统。Vougioukas等人[4]使用带有两个鉴别器的时间GAN来生成嘴唇运动和面部表情。Suwajanakorn等人[3]提出使用递归神经网络学习从原始音频特征到嘴形状的映射。Chen等人[9]设计了一个合成嘴唇运动的网络,并提出了一种相关损失来同步嘴唇运动和语音变化。Xie和Liu[15]使用动态贝叶斯网络对发音器的运动进行建模。Jalalifar等人[2]使用递归神经网络和条件GAN[16],[17]生成了以地标为条件的真实人脸。Zhou等人[5]利用GANs的非纠缠视听表示实现了任意主题对话人脸生成方法。Zhou等人[12]利用人脸标志点的变形生成具有新头部姿势的对话人脸视频。
我们合成的具有个性化姿势动力学的3D说话头可以作为这些2D视频合成方法的重要中间步骤,如Sec 5.1 中的视频应用程序所示。
基于音频的3D人脸动画。Taylor等人[18]提出的一种深度学习方法使用滑动窗口预测器,该预测器学习从音素标签输入序列到口腔运动的映射。Zhou等人[10]提出了一种基于LSTM网络架构的音频解决方案的自动实时lip同步。Karras等人[19]提出了基于情绪状态语音音频输入的实时、低延迟3D人脸动画。Liu等人[20]使用数据驱动回归器,用DNN声学模型对语音数据和嘴部形状之间的相关性进行建模。源受试者的动态面部表情在[21]中转移到目标受试者。面传输基于三维面网格的多线性模型[22],该模型将几何变化空间参数化。最近,Cudeiro等人[11]提出了语音操作角色动画(VOCA),它以随机语音信号作为输入,真实地生成各种成人面孔。VOCA首先将输入音频转换为DeepSpeech[13]特征,然后使用不同主题的热编码来训练3D人脸网格的偏移量。FLAME[23]模型用于生成其最终面形状。
对于头部姿势生成方法,Sadoughi等人[24]、[25]、[26]从三个方面重点研究了用合成语音合成会话主体的头部动作:1)如何使用合成语音的平行语料库[24];2) 如何使用话语功能生成有意义的头部姿势[25];3)如何使用条件GAN为同一输入语音生成多个头部姿势实现[26]。Jonell等人[27]主要关注如何根据对话者的条件为对话主体生成头部姿势。
然而,这些工作都没有考虑个性化的头部运动,并且这些工作的结果高度依赖于3D人脸数据集的质量,这在现实生活中很难收集。与这些作品不同的是,我们的方法侧重于为不同的个性生成头部姿势。我们的方法的应用使用3D人脸模型为真实的人生成真实的对话人脸视频。
基于文本的面部动画相对较少的工作是直接从输入的文本生成面部模型。Sako等人[28]描述了一种基于文本的技术使用隐马尔可夫模型(HMMs)生成逼真的听觉语音和嘴唇图像序列。Anderson等人[29]提出了一种表达性视觉文本到语音(VTTS)系统,其中人脸使用主动外观模型(AAM)建模。Kumar等人[30]提出了一种基于文本的唇形同步生成方法,该方法采用延时LSTM生成与音频同步的嘴关键点。Hong等人[31]描述了一种视觉语音合成器,该合成器使用文本流提供一种虚拟面对面通信形式。
在这项工作中,我们重点关注从音频生成3D人脸,通过使用文本到语音引擎(例如Tacotron 2[32])将我们的框架转换为文本驱动的模型是可能的,我们将其留给未来的工作进行进一步的深入探索。
3D人脸数据集。一些数据集[33]、[34]、[35]用于静态3D人脸模型分析,一些数据集[36]、[37]、[38]、[39]、[40]侧重于动态3D人脸模型和表情。此外,还有几个包含扫描人脸模型的数据集。Cheng等人[41]发表了包含180名受试者的4D捕获的4DFAB数据集,Fanelli等人[42]提出了一个3D视听语料库,该语料库使用实时3D扫描仪包含大量的音频-4D扫描对。Cudeiro等人[11]提出的VOCASET包含255个句子的3D扫描,整个头部和颈部。在本文中,我们用大量的人脸模型和对应于语音的头部姿势序列构建了我们的数据集。
这项工作的动机是从野外的任何数据中学习和提取人类会说话的面孔的姿势特征。然而,使用高速面部扫描仪捕获真实世界的3D面部数据需要大量人力。这种3D捕获的另一个缺点是,这些类型的数据通常由一个设计良好的环境捕获,环境中有几十个摄像头和投影仪。因此,在这种情况下,参与者可能会无意中抑制其自然的头部运动和面部表情。相比之下,在网上提供的大多数真实场景视频中,人们通常表现出更自然的行为,这可以更好地服务于我们的研究目的。为此,我们提倡通过分析野外视频来收集动态3D语音数据,而不是执行劳动密集型3D面部捕捉。
本文中使用的视频总长度约为5小时,是从Agarwal等人[43]使用的视频中收集的,用于深度假检测。我们的数据集包含来自450个视频剪辑的535400多帧,以及音频、3D头部姿势参数和3D面部形状参数。
图4。高斯滤波。蓝色曲线表示原始节距参数。橙色曲线用于平滑的节距参数。
头部姿势参数我们采用OpenFace[44]生成3D头部姿势参数。头姿势∈ R6由以弧度表示的欧拉角( pitch θ x , yaw θ y , roll θ 2 \text { pitch } \theta_{x} \text {, yaw } \theta_{y}, \text { roll } \theta_{2} pitch θx, yaw θy, roll θ2)和以毫米表示的三维平移向量t表示。如果我们天真地应用OpenFace在原始视频中检测到的头部姿势序列,会在某些高频区域造成不稳定的效果,并且头部运动会显得不令人满意。因此,我们提出了一种高斯滤波方法,在整个时间维度上对头部姿态参数进行滤波,并产生令人信服的结果。具体来说,我们的高斯滤波方法有效地消除了异常的头部抖动。如图4所示,在视频剪辑的时间维度上测量头部姿势的俯仰参数。在高频区域(例如,红色矩形中的区域),变桨参数的曲线平滑,如橙色曲线所示。高斯密度和头部姿势滤波函数如下所示:
F
(
x
)
=
1
2
π
δ
e
−
1
2
δ
2
x
2
p
(
i
)
=
∑
k
=
i
−
m
i
+
m
p
(
k
)
F
(
k
−
i
)
,
其中 i i i 是帧索引, 2 m 2m 2m是过滤器的窗口大小, p ( i ) p(i) p(i)表示第 i i i 帧的头部姿势。据摄像机参数、帧连续性检测和帧数,将原始视频分为多组视频片段。头部姿态集中统一在同一坐标系下(在每个小视频)。
3D人脸参数。深度3D人脸重建方法[45]在多个数据集上实现了最先进的性能。因此,我们应用此方法生成人脸参数
[
α
i
d
,
α
e
x
p
]
\left[\alpha_{\mathrm{id}}, \alpha_{\mathrm{exp}}\right]
[αid,αexp]。3DMM[33]、[46]面模型定义如下:
S
=
S
ˉ
+
B
i
d
α
i
d
+
B
exp
α
exp
S=\bar{S}+B_{\mathrm{id}} \alpha_{\mathrm{id}}+B_{\exp } \alpha_{\exp }
S=Sˉ+Bidαid+Bexpαexp
其中 S ˉ \bar{S} Sˉ 是平均脸部形状 ; B i d B_{\mathrm{id}} Bid and B e x p B_{\mathrm{exp}} Bexp 身份和形状的PCA基; α i d ∈ \alpha_{\mathrm{id}} \in αid∈ R 80 \mathbb{R}^{80} R80 和 α exp ∈ R 64 \alpha_{\exp } \in \mathbb{R}^{64} αexp∈R64 是相应系数。
捕获三维人脸模型通常是一项非常重要的任务。我们提供了一个统一的框架来获得与视频帧对应的精确三维人脸模型,以及头部姿势序列。这个特定于人的数据集支持我们的全自动框架,用于生成3D会说话的人脸。所提出的数据收集和准备方法也可以很容易地扩展到在线提供的其他人身份的视频。
从输入音频源生成相应的3D头部姿势序列可能非常困难。根据不同的说话场景和个人的说话习惯,人们在说同一个单词时并不总是表现出相同的头部姿势序列。Ginosar等人[47]提出了一种基于音频的2D身体姿势生成方法。具体而言,他们从音频输入中获取角色手臂和手势的2D地标,证明了GAN在跨模态姿势生成中的有效性。
头部姿势序列的生成也是一项跨模态预测任务。受Ginosar等人[47]的启发,我们建议使用PoseGAN生成相应的头部姿势序列。为了确保生成的头部姿势序列与输入音频之间的相关性,我们引入了条件GAN来确定属于特定角色的头部姿势序列的输出,并引入了鉴别器来确定头部姿势序列的真实性。这里,我们将256帧设置为单位序列。
我们注意到,传统的姿势丢失不能保证相邻序列之间的一致性以及每个序列中头部姿势的连续性。为了解决这些问题,提出了一种嵌入方法和运动损失函数。实验结果以秒为单位。5.5.3表明,利用初始姿态损失约束和运动损失函数,成功地解决了两个不连续问题。
图5。从输入音频估计头部姿势的PoseGAN结构。
如图5所示,我们在U-net[48]结构之前开发了一个增强的CNN 编码器,以构建生成器G,并将初始头部姿势p嵌入输入层和U-net输出层,以约束生成的头部姿势序列的初始位置和方向。
初始头部姿势 p p p 和音频 x x x 同时输入到生成器G中,如图5所示。在训练阶段,采用第一帧的姿势作为头部姿势序列中的初始姿势 p p p 。在推理阶段,采用相同身份的静止姿势作为 p p p ,生成第一个头部姿势序列。这里,我们使用平均姿势来近似静止姿势。将前一序列的最后一个姿态作为 p p p ,用于后续的头部姿态序列生成。初始姿势保证相邻序列之间的一致性。
当直接使用姿势损失的L2范数(在等式3中定义)时,输出头部姿势序列呈现异常的不稳定性,因为帧之间没有连续运动的约束。我们引入运动损失来保证输出头部姿势序列的运动连续性。
姿势和运动的L2范数损失函数定义如下:
L
pose
=
∥
p
−
y
^
0
∥
2
2
+
∑
t
=
0
T
−
1
∥
y
t
−
y
^
t
∥
2
2
L
p-motion
=
∑
T
−
1
∥
(
y
t
−
y
t
−
1
)
−
(
y
^
t
−
y
^
t
−
1
)
∥
2
2
,
其中 T T T 是帧数,设置为256, y y y 表示数据集中的真实头部姿势序列, y ^ \hat{y} y^ 表示生成器G生成的头部姿势序列,p表示初始头部姿势。生成器的损耗函数定义如下:
L L 2 = α L pose + β L p-motion \mathcal{L}_{L^{2}}=\alpha \mathcal{L}_{\text {pose }}+\beta \mathcal{L}_{\text {p-motion }} LL2=αLpose +βLp-motion
其中 α 和 β 是控制姿势和运动损失之间平衡的权重。
采用CNN结构,通过将生成的头部姿势序列 G ( x , p ) G(x, p) G(x,p) 与音频 x x x 组合作为输入,来辨别真假头部姿势序列。判别器 D D D 的损失函数定义如下:
L
G
A
N
=
arg
min
G
max
D
E
x
,
y
[
log
D
(
x
,
y
)
]
+
E
x
,
p
[
log
(
1
−
D
(
x
,
G
(
x
,
p
)
)
]
其中,生成器G尝试最小化该目标函数,而鉴别器D尝试将其最大化。
最终的PoseGAN损失函数定义如下:
L PoseGAN = λ L G A N + L L 2 \mathcal{L}_{\text {PoseGAN }}=\lambda \mathcal{L}_{\mathrm{GAN}}+\mathcal{L}_{L^{2}} LPoseGAN =λLGAN+LL2
图6。面的下部(以红色显示)用于计算顶点级别损失的更高权重。
面部形状参数由深度3D面部重建方法生成[45]。生成的身份参数 α i d \alpha_{id} αid 对于每一帧可能是不同的。这些差异是由相机参数、扬声器位置和不准确的表达形状引起的。对于示例[11],传统的方法只有通用的表达式参数 α e x p \alpha_{exp} αexp,这不适合我们的情况。受VOCA网络[11]的启发,我们提出了一种姿势引导的面部形状生成方法(PGFace),该方法包括头部姿势参数作为输入,用于估计面部形状的变化以弥补差异。我们将音频特征 x ∈ R 29 × 16 \mathbf{x} \in \mathbb{R}^{29 \times 16} x∈R29×16 和头部姿势参数 p ∈ R 6 \mathbf{p} \in \mathbb{R}^{6} p∈R6 拼接后作为网络的输入。网络输出是相应的面形状参数 [ α i d , α exp ] \left[\alpha_{\mathrm{id}}, \alpha_{\exp }\right] [αid,αexp]。
根据我们的实验,音频显示出与脸部下部更高的相关性,如图6所示。我们采用了一个基于顶点的损失函数,它在人脸模型的下半部分附加了一个10倍的权重m。损失函数可正式表示如下:
L
shape
=
E
v
,
f
[
∥
(
v
−
f
)
⊙
m
∥
2
]
L
s-motion
=
E
v
,
f
[
∥
(
(
v
next
−
v
)
−
(
f
next
−
f
)
)
⊙
m
∥
2
]
其中 v v v 表示真实人脸顶点, f f f 表示生成的人脸顶点; v n e x t v_{next} vnext和 f n e x t f_{next} fnext 分别表示下一帧中 v v v 和 f f f 的值;如果顶点 i i i 位于面的下部,则遮罩 m [ i ] = 10 m[i]=10 m[i]=10,否则 m [ i ] = 1 m[i]=1 m[i]=1 。 ⊙ \odot ⊙ 是元素积操作。运动损失 L s − m o t i o n \mathcal{L}_{s-motion} Ls−motion 表示序列中相邻帧之间的顶点位移。PGFace的损失函数定义如下:
L PGFace = μ 1 L shape + μ 2 L s-motion \mathcal{L}_{\text {PGFace }}=\mu_{1} \mathcal{L}_{\text {shape }}+\mu_{2} \mathcal{L}_{\text {s-motion }} LPGFace =μ1Lshape +μ2Ls-motion
其中μ1和μ2平衡形状和运动损失。
使用Adam[49]在Nvidia GTX 1080 Ti上对头部姿势和面部形状的网络进行训练,批量大小为64,学习率为10−4.我们使用7:1:2的train-val-test分割来分割数据集。在PoseGAN培训部分,我们首先集中并规范化头部姿势,如数据集部分所述。我们视频的帧速率是30 fps。我们使用一个256帧的滑动窗口作为训练样本,输出是一个256帧的头部姿势序列。邻居之间的滑动距离为五帧。在训练期间,α和β分别设置为1和10。λ的值为0.01。总共培训了50个时代。选择验证集上性能最佳的模型。在PGFace训练部分,网络通过50个历元的音频特征和头部姿势参数学习。PGFace使用的窗口大小为16,输出为第8帧中的面形状。μ1和μ2的值分别为1和10。
个性化训练:对于数据集中的现有角色,我们只需要使用该角色的训练数据即可实现个性化训练。对于数据集中未包含的任何角色,该新人的2-3分钟视频将作为学习指南,然后,我们微调我们的PoseGAN和PGFace网络以生成个性化结果。具体来说,我们首先基于原始数据集对模型进行训练,并获得预先训练的模型参数。给定参考视频,我们使用Sec的方法。3提取每帧的音频特征、头部姿势和面部参数。然后,通过对预训练模型进行微调,利用参考数据对个性化模型进行训练。对于微调步骤,每个网络需要20个历元,批量大小为16。我们保持两个网络的其他参数不变。
视频应用:我们的框架生成具有个性化姿势动力学的3D对话人脸,为视频合成提供高级指导。可以采用现有的vid2vid技术将渲染图像映射到照片逼真的视频中。通过遵循Chan等人的方法[50],我们训练了一个生成器,该生成器将我们渲染的对话人脸作为输入,并训练了一个用于视频合成的多尺度鉴别器。生成器的目标是生成更真实的图像,并欺骗鉴别器将其视为真实图像。
如图7所示,当人不在我们训练的数据集时,我们首先微调网络以生成新的渲染人脸图像。然后,采用vid2vid方法[50]将渲染图像映射到相应的视频。
略
我们将我们的PoseGAN与以下四种头部姿势生成方法进行比较。
平均头部姿势:大多数2D对话人脸视频[1]、[4]、[5]、[54]、[55]、[56]、[57]、[58]、[59]和3D对话人脸[10]、[11]、[18]、[19]、[20]、[21]、[21]、[22]只能生成固定的头部姿势。在大多数情况下,头部在说话时处于静止位置和方向(见图2)。因此,我们使用平均姿势与这些2D和3D方法进行比较。
随机选择的头部姿势序列:快速生成头部姿势序列的另一种简单方法是从数据集中随机选择头部姿势序列。这种选择是合理的,因为它们是真正的头部姿势。这种随机方法广泛应用于2D对话人脸方法[3]、[6]、[7]、[8]。虽然[3]中使用了重定时技术来提高真实性,但该方法仍然是一个随机姿势序列,无法基于语音生成新的头部姿势。因此,这种随机选择的头部姿势序列不对应于输入音频。
最近邻(NN)姿势:此方法选择的头部姿势最接近音频特征空间中的真实头部姿势。对于每个测试音频,选择训练集中具有最接近音频特征的头部姿势序列作为最终输出。
卷积神经网络(CNN):传统的CNN[11]在3D人脸形状生成方面取得了最先进的结果。一些2D对话人脸方法[53]也使用CNN在视频中生成头部姿势。例如,Yi等人[53]使用LSTM在他们的对话人脸视频中生成头部姿势序列。然而,头部姿态估计是一项跨模态预测任务。我们发现,不使用GAN生成的头部姿势序列趋向于接近静态头部姿势。很难将美国有线电视新闻网的结果视为真实的头部姿态序列。
为了将我们的PoseGAN架构与所有这四条基线进行比较,我们在测试数据集中使用视频,并计算每种方法的 L 2 L_2 L2 姿势距离和运动距离。在表2中,随机方法和每种形式的最近邻法在准确性方面明显较差。这是因为这两种方法对头部姿势没有约束。平均头部姿势法的距离较低,因为说话人在说话时大多处于静态头部姿势。与CNN的距离是最低的,因为只有姿势损失和运动损失用于训练。如前所述,使用CNN生成的头部姿势序列往往是静态的。我们的PoseGAN的L2距离结果优于除CNN外的大多数基线方法。这是意料之中的,因为我们将GAN损耗添加到生成器中,以生成更真实、更合理的头部姿势序列。
本研究致力于基于输入音频生成具有个性化姿势动力学的3D对话人脸。我们的3D人脸数据库包括音频、头部姿势序列和人脸形状参数。训练PoseGAN生成头部姿势序列,初始头部姿势损失约束和运动损失函数,保证头部姿势序列的长期连续性。PGFace网络用于姿态相关的人脸形状校正,使人脸形状渲染结果更真实。我们的实验验证了我们的方法的有效性,并且我们合成的3D说话头看起来比其他方法更真实。
局限性:采用了基于图像的深度3D面部重建方法[45]。然而,使用这种三维人脸建模方法会导致一些问题。如图13(a)所示,由于纹理信息在特定视频中是固定的,因此生成的3D人脸无法闪烁,而原始视频中的人正在闪烁。
通过遵循Chan等人的方法[50],我们将渲染面扩展到真实视频。但是,对于某些大头姿势,这种vid2vid方法无法正确生成相应的人脸图像。我们可以在图13(b)所示的面部部位看到明显的变形。
未来的工作:在本文中,我们采用基于图像的三维人脸重建,这会导致诸如身份形状和纹理不准确等问题。在未来,我们希望建立一种基于视频的三维人脸重建方法,使我们的训练数据更加准确。此外,在演讲过程中,会说话的人只向听众传达面部信息。在未来的工作中,我们希望构建一个语音驱动的三维人体动画,包括人脸、身体和手。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。