Overview
算法的基本流程为:
步骤一:采用音视频数据库训练模型。其中音频已经标注了对应的音位信息,使用Active Appearance Model (AMM)从视频中提取人脸表情相关的参数;根据音位和人脸表情动画参数数据集,训练模型
步骤二:推断过程中,使用语音识别等已有的技术,从音频中提取音位信息,并输入给训练好的模型,输出对应的人脸表情参数
步骤三:将人脸表情参数转移到目标卡通模型脸上,即可驱动卡通模型的面部表情动作
音频特征
为了能够支持不同说话者的声音输入,采用了从音位到表情动画的映射。实时推断过程中,利用现有的语音识别等技术,从音频输入中提取对应的音位信息。一个典型的带音位标注的文本样例按照同视频帧率采样如下所示:论文除了采用音位作为原始音频特征外,还手动设计了若干与语言学相关的特征表示。这些特征以二进制指示器方式描述,即当音位及其序列满足指定的条件,则取值为1,否则取值为0。这些语言特征包括:
Phoneme identification spanning specific locations: 描述了指定的音位是否包含在指定的帧序列中,例如音位/s/是否包含在第j和k帧中?
Phoneme attribute category at a specific location: 描述了指定类型(鼻音、辅音、元音等)的音位是否包含在指定的帧中,例如第j帧中是否包含了鼻音?
Phoneme attribute category at a specific location: 描述了相邻两帧之间是否包含了指定的音位过渡,例如第k和k+1帧之间是否包含了元音-辅音对的切换过渡?
语言特征围绕40个标准英语音位以及1个默音进行判定,连接所有的指示器,组成了长度为2379的特征向量。特征向量根据指定音位是否满足条件,每个元素对应取值位0或者1。
视频特征
本文中的视频特征主要是人脸表情特征,采用了标准的AAM模型描述。具体的,取人脸下半部分以及下颚处2D Mesh上34个顶点,通过PCA分解降维得到16组形状基及形状参数用于组合描述人脸2D形状。在颜色空间,对相同人脸区域的纹理颜色利用类似的PCA降维方式进行描述,考虑到空腔内部的纹理遮挡问题,将颜色区域划分位口腔内部和其它区域,各由纹理基和纹理系数组合描述。如下图所示:
为了进一步降低形状和纹理颜色之间的耦合,加权组合形状系数和纹理系数,再次进行PCA降维,得到最终长度为104维的AAM人脸表征系数。
网络结构
论文采用了全连接的前向反馈神经网络,该网络由输入层、3个全连接隐藏层,和输出层组成。每个隐藏层包含了3000个神经元,使用双切正曲线激活函数连接。
离线准备
离线准备阶段主要包括了数据集的准备和模型的训练。
数据集
论文采用了KB-2k的音视频数据集。该数据集包含了单个录制人员的2543条广泛覆盖不同音位发音的文本句。录制人员在中性情绪下阅读文本句,并同时纪录音频和视频。所有的文本句都预先按照Arpabet音位编码进行手工的标注。
Arpabet是一组用于可视化表示音位的音标编码规范,包含了对元音、辅音、重音和辅助符号的音标描述。TIMIT为其扩展形式。
模型训练
音频特征与人脸表情动画特征之间为序列到序列的映射。常用的学习序列到序列的映射的方法(up to 2017)包括滑动窗口(sliding window model)和循环定义网络(recurrently defined model)。其中前者强调序列的局部短时相关性,而后者强调序列的长时相关性。基于以下的归纳偏置,论文采用了滑动窗口方法。
- 由于协同发音与时序相关,因此在时序上协同发音对应的动画特征序列长度变化很大
协同发音通常具备局部的短时相关性,而与较长序列无关。例如'prediction'和‘construction’中的'-tion'发音相同,而与其之前的字母序列无关。 - 循环定义网络,包括RNN和LSTM网络虽然具备seq2seq的学习能力,但是不符合上述的归纳偏置,需要大量的训练数据才能得到较好的预测效果。论文也通过实验证明滑动窗口方法具有较好的性能特征。
使用滑动窗口方法进行模型训练的流程如下图所示(针对单个表情系数):
步骤一:首先将输入的音位帧序列按照长度为的滑动窗口,划分为连续重叠子序列,如图(b)
步骤二:将每个窗口内的序列作为输入,传递给前馈神经网络,输出对应长度为的表情参数序列,如图(c)和(d)
步骤三:使用逐帧平均,在融合得到每帧对应的表情参数,如图(e)。
针对每个表情系数,均按照如上所述的方法进行计算,最终得到对应的表情系数特征向量。训练过程中,batch_size = 100。为了提高泛化能力,使用了概率为50%的dropout策略。
使用滑动窗口方法包含了和两个超参。其中输入滑动窗口长度需要足够大,从而保证输入给网络的子序列能够区部分相同的不同发音序列。例如两个发音序列部分相同,如果滑动窗口过短不足以包含不同的音序,则无法区分两个发音序列。而过短则则容易受噪声的覆盖。但如果和太过大,则需要增加更多的训练数据,才能保证网络学习到序列映射内部复杂的关联性。实际训练和推断过程中,和的取值分别为11和5。
在线驱动
在线实时驱动的基本流程为:
步骤一:使用成熟的语音识别技术,将音频转换为音位序列。由于进行了文本转换,因此网络的实际输入与说话者的语言类型和发音类型无关
步骤二:在音位序列上,通过预定义长度的滑动窗口,选择子序列作为神经网络模型的输入,输出预测的表情动画系数
步骤三:将表情系数转移到其它3D目标模型上,实现表情动作的转移和驱动
动画重定向(Animation Retargeting)
有多种方法可以将表情动画转移到指定的目标模型,例如通过deformation transfer方法。另外一种方法是通过Rig-space的动画迁移方法。论文首先针对首4个人脸表情基各自的正负3方差时对应的人脸表情模型,作为动画迁移的基础参考模型,并同时记录其对应的表情系数。8个基础参考模型的形状合成定义为:
其中为中性表情模型,为4个人脸表情基的offset偏移值,为表情基对应的系数。针对目标模型,手动制作语义和表情上对应的目标模型的8个表情基础模型,其表情系数与基础参考模型的表情系数一一对应。如下图所示:
当网络输出新的表情系数,基于8个基础参考模型的表情系数进行线性插值计算,得到每个基础参考模型的贡献参数。计算公式如下:
其中为网络预测输出的表情系数。利用此参数合成目标模型的8个表情基础模型,即可得到目标模型上对应的表情驱动效果。
总结
本文采用了从音位序列到表情系数的映射方法,音位序列的生成通过现有的语音识别等技术从音频序列中得到。由于音位序列不包含语言学的先验,增加了若干与语言学先验相关的特征。手工设计的特征虽然比单纯用音位序列性能较好,但也增加了前期数据标注的工作量,尤其考虑到手工设计特征维度为2000+,而且针对其它语音的可扩展性还有待验证。该方法不论从数据集还是手工特征设计方面,都需要有一定的语言学相关领域知识。动画驱动过程使用了Rig-space Retargtting技术,需要预选手动的设计若干目标模型的参考表情。此外,类似目前其它的方法,训练和驱动过程中不包含任何情绪相关的信息。