听说现在赶火车进站刷脸!最新的变脸游戏,你说什么,表情就演什么。就在昨天,一段视频火了朋友圈。视频中,北京、广州、上海、成都、武汉的火车站均已开通自助“刷脸”进站通道。乘客惊呼:“连化妆和美瞳都能认出来,太厉害了!”其实,刷脸并不是什么新鲜事!今天说一个比较有意思的事情,就是你说话,AI会匹配你的表情。让你做一个真实的虚拟人。文章有点枯燥,而且技术词汇很多,对于一般的新手来说可能显得很别扭。技术宅,加油!SIGGRAPH2017曾收录过Nvidia关于3D动画角色面部表情研究的论文:Audio-DrivenFacialAnimationbyJointEnd-to-EndLearningofPoseandEmotion。在这篇论文中,英伟达展示了实时、低延迟的机器学习技术,通过音频输入驱动3D面部表情,从而实现虚拟人物面部表情与音频输入的完美配合。图1.用于根据语音推断面部动画的深度神经网络让我们从这张图片开始。下面的“我们”是论文作者的第一人称。当网络的输入是大约半秒的音频时,输出是与音频窗口中心对应的固定拓扑网格的3D顶点位置。该网络还有一个描述情绪状态的辅助输入。它的神经网络直接从训练数据中学习情绪状态,无需任何形式的预标记。我们提出了一种机器学习算法,可以通过低延迟实时音频输入来驱动3D面部动画。我们的深度神经网络可以学习从输入音频波形到面部模型的3D顶点坐标的映射,同时还可以找到一个简洁的隐藏代码,可用于区分无法单独从音频解释的面部表情变化。干预时,隐藏代码可以作为面部动画情绪状态的直观控制。我们使用传统的基于视觉的表演捕捉方法获取了3-5分钟的高质量动画数据,并在这些数据上训练了神经网络。我们的主要目标是模拟单个表演者的说话风格;在用户研究中,当我们用不同性别、口音或语言的说话者的语音来驱动模型时,我们也会得到很好的结果。这些结果可应用于游戏对话、低成本本地化、虚拟现实化身和远程呈现等技术。CCS概念:?计算方法→动画;神经网络;基于回归的监督学习;学习隐藏的表征;其他关键词:面部动画、深度学习、音频端到端网络架构。从语音内容中处理和分离情绪状态的细节。给定一个短音频窗口,神经网络的任务是推断该音频窗口中心的面部表情。我们直接将表达式表示为面部固定拓扑网格中中性姿势的顶点差异向量。训练网络后,我们通过在音轨上滑动窗口来为网格设置动画,在每个时间步独立评估网络。尽管网络本身对之前的动画帧没有记忆,但实际上它可以生成时间稳定的结构。架构概述我们的深度神经网络由一个特殊用途层、10个卷积层和2个全连接层组成。我们将其分为3个概念单元,如图1和表1中所述。我们首先将音频窗口输入共振峰分析网络,以随时间生成一系列语音特征,然后我们使用这些特征来驱动发音。神经网络首先使用固定函数自相关分析从音频中提取原始共振峰信息(参见原文第3.2节),然后用五个卷积层优化此信息。通过训练,卷积层可以学习提取对面部动画有用的短期特征,例如语调、口音和特定音素。第五个卷积层的输出是这些特征随时间变化的抽象表示。接下来,我们将结果输入发音神经网络。该网络由5个卷积层组成,它们共享特征的时间变化,并最终确定一个描述音频窗口中心面部姿势的抽象特征向量。情绪状态的(学习到的)描述作为次级输入连接到发音神经网络,以区分不同的面部表情和说话风格(参见原始第3.3节)。我们将情绪状态表示为一个E维向量,并将其与发音神经网络每一层的输出直接连接起来,以便后续层可以相应地改变它们的行为。每层l输出Fl×Wl×Hl激活函数,其中Fl是抽象特征图的个数,Wl是时间轴的维度,Hl是共振峰周期的维度。在共振峰分析网络中,我们采用1×3stridedconvolution逐渐减小Hl,逐渐增大Fl,即将原来的共振峰信息平移到抽象特征,直到Hl=1,Fl=256。类似地,在发音神经网络中,我们使用3×1卷积来减少Wl,即通过组合来自不同时间邻域的信息对时间轴进行二次采样。我们选择了表1中列出的特定参数,因为我们发现这些参数在使用数据集进行训练期间始终表现良好,同时还保持了合理的训练次数。虽然获得的结果对层数或特征图不是很敏感,但我们发现我们必须在两个不同阶段调整卷积以避免过度拟合。重要的是,共振峰分析网络在时间轴上的每个点执行相同的操作,因此我们可以在不同的时间偏移量使用相同的训练样本。发音神经网络输出一系列256+E个抽象特征,共同代表目标面部姿势。我们将这些特征输入输出网络,以生成跟踪网格中5022个控制顶点的最终3D位置。输出网络是一对全连接层,对数据进行简单的线性变换。第一层将输入特征集映射为线性基函数的权重,第二层计算相应基向量(basisvectors)的加权和,用于表示最终的顶点位置。我们将第二层预设为150个预先计算的PCA模块,它们共同解释了训练数据中99.9%的变化。理论上,我们可以使用固定基准高效地训练前面的层,生成150个PCA系数。但是我们发现在训练的时候让基向量自己改变得到的结果更好。音频处理网络的主要输出是语音音频信号,我们在将其馈入网络之前将其转换为16kHz单声道信号。在实验中,我们对每个通道的音量进行了归一化处理,以确保可以利用完整的动态范围[-1,+1],但是我们没有进行任何动态范围压缩、降噪或预加重滤波器等处理(预加重滤波器)处理。表1中的自相关层将输入音频窗口转换为紧凑的2D表示,然后是卷积层。《语音生成source–filter模型》(语音生成的过滤器模型)[Benzeghiba等人。2007年;Lewis1991]这篇论文启发我们提出了这种方法,他们将音频信号建模为线性滤波器(声带)和激励信号(声带)的混合体。众所周知,线性滤波器的共振频率(共振峰)携带有关语音音素内容的重要信息。表示说话人声音的音调、音色和其他特征的激励信号被认为对面部动画不重要,因此我们主要依靠共振峰来提高网络对不同说话人的泛化能力。线性预测编码(LPC)是执行信号源-滤波器分离的标准方法。LPC将信号分解成若干个短帧信号,根据最大自相关系数K计算每个帧信号的线性滤波系数,进行反向滤波提取激励信号。滤波器的谐振频率完全取决于自相关系数的值,因此我们选择跳过大部分处理步骤,直接使用自相关系数作为瞬时共振峰信息的表示。这种方法的工作原理很直观,因为自相关系数本质上代表了信号的压缩形式,其频率信息本质上与原始信号的功率谱相匹配。这种表示非常适合卷积网络,因为卷积层可以很容易地学习如何估计特定频带的瞬时频谱。在实验中,我们将520毫秒的音频作为输入(关于预期输出姿势的260毫秒历史样本和260毫秒未来样本)。我们选择这个值是因为它允许我们捕获相关效应,例如音素联合发音,而无需向网络提供太多数据(这会导致过度拟合)。我们将输出音??频窗口分成64个音频帧,重叠2x,这样每帧音频对应16ms(256个样本),连续帧之间的间隔为8ms(128个样本)。在每一帧音频中,我们移除了直流分量并使用标准的Hann窗口来减轻时间混叠效应。***,我们计算出自相关系数K=32,得到总共64×32个输入音频窗口标量。尽管小的自相关系数(例如K=12)足以识别单个音素,但我们选择保留有关原始信号的更多信息,以确保后面的层也可以检测音高变化。我们的方法不同于语音识别领域以前的大多数方法,后者的分析步骤通常基于专用方法,例如Mel频率倒谱系数(MFCC)、感知线性预测系数(PLP)和拉斯塔滤波[Benzeghiba等人.2007]。这些方法之所以被广泛采用,是因为它们可以很好地线性分离音素,非常适合隐马尔可夫模型。在我们的早期测试中,我们尝试了输入数据的几种不同表示,发现我们方法的自相关系数明显更好。图2.表演者不说话时动画是什么样子的?这些是从表演者没有说话的训练集中抽取的样本帧。情绪状态的表示从语音中推断面部动画本质上是一个模棱两可的任务,因为相同的语音可以对应不同的表情。眼睛和眉毛尤其如此,因为它们与语音生成没有任何直接关系。使用深度神经网络处理此类模棱两可的任务很困难,因为训练数据必然涵盖几乎相同的语音输入产生截然不同的输出姿势的情况。图2给出了当输入音频剪辑完全无声时训练数据冲突的几个示例。如果网络除了音频数据之外还有其他可用数据,它会学习输出矛盾输出的统计平均值。我们对这些模棱两可的任务的解决方案是为网络提供辅助输入。我们将每个训练示例与一个小的附加隐藏数据相关联,以便网络有足够的信息来明确地推断出正确的输出姿势。理想情况下,这些附加数据应编码给定样本时域中无法从音频本身推断出的所有与动画相关的特征,包括不同的表情、说话风格和自相关模式。通俗地说,我们希望辅助输入代表表演者的情绪状态。除了消除训练数据的歧义外,辅助输入对于推理也很有用——它允许我们在同一个给定的声带上混合和匹配不同的情绪状态,以有效地控制生成的动画。使动画达到情绪状态的一种方法是根据明显的情绪对训练样本进行标记或分类[Andersonetal.2013;曹等。2005年;邓等。2006年;万普勒等人。2007]。然而,这种方法并不理想,因为它不能保证预定义的标签足以消除训练数据的歧义。我们没有依赖预定义的标签,而是采用了数据驱动的方法。在这种方法的训练过程中,网络会自动学习情绪状态的简明表示。这样,只要有足够多的不同情绪,我们甚至可以从角色镜头中提取有意义的情绪状态。我们将情绪状态表示为E维向量,其中E是一个可调参数,我们在测试中将其设置为16或24,并使用从高斯分布中抽取的随机值初始化组件。每个训练样本都被分配了这样一个向量,我们将保存这些隐藏变量的矩阵称为“情感数据库”。如表1所示,发音神经网络各层的激活函数都附加了情绪状态。这样,情绪状态就作为损失函数计算图的一部分(见原文4.3节);由于E是一个可训练参数,在反向传播过程中它会随着网络权重的更新而更新。E维度是两种效果之间的平衡。如果E太低,情绪状态无法消除训练数据中的变化,导致音频响应不理想。如果E太高,所有情绪状态的定义都太狭窄,无法用于一般推理(参见原始第5.1节)。情感数据库的一个潜在问题是,如果我们不有效地约束情感数据库,它可能会学会明确保留音频中呈现的信息。如果任其发展,它可以保留决定大多数面部表情的E混合形状权重,弱化音频,并使网络无法处理训练期间不存在的数据。按照设计,音频数据提供的信息应限制在520毫秒间隔内的短期效果。因此,我们可以通过禁止情绪状态包含短期变化来防止情绪状态包含重叠信息。特别是包括对情绪状态的长期影响也有助于推理——我们还期望网络在情绪状态保持不变时生成合理的动画。为此,我们可以通过在损失函数中引入专门的正则化项来惩罚情绪数据库中的快速变化,从而使情绪状态在训练过程中逐渐趋于平稳。我们方法的一个主要限制是我们无法正确模拟眨眼和眼球运动,因为它们与音频没有关系,也不能通过缓慢变化的情绪状态来表示。虽然将情绪状态与发音神经网络的所有层联系起来似乎是多余的,但我们发现在实践中这样做会大大改善结果。我们推测这是因为情绪状态的作用是在多个抽象层次上控制动画,而通常更高层次的抽象更难学习。Early-connectedlayers可以实现对co-articulation等精细动画特征的精确控制,而late-connectedlayers只能加强对输出pose的直接控制。直观地说,当个体姿势得到很好的表示时,后面的层应该在情绪状态训练的早期连接,而前面的层应该在训练的后期连接。
