20220505文献翻译9:从视频中学习语音驱动的3D对话手势

Posted Yang SiCheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20220505文献翻译9:从视频中学习语音驱动的3D对话手势相关的知识,希望对你有一定的参考价值。

Learning Speech-driven 3D Conversational Gestures from Video

摘要

我们提出了第一个从语音输入中自动联合合成虚拟人物的同步三维对话身体和手势,以及三维面部和头部动画的方法。我们的算法采用了一个CNN架构,该架构克服了(leverages)面部表情和手势之间的内在关联性。对话性身体手势的合成是一个多模式的问题,因为许多类似的手势可以合理地(plausibly)伴随着相同的输入语音。为了在这种情况下合成合理的身体手势,我们训练了一个基于生成对抗网络(GAN)的模型,该模型在与输入的音频特征配对时测量生成的三维身体运动序列的合理性。我们将以新的方式创建一个巨大的语料库,其中包括超过33小时的来自说话人的在逃视频的身体、手和脸部的注释。为此,我们将最先进的单眼(monocular)方法用于三维身体和手的姿势估计,以及密集的三维脸部表现捕捉到的视频语料库。通过这种方式,我们可以比以前的算法在数量级上训练更多的数据,这些算法诉诸于复杂的演播室运动捕捉解决方案,从而训练出更有表现力的合成算法。我们的实验和用户研究表明,我们的语音合成的全三维角色动画具有最先进的质量

Fig. 1

1 简介

虚拟人物是许多计算机图形应用中的一个重要组成部分,如游戏或共享虚拟环境。传统上,他们的生成需要结合复杂的动作捕捉记录和动画专家的繁琐工作来生成合理的外观和动作。特别的挑战包括会说话的化身的对话身体姿态的动画。
以及伴随着音频传达说话人的情感和举止(mannerisms)的面部表情。传统上,这两种动画都是通过手动指定的关键帧动画来实现的。直接从语音中制作面部表情和身体姿态动画的自动化工具将大大减轻所需的努力,并由非专业人士来创作更高质量的人物动画。进一步说,这种工具将使用户能够驱动实时体现自己的对话式虚拟化身,在共享的虚拟空间里,用与语音相协调的面部表情和身体姿态为他们制作动画。在心理语言学的研究中,已经表明用户界面上的化身具有可信的面部表情、身体姿态和语言,被认为是更可信和值得信赖的[55]。也有研究表明,非语言行为对于传递信息非常重要[17],它能让人看到说话者的内部状态,而且语言和身体姿态都是紧密相关的,是由同一个内部过程产生的[35, 23] 。

之前关于语音驱动的虚拟人物的工作仅限于通过基于启发式规则[33]或基于学习[12, 29, 28]的方法来生成共同语言的身体姿态,或者生成与语音相协调的面部表情[22]和头部动作[45]。许多基于学习的方法使用在研究中捕获的运动和手势训练数据,使用复杂的运动捕捉系统[27,29,28,51,12,13,2]。这样一来,就很难记录大量的数据,这些数据反映了不同受试者的手势变化,或者只有在长期观察中才能发现的受试者特有的特异性。

我们提出了第一个联合生成手臂、躯干和手的同步三维姿态的方法,以及一个简单但富有表现力的三维脸部和头部动作的方法,用于从语言中生成一个动画人物。它基于以下的贡献:

  • (1)我们提供了一种新的方法,从超过33小时的野外谈话视频中捕捉带注释的三维训练数据,这些数据之前被用于学习纯粹的二维建模模型,而没有面部表情合成[16]。为了创建ground truth,我们在这些视频上应用了单眼野外三维身体姿势重建[36]、三维手姿势重建[58]和单眼密集三维脸部重建[15]。这些注释将被提供。
  • (2)我们引入了一个新的CNN架构,它有一个用于面部表情、身体和手势的共同编码器,学习它们之间的内在关联,并有三个解码器头来共同生成面部、身体和手的逼真运动序列。除了面部表情和头部姿势与音频相协调外,它还能合成可信的对话手势,如人类用来强调口语的节拍手势,以及反映情绪和个人对话风格的手势。请注意,像以前的工作一样,我们的目标不是生成与语义有关的手势,或者像手语那样携带特定的语言含义。
  • (3) 身体手势的合成是一个多模式的问题;几个手势可以伴随着同一个话语。为了防止在训练中收敛到平均姿态,并提高表达性手势的合成,Ginosar等人[16]的先前2D工作使用了对抗性训练[18]。我们对这项工作进行了改进,不仅设计了一个可以衡量合成的身体和手势是否自然的判别器,而且还设计了在修复地面真实音频特征时合成的手势的可信度。我们通过广泛的用户研究来评估我们的方法,参与者认为我们的结果比基线方法更自然、更贴切。

2 相关工作

之前的工作主要是研究从音频输入中合成身体手势和面部动画的问题。问题设置不同,因为对话手势合成是一个多模式的设置,而不是语音驱动的脸部动画,后者的视元到音元的映射更为独特。在这篇论文中,我们研究了它们的组合。

语音驱动的身体手势和头部动作 现有技术可分为基于规则和数据驱动的方法。Cassell等人[6]和Cassell[5]的开创性工作表明,通过使用一套手动定义的规则,虚拟人物的自动身体手势和面部表情的生成可以与音频同步。其他工作将语言学分析[7]纳入一个可扩展的基于规则的框架。Marsella等人[33]开发了一个基于规则的系统,通过分析文本输入和音频的内容来生成身体姿态(和面部表情)。然而,这类方法严重依赖对语言特定规则的研究,不能轻易处理非音素的声音

为了克服这些问题,不依赖语言领域的专家知识的数据驱动方法已经引起了越来越多的关注。Neff等人[37]提出了一种方法,利用人工注释的视频语料,在给出口语文本和表演者的手势特征的情况下,创建一个针对个人的手势脚本。然后,该手势脚本被用来为一个虚拟头像制作动画。Levine等人[29]使用复杂的动作捕捉设置来捕捉45分钟的训练数据,并训练了一个隐马尔可夫模型来根据实时的语音语调选择最有可能的身体姿态片段。后来, Levine等人[28]认为语气词(prosody)并没有携带足够的信息来确定确切的手势形式。相反,语音通常是对肢体手势特征的编码,如速度和空间范围。基于这一假设,他们首先使用隐性条件随机场(CRF)的变体将听觉信号映射到潜在的运动学特征空间。然后,通过强化学习的方法,用学到的模型来选择一个手势序列。同样,Mariooryad和Busso[32]使用动态贝叶斯网络(DBN)的组合来合成语音中的头部姿势和眉毛运动。Sadoughi等人[44]通过将话语功能建模为DBN的额外约束来扩展这种方法。Sadoughi和Busso[43]也使用贝叶斯网络,通过结合语音信号、语义话语功能和原型动作来生成身体姿态。Bozkurt等人[3]使用了隐性半马可夫模型(Hidden Semi-Markov Model),该模型可以同步地学习语音到手势的关系。Sadoughi等人[45]使用一种基于学习的方法,可以利用文本到语音(TOS)系统来合成头部运动,并提出了一种可以解决训练期间真实和合成语音不匹配的方法。Chiu和Marsella[9]训练一个条件限制波尔兹曼机(CRBM)来直接从语音中合成身体姿势的序列。Chiu和Marsella后来提出使用高斯过程潜变量模型(GPLVM)来学习低维嵌入,从给定的语音输入中选择最可能的身体姿态[10]。

近年来,深度学习在从大数据中自动学习鉴别性特征方面显示了其优越性。双向LSTM被Takeuchi等人[50]、Hasegawa等人[21]以及Ferstl和McDonnell[12]用来从语音中合成身体姿态。同样地,Haag和Shimodaira[19]使用LSTM从语音中合成头部运动。Sadoughi和Busso[42]提出了一种基于GAN的方法来合成说话代理人的头部运动。Kucherenko等人[24]提出了一个去噪自动编码器来学习身体运动的低维表示,然后将其与音频编码器相结合,在测试时进行音频到手势的合成。Lee等人[27]提供了一个同步身体-手指运动和音频的大规模运动捕捉数据集,并提出了一种基于音频和手臂位置作为输入来预测手指运动的方法。Ferstl等人[13]使用了一个多目标对抗模型,并使用了一个分类器,该分类器被训练为预测运动中的姿态阶段,以提高手势合成的质量。

最近的工作也试图纳入基于文本的语义信息,以提高来自语音的身体姿态的生成质量[25, 56]。Alexanderson等人[2]提出了一个基于规范化流的生成模型,可以从语音输入中合成三维身体姿态。他们的系统可以从相同的音频中生成多个合理的手势,并允许对其合成进行一定程度的控制,例如手势的速度和对称性。Ahuja等人[1]表明,一个基于学习的混合模型可以被训练成在多个说话者之间进行手势风格转移。相比之下,我们的重点是找到使用单一框架从音频中预测所有相关身体模式的最佳解决方案,即使以特定人的方式训练,这也是一个具有挑战性的问题。

深度学习方法通常需要大规模的音频和三维运动对的训练库,而这些训练库通常是由复杂而昂贵的演播室运动捕捉系统捕获的。为了解决这个问题,Ginosar等人[16]提出了基于学习的语音驱动的二维上半身和手势模型的生成,该模型来自大规模的野外视频集。通过这个解决方案,他们能够从社区视频中建立一个数量级的大型语料库。同样,Yoon等人[57]的方法也是通过OpenPose[4]从TED演讲视频中提取的地面真实二维姿势进行训练。他们的模型采用了一个双向LSTM将音频输入转化为二维人体姿势的序列。此外,他们使用了一种提升的方法来推导出合成角色的三维运动约束。在我们的工作中,我们为Ginosar等人[16]的数据集提供了额外的三维脸部、手部和身体注释。此外,与现有的方法相比,我们不仅能识别三维上身和手势,还能识别说话人的头部旋转和面部表情。

语音驱动的面部表情 目前的技术可以分为。1)基于脸部模型的技术[31, 39, 8, 52, 53, 11]和2)非模型的技术。基于模型的方法将表情的参数化,并从音频输入中估计这些参数。然而,非基于模型的方法直接将音频映射到脸部网格的三维顶点[22]或嘴部的二维点位置[49]。在Karras等人[22]中,一个LSTM被用来学习这种映射,而在Suwajanakorn等人[49]中,最终的照相学(photorelistic)结果被生成。Cudeiro等人[11]使用DeepSpeech语音识别[20]来产生音频信号的中间表示。然后将其回归到FLAME表面模型的参数中[30]。Taylor等人[52]使用一种现成的语音识别方法将音频映射成音素转录。训练一个网络来把音素翻译成参考脸部模型的参数。Tzikrakis等人[53]使用深度典范注意扭曲(DCAW)将音频翻译成表情混合型。Pham等人[39]直接将音频映射到混合型参数,尽管他们的结果存在强烈的抖动。虽然目前的音频驱动的面部表情技术产生了有趣的结果,但它们中的大多数都是在背景噪音最小的受控演播室中记录的语音数据的结果[31, 39, 22, 8, 52, 11]。Cudeiro等人[11]在处理不同的噪音水平时显示了有趣的结果。然而,目前还没有一种音频驱动的技术可以在野外估计高质量的面部表情,以及估计头部动作和身体对话姿态。我们的方法使用面部模型作为第一类。与其他方法相比,我们采用了简单有效的方法,通过直接回归从社区视频的大型语料库中捕获的面部参数,共同学习三维头部和面部动画与身体姿态。

3 数据集创建

3.1 从视频中创建3D注释

以前的语音驱动动画合成工作的一个主要瓶颈是产生足够多的训练数据。许多方法都是通过多机位运动捕捉系统对面部和全身运动进行复杂的室内捕捉。因此,我们提出了第一个方法,从带有音频的大型社区视频中提取三维面部动画参数、三维头部姿势、三维手部和三维上身手势的自动注释。通过这种方法,可以更容易地制作出跨越长时间窗口和不同对象的大型训练语料。

特别是,我们使用了Ginosar等人[16]的数据集,该数据集的特点是有10个被试者(如脱口秀主持人)以站姿和坐姿对着镜头说话的144小时的野外视频。从这些视频中,Ginosar等人提取了手臂和手的二维键点,以及二维稀疏面部地标。他们使用这些注释的一个子集来训练一个网络,该网络只从语音中合成二维手臂和手指的运动。虽然显示了语音驱动动画的潜力,但他们的方法没有合成三维身体运动;没有合成躯干的三维运动,如倾斜,这是个人演讲风格的一个要素;也没有预测三维头部姿势和详细的面部动画参数。为了训练一种与输入语音共同合成更完整的三维动画参数的方法,我们用最先进的三维性能捕捉和单眼三维身体和手部姿势估计算法对数据集进行了分析,见Fig. 2。

Fig. 2

对于单眼密集三维人脸性能的捕捉,我们使用基于优化的追踪器[15],预测参数化人脸模型的参数,特别是。64个表达式混合系数,80个身份几何学系数,80个脸部反照率的PCA系数,27个入射光照参数,以及6个三维头部旋转和位置的系数。脸部追踪器希望将经过严格裁剪的脸部边界框作为输入。我们使用Saragih等人[47]的人脸追踪器来提取边界框,并对边界框的位置进行时间上的筛选;我们在实验中发现,这比使用Ginosar数据集中默认的二维人脸地标进行边界框追踪更稳定。为了训练我们的算法,我们只使用面部表情系数θFace∈R64和头部旋转系数R∈SO(3)(我们使用身体姿势追踪器发现的三维头部位置)。

对于三维身体捕捉,我们需要一种对身体自我遮挡、其他人的遮挡、桌子对身体的遮挡(脱口秀主持人的坐姿)或摄像机画面不显示身体的遮挡,甚至站立姿势的遮挡,都有很强的鲁棒性。因此,我们使用XNect[36]单眼三维姿态估计方法来处理这些情况。具体来说,在每个视频片段中,我们从XNect的第二阶段提取13个上身关节的三维身体关键点预测(头部2个,每个手臂3个,颈部1个,脊柱1个,髋部/骨盆3个)。这导致了身体姿势的39维表示K∈R39。我们将脸部跟踪器预测的头部旋转R与身体关键点K一起归入一个42维的矢量θBody∈R42。

在进行手部追踪时,我们采用了Zhou等人[58]的最先进的单眼3D手部姿势估计方法。为了确保良好的预测结果,我们首先使用Ginosar等人[16]提供的二维手部关键点注释对手部图像进行了严格的裁剪,然后将其送入三维手部姿势预测器。由于手部可能被遮挡或超出视线,我们还采用了一种现成的立方插值方法来填补可能遗漏的三维手部姿势信息,只要它们在两个相隔最多8帧的注释画面之间。这导致每只手有21个关节预测,这些关节组合成一个126维的向量θHand∈R126。

为了提高我们的数据因潜在的单眼跟踪问题(如闭塞(occlusions))而具有的稳健性,如果在一定数量的帧内脸部地标或手部关键点的预测可信度低于一个给定的阈值,我们就将数据排除。这是通过重新解释跟踪器产生的身体部位的二维联合热图预测的最大值来获得的,是一种确信度的衡量标准。我们还删除了Ginosar等人[16]提供的10个对象中的4个,因为视频的分辨率低,导致3D密集脸部重建结果质量差。我们最终的3D数据集由6名受试者超过33小时的视频组成。

3.2 音频特征预处理

与Suwajanakorn等人[49]类似,我们在使用FFMPEG[14,40]对音频进行归一化处理后,用一个重叠的时间滑动窗口计算每个输入视频帧的MFC系数。我们利用CMUSphinx[26]来计算系数,并使用13个MFC系数和一个额外的特征来计算输入的平均能量。这些,加上时间上的前导数,产生一个28维的矢量 F M F C F_MFC FMFC∈R28,代表每个时间步骤的语音输入。MFCC编码了人类语音感知的特征,这使得它在语音识别等广泛的应用中非常有用。编码语音感知的特点使MFC系数成为预测面部表情的良好代表,因为面部形状的调制是语音产生过程的一部分。对于预测身体手势,MFCC特征在序列中的变化带有产生节拍手势所需的节奏信息。

4 方法

我们的方法是在给定语音信号的情况下,产生三维面部表情参数、头部方向、三维身体和三维手部姿势的关键点的时间序列。上述这些参数的时间变化包含了姿态信息。如第3.2节所述,对语音输入进行预处理,产生基于MFC的特征帧FMFC[t]∈R28,用于每个离散时间步长t。我们将每个时间步长的面部表情参数表示为θFace[t]∈R64,双手的三维关键点表示为θHand[t]∈R126,头部方向和三维身体关键点共同表示为θBody[t]∈R42。时间序列的采样频率是15Hz。

4.1 网络结构

与其他基于对抗性学习的方法类似,我们的模型由两个主要的神经网络组成,我们称之为生成器网络G和判别器网络D。

我们采用一维卷积编码器-解码器结构的生成器网络G,将输入的音频特征序列FMFC[0 : T]映射到三维人脸表情参数序列θFace[0 : T],三维身体参数序列θBody[0 : T],以及三维手部参数序列θHand[0 : T],这也是以监督的方式进行训练。

我们对生成器G的一维卷积架构是根据UNet[41]架构的参考实现[54]改编的,该架构最初是为二维图像分割提出的。我们的架构利用一个单一的编码器,由8个内核大小为3的一维[Conv-BN-ReLU]块组成,除了最后一个块之外,每隔一个块都与MaxPool交织。最后一个块之后是一个上采样层(最近邻)。每个脸部、身体和手部的序列都使用一个单独的解码器。解码器与编码器对称,由7个一维[Conv-BN-ReLU]块和一个最后的一维卷积层组成,每隔一个块就与上采样层交错排列。解码器与编码器是对称的,利用编码器中相应层的跳过连接。

鉴别网络被设计为预测其输入的音频和姿势特征是否真实。该网络由6个一维[Conv-BN-ReLU]块组成,内核大小为3,每隔一个块就与MaxPool交错。之后,它又有一个线性和sigmoid激活层。

关于架构的确切细节,请参考补充文件。 Figure 3中显示了一个模式。

Figure 3

4.2 训练的细节

对于每个采样的语音特征序列FMFC[0 … T - 1],以及注释的三维面部表情参数序列θFace[0 … T - 1],三维身体姿势参数序列θBody[0 … T - 1],和三维手部姿势参数序列θHand[0 … T - 1],我们以滑动窗口的方式提取64帧(≈4秒)的子序列。我们以滑动窗口的方式提取64帧(≈4秒)的子序列,连续的子序列之间有1-5帧的重叠,这取决于被摄体的数据点数量。每个用于训练的mini-batch包括从所有训练序列中提取的这种64帧的子序列的随机抽样。我们使用Adam进行训练,学习率为5e-4,mini-batch尺寸为25,每个主体训练到30万次迭代。由于生成器网络是完全卷积的,在部署时我们的网络可以处理任意长度的输入语音特征。

训练目标。我们监督我们的生成器网络G,其损失项如下:

L Reg  = w 1 ∗ L Face  + w 2 ∗ L Body  + w 3 ∗ L Hand  \\mathcalL_\\text Reg =w_1 * \\mathcalL_\\text Face +w_2 * \\mathcalL_\\text Body +w_3 * \\mathcalL_\\text Hand LReg =w1LFace +w2LBody +w3LHand 

LFace是面部表情参数的L2误差:

L Face  = ∑ t = 0 T − 1 ∥ θ Face  [ t ] − θ ^ Face  [ t ] ∥ 2 \\mathcalL_\\text Face =\\sum_t=0^T-1\\left\\|\\theta_\\text Face [t]-\\hat\\theta_\\text Face [t]\\right\\|_2 LFace =t=0T1θFace [t]θ^Face [t]2

LBody是三维身体关键点位置和头部方向的L1误差,LHand是三维手部关键点位置的L1误差:

L Body  = ∑ t = 0 T − 1 ∥ θ Body  [ t ] − θ ^ Body  [ t ] ∥ 1 L Hand  = ∑ t = 0 T − 1 ∥ θ Hand  [ t ] − θ ^ Hand  [ t ] ∥ 1 \\beginaligned \\mathcalL_\\text Body &=\\sum_t=0^T-1\\left\\|\\theta_\\text Body [t]-\\hat\\theta_\\text Body [t]\\right\\|_1 \\\\ \\mathcalL_\\text Hand &=\\sum_t=0^T-1\\left\\|\\theta_\\text Hand [t]-\\hat\\theta_\\text Hand [t]\\right\\|_1 \\endaligned LBody LHand =t=0T1θBody [t]θ^Body [t]1=t=0T1θHand [t]θ^Hand [t]1

我们确定w1=0.37,w2=600,w3=840,以确保每个术语在训练中的权重相等

在实践中,我们注意到只对身体关键点采用L1或L2错误的结果是没有表现力的手势,这一点在Ginosar等人[16]关于二维身体手势合成的前期工作中也被指出。受Ginosaretal[16]的对抗性训练方法的启发,我们展示了将对抗性损失与判别器网络D结合起来,该网络被训练来判断输入的姿势是真实的还是由生成器G假造的,可以产生更有表现力的姿态,而且与语音输入保持同步。在最大的游戏场景中与生成器网络一起训练时,它将推动生成器产生更高质量的三维身体和手部姿势合成,以骗过判别器。我们采用了与Ferstletal[13]的工作类似的方法,不仅使用姿势,还将音频特征作为输入给鉴别器。这样一来,鉴别器的任务就不仅仅是测量输入的手势是否真实,它还需要确定手势是否与输入的音频特征同步。由于身体手势的多模态性主要发生在身体和手部,我们将面部表情参数排除在对抗性损失表述之外:

L A d v ( G , D ) = E F M F C [ log ⁡ ( 1 − D ( F M F C , G ∗ ( F M F C ) ) ) ] + E F M F C , θ B o d y , θ Hand  [ log ⁡ D ( F M F C , θ Body  , θ Hand  ) ] \\begingathered \\mathcalL_A d v(G, D)=\\mathbbE_\\mathcalF_M F C\\left[\\log \\left(1-D\\left(\\mathcalF_M F C, G^*\\left(\\mathcalF_M F C\\right)\\right)\\right)\\right] \\\\ +\\mathbbE_\\mathcalF_M F C, \\theta_B o d y, \\theta_\\text Hand \\left[\\log D\\left(\\mathcalF_M F C, \\theta_\\text Body , \\theta_\\text Hand \\right)\\right] \\endgathered LAdv(G,以上是关于20220505文献翻译9:从视频中学习语音驱动的3D对话手势的主要内容,如果未能解决你的问题,请参考以下文章

参数的标准化和归一化

从题目中学习java语法

从kata中学习编程

markdown 从基本粪便中学习语法[第1部分]

从别人的代码中学习golang系列--01

从别人的代码中学习golang系列--03