语音驱动的面部动画在很多应用中具有重要意义,如电视、电影、视频游戏、电信和AR/VR等。最近,变形金刚(transformers)被证明对这项任务非常有效。 然而,作者发现现有基于变形金刚的模型存在两个问题。首先,它们很难适应新的个性化说话风格; 其次,由于 Transformer 的四线性复杂度,它们在运行长句子时速度较慢。因此,作者提出了一种模型——TalkLoRA来解决这两个问题。TalkLoRA通过使用低秩适应来有效地和高效地适应新的说话风格,即使数据有限。它通过为目标 subjects 训练一个适应器(adaptor),该适应器具有每个主题的少量参数来实现这一目的。此外,作者使用分块策略来降低底层 Transformer 的复杂性,以允许在推理时使用长句子。 TalkLoRA可以应用于任何基于 Transformer 的语音驱动面部动画方法。 作者进行了大量实验来证明TalkLoRA实现了最先进的风格适应,并允许在不牺牲质量的前提下,对推理时间进行复杂性降序排列。作者还调查并提供了关于用于语音驱动面部动画模型的LoRa微调超参数选择的洞察。
1 Introduction
人脸数字3D在各种媒介中非常普遍,被广泛应用于电视、视频游戏、电影、视频会议和营销等领域。此外,它是2D口型生成的关键组件[]。作为社会生物,人类很注重彼此的面部表情[]。这使作者非常擅长辨别与面部相关的细节。特别是面部的运动。即使在这些面部动画中出现小错误,最终结果可能会落入人们所说的“不协调山谷”,这是一种令人不安的现象,阻止人们对数字人表示接受[]。
传统上,获取高质量面部动画的方法是让熟练的艺术家手动操纵面部到关键帧,并在这些帧之间插值。然而,这个过程非常缓慢且昂贵,只能适用于最重要的面部动画。另一种流行的方法是使用表现捕获,涉及试图将演员的表演与3D面部的 rig 进行匹配。这个过程同样是昂贵的。对于语音驱动的大量面部动画,语音驱动的面部动画很流行。此外,某些应用程序需要从音频或文本输入实时合成对话驱动的面部动画。例如文本驱动的化身,或聊天代理。
最近有许多方法从语音信号中生成高质量的面部动画[]。然而,这些方法大多需要每个人大量数据。到目前为止,只有少数工作考虑了如何将语音驱动动画系统改编到新身份[]。
2 Related Work
Speech-Driven 3D Facial Animation
语音驱动的3D面部动画涉及从输入音频序列中生成面部动画,这些动画可以是混合形状或顶点序列。早期的方法基于基于视音(视觉上的音节)的规则方法。这些方法对于数字人方面的海量工作相当有效,但非常简单,无法真实地产生高质量的动画。自从深度学习出现以来,许多数据驱动的方法已经被提出,具有更强的能力。[14]Karras等人训练了一个基于自回归卷积神经网络(CNN)的模型,用于预测音频段落的顶点。这种方法仅在为它进行训练的演员上有效。VOCA通过将一个网络共享在多个身份上,通过为身份进行一热编码,以及使用现有的一个身份通过对现有身份进行线性插值以便添加新的身份。Faceformer在混合编码上类似于VOCA,使用变形器并以使用一 Warm up 份编码来达到更好的效果。有几种工作将基于 Transformer 的,一 Warm up 份模型应用于子域,例如,情感语音驱动动画或隐式模型语音驱动动画。[2] Imitator试图解决第一个问题,通过微调模型中的某些层。虽然这对提高性能有所帮助,但它既慢又非最优。相比之下,作者的方法能够有效地并高效地使用LoRA有效地适应新的身份,并使用固定上下文窗口处理更长的序列。
Transfer Learning
迁移学习是机器学习领域一个非常普遍的问题。其目标是利用在一个数据集上预训练的大型模型,将其适应于另一个通常较小(有时可能更小)的数据集。迁移学习最引人注目地研究于自然语言处理(如[1,2])和视觉领域(如[3,4]),最近一些工作还关注了语音识别[5],这与作者对以语音为驱动的动画的研究[6]密切相关。
一种简单的方法是使用预训练权重来重新训练模型并优化全部参数来实现迁移学习。然而,这种方法存在多个问题。首先,这是一个耗时且内存密集的过程;此外,如果新数据集较小,这种方式训练大型模型非常容易过度拟合。这催生了参数高效微调(PEFT)领域,其中只有少量参数需要更新。有些方法专注于调整网络层的一小部分[7],然而,这限制了调整操作的基本抽象程度。最近一些方法通过使用较低维数的分解和小型神经网络[8]来优化更多层[9],但这样做在推理时间引入了大的开销。因此,提出了Low-Rank Adaptors(LoRA)[10]。LoRA通过将权重矩阵分解为两个低秩矩阵来实现,这两个矩阵的乘积与权重矩阵具有相同的形状。这可以添加到预训练权重中使用,无需增加任何开销,同时仍然允许参数高效微调。
在语音驱动面部动画的背景下,迁移学习的目标是将预训练模型适应到新身份。通常,关于新身份的特定个人数据很少[11]。这意味着它绝对必须避免过度拟合。模仿者[]通过微调风格代码和最后一层来实现这一目标,这种方法虽然有效但非常限制,实际上就是用添加线性变换来实现现有风格之间的插值。作者提出使用LoRA[12],这使得作者可以以非线性、更灵活的方式调整模型,从而达到更好的结果。
3 Method
作者的目标是改进任何现有的基于Transformer的语音驱动动画系统。因此,作者提出了组件,这些组件不会对模型作出任何额外的假设。作者首先描述了两种现有的最先进的语音驱动动画模型(第3.1节),以展示它们之间的差异,作者的模型在两者之间都可以工作。然后,作者讨论了作者的使用Low-Rank Adaptors,使作者能够将现有模型适应到新的身份(第3.2节)。最后,作者使用分块策略(第3.3节)改进了现有模型在长序列上的推理速度。这些步骤在图1中显示。
Architectures
作者模型基本架构由作者使用的适应模型确定。对于作者实验的情况,这是FaceFormer [ [] ]或Imitator [ ]。在任何情况下,这两种模型都有一些显著的相似之处。每个模型都由三个部分组成:音频编码器、 Transformer 解码器和逐帧解码器。
音频编码器: 对于Imitator和Faceformer,音频编码器相同。使用Wav2Vec2 [],由于其强大的特征提取能力。Wav2Vec2用于在大规模和多样化的数据集上进行语音识别。将语音识别作为任务意味着模型的输出特征对人是无关的,允许语音驱动模型对新音频进行良好的泛化。最后一层被丢弃,最后隐藏层的输出被提取为音频特征。Wav2Vec2在50Hz处输出特征,这些特征线性重新采样以匹配目标动画的fps,并使用可学习线性层将这些转换为所需维度。
Transformer 解码器: 两种模型都使用 Transformer 解码器来考虑时间信息。它们分别使用音频编码器中的音频特征进行交叉注意力。关键区别在于,Imitator的 Transformer 对人不依赖,而FaceFormer的 Transformer 不对人不依赖。FaceFormer将前一时步的顶点编码,添加行人特定风格代码,然后将其传递给 Transformer 。而Imitator使用预定的人-独立的开始标记,所有主题使用相同的开始标记,并从音频特征中产生独立的行人-无关的视图标记。值得注意的是,TalkLoRA不要求选择其中任何一种,作者的适应器和解块过程可以应用于任何 Transformer 基础模型。
运动解码器 最后一步是从 Transformer 输出生成顶点。由于FaceFormer将风格信息包含在 Transformer 中,因此只使用一个线性层将 Transformer 输出投影到FLAME顶点。另一方面,Imitator在这里引入了行人特定风格代码,通过将其添加到 Transformer 输出。Imitator然后使用MLP来预测顶点。
LoRA
在决定将LoRA应用于网络的哪些部分时,作者会考虑以下几点。首先,对于音频解码器,作者觉得将其应用LoRA是不合理的。因为音频解码器之所以强大,因为它具有较高的泛化能力。这使得它可以将来自任何人的音频(例如来自TTS系统或配音演员)映射到共同的特征空间。虽然对音频解码器进行微调可能会提高主题音频的性能,但很可能会导致过度拟合并阻碍其他来源音质的性能。因此,作者不考虑将其应用于网络的这部分。
然而,对于解码器,作者希望模型仅适应一个身份。也就是说,作者希望解码的运动具有说话人的风格。这给了作者两个LoRA应用的候选项。 Transformer 解码器以及/或运动解码器。作者在第5.3节中展示哪一个更喜欢。
LoRA引入了一个小的微调参数集。这使得可以在表示模型的能力与正则化之间进行权衡。也就是说,它过度拟合的可能性有多大。当作者面临一个数据集具有较低的内生维数时,作者期望使用较小的值。在第5.3节中,作者在作者的数据集上通过实证方式确定的最优值。
Limiting Context Window for Speedup
[Faceformer, Imitator]以及[其他基于 Transformer 的语音驱动动画方法],它们的所有方法都使用具有无限上下文的 Transformer 。要计算在时的嘴形,它们会查看从到的整个唇动作历史。这是 Transformer 在自然语言处理(NLP)中原始使用的一个遗留物,在这些词可能会对较长时间的产生影响。然而,对于面部动画来说,这个假设并不恰当。音频被用作输入,这意味着 Transformer 不需要学习内部语言模型,只需要在一个短期上下文窗口中的音频,并且面部表情的最后几帧就足够了。
因此,作者试图减少 Transformer 的上下文窗口。请注意,作者并没有重新训练基础模型。因此,在推理时间,作者需要改变 Transformer 的架构,使其只看到一个小窗口,同时不降低性能。
Transformer 在输入序列的大小()方面具有二次复杂性。通过使用一个非常小且相当常数值K<nmathcal{o}(nk^{2})<<mathcal{o}(n^{2})frac{n}{k}序列的长度k)。这是复杂性的数量级减少。作者确定k和p的值,以便在5.4节中得到最优性能。< p=""></n,复杂性变为线性mathcal{o}(nk^{2})<<mathcal{o}(n^{2})(frac{n}{k}序列的长度k)。这是复杂性的数量级减少。作者确定k和p
4 Implementation Details
如图3所示:作者的方法在单个训练主题上显示了一个完整的句子。作者在Imitator和Faceformer上分别比较了作者的自适应方法,并显示出相对于各自自适应方法的改进。
对于每个基础模型,作者按照论文中的程序进行训练。作者将这些基础模型作为基准。对于特定个人的自适应,作者使用Imitator 中规定的权重,其中,。作者使用AdamW优化器,学习率为0.001。除特别指定外,作者使用LoRA秩数为4和LoRA alpha值为8。作者发现模型在50个epoch后就能收敛,因此作者训练作者的自适应器达到这个次数。## 5 结果
Data
在本文的所有实验中,作者使用 VOCASET []. VOCASET包含12个说话者的网格,每个说话者60fps发言40句话。VOCASET被分为8个训练子集,2个验证子集和2个测试子集。作者将在8个训练子集上训练基础模型,并在2个测试子集上进行作者的特定适应。作者将这些测试子集命名为Subject A和Subject B。作者将Subject A和B的数据分割成训练集和测试集。作者将最后的10句话保留为测试集,并使用剩余30个句子根据实验需求的不同使用各种子集进行适应。
Comparison to State-of-the-art
迄今为止,仅Imitator[] 尝试过进行行人特定调整。因此,作者主要将其结果与该模型进行比较。具体来说,作者将 LoRA 微调方法与 Imitator 的方法相比较,微调模型中最终的层和风格代码,每次进行300个epoch的调整。作者针对不同行人特定数据集大小进行了多次调整,范围从每句话(约4秒)到最大30句话(大约2分钟)。Faceformer 并没有设计用来适应新的身份,但是可以通过优化模型中使用的风格代码在一定程度上进行调整,作者称之为 Faceformer Style。
遵循之前的工作,作者在 VOCASET 的8种训练风格中使用了模型,并从中选择了具有最佳指标的一个进行推理。对于 TalkLoRA,作者使用了 Imitator 和 Faceformer 作为基本模型,表明它可以应用到任何基于变形的语音驱动模型。
为了进行模型比较,这是标准的做法,作者使用了 test subjects 最后10句话的顶点之间的 L2 距离。作者将这部分分别为一个全脸指标 L2^{Face}(使用所有顶点)和一个只有唇的指标 L2^{Lip}(只使用唇的顶点)。遵循 MeshTalk [40] 的方法,作者还使用了 Lip-Max 指标,其定义为所有帧中任意一个唇顶点最大 L2 距离的平均值。此外,作者还测量了每个调整模型的训练时间。具体来说,作者用 NVIDIA L4 GPU 记录了每个调整模型训练的时间。
结果如表1所示。作者的适应性调整方法在大多数训练配置和指标中达到了最先进的结果,同时训练速度显著更快。它同时改进了 Imitator 和 Faceformer,表明它可应用于任何基于变形的语音驱动动画模型。改进效果也在图3中得到体现。
LoRA Parameter Selection
LoRA [40] 可能应用于网络中的任何一层。每个基础模型被分为三个部分(见3.1节)。作者发现将其应用到音频编码器是个坏主意,因为它 specifically 设计为对个人无关,允许使用来自任何人的音频。因此,作者只考虑在 Transformer 解码器和运动解码器上应用 LoRA。对于 LoRA 模型,有一个参数具有显著影响,这是降维矩阵的秩 。
为了确定最优的秩 ,作者设计了一个短实验。作者使用以下方法:对于一个随机测试主题,作者在1和30之间随机选择一个整数值,表示作者将使用多少序列进行微调。然后从给定主题的训练集中随机选择同样的数量。接下来,作者将秩 应用到以下六个值 ,并计算 lip 损失。作者重复此随机取样的方法30次,并针对每个 值计算平均结果,结果如图5所示。可以看出,对于 ,最优值约为4,因此作者选择这个值。低于此值意味着不能充分利用可用数据,而高出很多则可能导致模型过拟合。这表明 VOCASET 中的个人特定数据具有低内生维数。
Effects of Chunking
同时,作者也设计了一个实验来测试作者的切块方法在长音频序列上的有效性。为此,在仍使用 GT 数据计算指标的同时,作者创建了人工长句。这仅仅是通过将每个VOCASET主题的十个测试句子串在一起,中间插入一秒的静音。在计算指标时,作者掩盖这些静音区域。作者在不同的块大小K和填充P值中进行了多种实验。作者使用预训练的Base Imitator进行此实验。作者将K的各种值下长序列的L2损失计算出来,并记录运行时间。切块实验的结果如图4(a)所示。可以发现,较小的块大小会导致更高的损失。这是因为transformer从未得到足够的上下文。这种效应随着2秒钟长块的出现逐渐减弱。可以看到,0.5-2秒的运行时间是最佳的。因此,作者为作者的模型选择2秒钟的块大小。对于P,作者发现其对损失的影响并不明显。然而,当P太小的时候,在切点附近会发生错误。如图4(b)红色框所示。少量的填充可能会使前几帧缺乏足够的上下文,导致切块模型与基础模型之间的差异。作者发现,增加0.2秒的填充足以解决这个问题,而不会显著增加推理时间。
6 Limitations and Future Work
尽管作者的工作可以有效地适应新身份并运行得更快,但仍存在一些缺点。首先,即使经过了适当的参数校准,分块仍然会降低通过长上下文训练的模型质量。这意味着对于较短的句子,划分通常不值得。在未来,可能值得研究采用这种划分进行模型训练。作者假设这可能会帮助防止模型在数据段中的伪时间相关性中过度拟合。另一项有趣的研究线程将是包括可学习权重的块融合。
尽管作者能够找到一组参数来训练作者的LoRA模型,但只考虑了所有数据集大小的固定参数。更有可能的是,如果有更多的数据,当作者降低过拟合风险并增加内在维度时,可能想要增加LoRA秩。探索类似这些问题,以及考虑其他适应性方法(如控制网络[]或BOFT[]),将作为未来的工作。
7 Conclusion
作者已经提出了TalkLoRA,用于使用LoRA将基于 Transformer 的,由语音驱动的动画模型适应到新身份。作者的方法能够比现有最先进的模型更好地适应新说话者,因为作者更有能力避免对3D Head 运动数据集的过度拟合,而该数据集的内生维数较低。TalkLoRA还通过作者的划分策略提高了推理速度。作者的方法适用于使用 Transformer 驱动的任何语音驱动模型,只要这种模型易于广泛适用。作者的方法在视频游戏和电影/电视中的虚拟角色,以及2D、音频驱动的真人动画中都有应用。
参考
[1].TalkLoRA: Low-Rank Adaptation for Speech-Driven Animation.