[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人脸表情,给定人脸形状系数和表情系数:

M=R(C_r \times_2 w^{id} \times_3 w^{exp}+T

其中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的距离定义为:

d(t, k)= \sum^0_{j=-f}||a_{t+j}-a_{k+j}||^2_2+\beta||v_t-v_k||^2_2

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

d(t, k)= \sum^0_{j=-f}||a_{t+j}-a_{k+j}||^2_2+\beta||v_t-v_k||^2_2

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

c_t^v = exp(-\sum^n_{i=1}||v_t^{fit}-v_t^{depth}||^2_2)

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

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

(\tilde{a_t^k},\tilde{v_t^k},\tilde{w_t^k}|k=1,\cdots,2K)
(\tilde{a_t^k},\tilde{v_t^k},\tilde{w_t^k}) = {(a_t^{k-f},v_t^{k-f},w_t^{k-f}),\cdots,(a_t^{k+f},v_t^{k+f},w_t^{k+f})}

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

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

D(N_{t,p},N_{t+1,q}) = d(t,p)+d(t+1,q)+\alpha{dis(\tilde{w_t^p},\tilde{w_{t+1}^q})}

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

dis(\tilde{w_t^p},\tilde{w_{t+1}^q})=\frac{1}{2fn}\sum_{j=-f}^{f-1}\sum_{i=1}^{n}||v_i(w_t^{p+j+1})-v_i(w_{t+1}^{q+j})||_2^2

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

结果合成

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

Bw_t = MBw_t^{M}+(I-M)Bw_t^{exp}

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

w_t = B^{-1}MBw_t^{M}+B^{-1}(I-M)Bw_t^{exp}

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

总结

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容