[Paper Reading] Video-Audio Driven Real-Time Facial Animation

Overview

Overview

算法的基本流程为
步骤一:通过DNN网络模型,从音频中提取PSPP特征向量;通过多线性模型从图像和深度数据中拟合当前的人脸表情系数,并提取嘴形周围的若干特征顶点数据
步骤二:联合PSPP特征向量和嘴形周围的顶点序列组成的向量,通过KD-Tree搜索以及动态规划,从音视频频数据库中回归当前最佳的嘴形表情系数。
步骤三:合成表情数据以及嘴形表情系数,得到最终的表情数据,根据多线性模型计算最终的表情对应的顶点坐标

音频特征

由于MFCC、PLP等low-level音频特征与说话者发音特征相关,学习后只能针对特定说话人有较好的特征提取效果,很难扩展到任意说话人语音特征的准确提取。而语音识别将音频转换为文本,丢弃了说话者特征,具有较好扩展性,但使用语音识别(ASR)转换位文字需要较长的后向输入,会造成较大的表情合成延时。

为了能够同时满足音频特征与说话人无关,并且满足后续实时驱动的要求,使用了Context-Dependent DNN-HMMs声学模型的中间输出,音位状态后验概率(Phoneme State Posterior Probabilities, PSPP)作为声音提取的特征向量,避免了直接将语音识别为文字或者音位。

视频特征

本文中的视频特征主要是人脸表情特征,包括两个部分:一部分是通过包含人脸形状、表情等多个纬度的多线性模型拟合的表情系数描述当前人脸表情,另一部分是嘴唇周围的顶点向量,由带表情的中性人脸(neural identity)几何模型的嘴部领域顶点坐标组成,称为lip performance vector。

离线准备

离线准备阶段包括了DNN网络的训练、多线性模型的训练、以及音视频数据集的准备。

CD-DNN-HMM模型训练

CD-DNN-HMM网络继承自同结构的GMM-HMM模型。GMM-HMM使用了包含长度为13的PLP特征、滑动窗口均方差归一化,以及三阶导数组成的52维向量作为每帧音频的特征,初始化生成三音位的带状态的数据集,然后通过DNN来学习上下文特征与状态。在训练CD-DNN-HMM,为了满足实时性需求,输入只包含过去10帧上下文特征(不包括后续帧),并且只用了维度为13的PLP作为音频单帧输入特征。训练得到的CD-DNN-HMM网络模型即可用于估计输入视频帧的PSPP向量。

Multilinear人脸表情模型生成

基于视觉的人脸表情驱动技术相对比较成熟,论文采用了经典的双线性模型,即人脸3D表情可以通过人脸形状和表情两个维度描述,对于任何一个3D人脸表情,给定人脸形状系数和表情系数:

其中R,T表示人脸位姿。通过3D FaceWarehouse人脸表情数据库,即可构建双线性人脸表情模型。给定包含人脸表情的图片输入,即可估计当前人脸的形状系数、表情系数以及位姿。跟踪过程中,第一帧输入要求用户无表情,通过拟合深度数据来估计人脸形状和位姿参数,其中人脸位姿通过ICP来估计。当确定用户的脸型,后续在固定形状系数情况下,进行表情系数和位姿的拟合,其中位姿主要通过拟合深度图上对应的人脸关键点得到。

音视频数据集构造

音视频数据集包含了音频特征和视频特征的逐帧数据对。通过Kinect录制同时包含语音和视频数据,其中录制者脸上粘贴了密集的人脸marker。针对每帧音频数据,使用CD-DNN-HMM模型提取PSPP音频特征;针对每帧图像和深度数据,通过多线性模型,提取得到人脸形状和表情系数,其中将人脸形状系数归零,利用表情系数得到当前的中性人脸形状下的表情模型,从此模型上提取嘴部预定义点的坐标,组成每帧的嘴形顶点向量。嘴形的gt则通过双线性模型拟合人脸marker点后的嘴部的表情系数得到。最终的数据集由每帧数据组成,每帧数据由PSPP音频特征向量和嘴部顶点向量构成的输入,和由嘴部的表情系数描述的gt输出数据对组成。

PS:在数据集构造过程中,PSPP音频特征向量本身不包含被采集者的声音特点;嘴形顶点向量是从带表情的中性人脸形状上提取,不包含当前被采集者的人脸形状;嘴部表情的gt由表情系数描述,本身是与人脸形状无关。由于数据集与采集的说话者的说话风格无关,与脸型也无关,只需采集一个人的数据即可。此外,数据集包含的是音频和表情特征与嘴形特征之间的先验关系,与说话风格和人脸形状无关,从而保证基于此训练数据的模型支持不同说话者驱动不同脸型的表情动画。

在线驱动

实时驱动过程中,逐帧输入音频和视频及深度数据,分别输入到CD-DNN-HMM和人脸表情模型得到PSPP和人脸表情特征数据。依据提取得到的特征,从音视频数据集中回归得到更为精确的嘴部表情系数。组合人脸表情数据和嘴部表情系数,利用人脸拟合多线性模型生成最终的人脸表情驱动效果。特征提取跟训练数据准备阶段的处理一致,主要区别在于增加了嘴部表情系数的回归计算以及表情和嘴形系数的组合。

嘴部系数回归

给定从输入中提取的PSPP以及人脸表情(嘴部顶点向量),连接组合成单个特征向量,从数据集中采样回归计算嘴部的表情系数。任意两个组合特征向量t和k的距离定义为:

其中a, v分别表示PSPP特征和嘴部顶点特征向量。考虑协同发声的因素,对于PSPP的比较增加了前向f帧的对比。对于实时驱动,后向输入未知,因此无法比较后向输入帧。权重系数描述了两种特征的贡献比,随每帧动态变化。第t帧的系数定义为:

两个系数分别表示了PSPP的置信度和嘴部运动的置信度。对于非静默发音,PSPP置信度为1,否则为0。PSPP是否为静默由其向量中的静默元素组成,如果个数占比大于0.4,则任务PSPP为静默。嘴部运动的置信度则由拟合得到的顶点坐标和depth图中对应顶点坐标欧拉距离定义:

依据上述公式,从数据集中查询与输入帧最相近的备选帧,并前后各扩展f帧,将总长度为2f+1的帧序列作为输入帧的最相近备选帧序列。此外,考虑到不同的嘴形可能产生相同或非常形似的发声,在数据集中使用KNN,选择K个与最相近备选帧序列相近的帧序列,一起作为当前帧的备选帧序列集合。

为了提高数据集中匹配的速度,可以用经典的KD-tree结构预选组织数据集,但由于距离公式中权重随每帧变化,无法预选构建查询KD-tree。论文通过分别为数据集中的PSPP和嘴部顶点特征向量构建两个KD-tree,分别查询再联合计算比较。实验证明,此方法与直接逐一比对查询结果相近。由于两个KD-tree各自产生K个备选帧序列,则对于给定的输入帧,备选序列帧集合为:


其中w表示数据集中对应帧的嘴部表情系数。接下来需要从备选帧序列集合中,选择一个最佳的帧序列。对于给定一个输入序列,考虑到每个输入帧都有一个最佳帧序列,为了保证整个输入对应的输出是最优的,每个输入帧的最佳帧序列重叠区域应该尽可能的一致。

定义每个备选帧序列为图的节点,则一个输入帧有2K个节点,两两连接相邻输入帧的节点作为边,构建图结构。对于连接第t帧中p节点与第t+1帧中q节点的边,其长度定义为:

其中前两项描述了输入帧与各自备选帧序列的距离;而dis则描述了p节点与q节点代表的两个备选序列帧的相似程度。通过备选帧序列中各帧对应嘴部表情系数合成带嘴部表情的中性形状的人脸几何模型,并选择对应的嘴部顶点坐标序列。两个帧序列的顶点坐标序列的欧式距离的帧平均值作为相似程度值:

通过如上的边长计算公式,以及构建的图结构,采用动态规划即可求的每个输入帧的最佳序列帧,选择最佳帧序列中的最中间帧(f+1),作为输入帧所对应的最佳帧。连接每个输入的最佳帧,即得到输入帧序列所对应的数据集中的最佳输出帧序列。

结果合成

根据最佳输出序列帧,可以得到每帧对应的嘴部的表情系数,结合多线性模型输出的人脸表情系数,即可得到最终的表情效果。合成的表情在嘴部需要与嘴部表情系数w_m效果一致,而其它部分与人脸表情系w_exp数效果一致,即:

其中M为3n*3n的对角线矩阵,当顶点位于嘴部时,对角线元素值为1;其它区域时,对角线元素为0。B为多线性模型的表情基,在人脸表情多线性模型训练生成后即为已知量。则最终的表情系数可以描述为:

得到最终的表情系数,结合人脸形状系数以及位姿,即可恢复当前音视频输入下的人脸表情。对于表情基定义相同的其它3D卡通模型,通过直接应用表情系数和位姿,即可实现表情的转移。

总结

该方法通过提取音频的特征,抑制了说话者的个性化特征,从而避免了需要大量不同说话者的数据集,也增强了移植性。方法需要依赖视频输入,音频输入主要用于改善嘴部的运动效果。数据采集过程中,虽然只需单个人即可,但为了获取嘴部的gt数据,需要粘贴大量密集的marker点数据,增加了采集的复杂程度。在计算嘴部表情系数的过程中,需要实时索引数据集,部署时会增加应用程序的体积。为了避免脸型的影响,嘴部顶点向量都是在中性脸型上采集,这种嘴部运动与脸型无关的假设太过理想,是否的确无关还有待验证。另外,嘴部的表情系数是单独学习得到,与脸部其它表情区分开来,导致合成效果严重依赖与嘴部和脸部区域的人为划分。

你可能感兴趣的:([Paper Reading] Video-Audio Driven Real-Time Facial Animation)