[Paper Reading] A Deep Learning Approach for Generalized Speech Animation

Overview

Overview

算法的基本流程为:
步骤一:采用音视频数据库训练模型。其中音频已经标注了对应的音位信息,使用Active Appearance Model (AMM)从视频中提取人脸表情相关的参数;根据音位和人脸表情动画参数数据集,训练模型
步骤二:推断过程中,使用语音识别等已有的技术,从音频中提取音位信息,并输入给训练好的模型,输出对应的人脸表情参数
步骤三:将人脸表情参数转移到目标卡通模型脸上,即可驱动卡通模型的面部表情动作

音频特征

为了能够支持不同说话者的声音输入,采用了从音位到表情动画的映射。实时推断过程中,利用现有的语音识别等技术,从音频输入中提取对应的音位信息。一个典型的带音位标注的文本样例按照同视频帧率采样如下所示:
A sample of phoneme sequence

论文除了采用音位作为原始音频特征外,还手动设计了若干与语言学相关的特征表示。这些特征以二进制指示器方式描述,即当音位及其序列满足指定的条件,则取值为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降维方式进行描述,考虑到空腔内部的纹理遮挡问题,将颜色区域划分位口腔内部和其它区域,各由纹理基和纹理系数组合描述。如下图所示:


AMM description of expression

为了进一步降低形状和纹理颜色之间的耦合,加权组合形状系数和纹理系数,再次进行PCA降维,得到最终长度为104维的AAM人脸表征系数。
(wp, \lambda^{1}, \lambda^{2})^T=UyV^T=\sum_{i=1}^{q}{j_{i}y_{i}}

网络结构

论文采用了全连接的前向反馈神经网络,该网络由输入层、3个全连接隐藏层,和输出层组成。每个隐藏层包含了3000个神经元,使用双切正曲线激活函数连接。

离线准备

离线准备阶段主要包括了数据集的准备和模型的训练。

数据集

论文采用了KB-2k的音视频数据集。该数据集包含了单个录制人员的2543条广泛覆盖不同音位发音的文本句。录制人员在中性情绪下阅读文本句,并同时纪录音频和视频。所有的文本句都预先按照Arpabet音位编码进行手工的标注。

Arpabet是一组用于可视化表示音位的音标编码规范,包含了对元音、辅音、重音和辅助符号的音标描述。TIMIT为其扩展形式。

模型训练

音频特征与人脸表情动画特征之间为序列到序列的映射。常用的学习序列到序列的映射的方法(up to 2017)包括滑动窗口(sliding window model)和循环定义网络(recurrently defined model)。其中前者强调序列的局部短时相关性,而后者强调序列的长时相关性。基于以下的归纳偏置,论文采用了滑动窗口方法。

  • 由于协同发音与时序相关,因此在时序上协同发音对应的动画特征序列长度变化很大
    协同发音通常具备局部的短时相关性,而与较长序列无关。例如'prediction'和‘construction’中的'-tion'发音相同,而与其之前的字母序列无关。
  • 循环定义网络,包括RNN和LSTM网络虽然具备seq2seq的学习能力,但是不符合上述的归纳偏置,需要大量的训练数据才能得到较好的预测效果。论文也通过实验证明滑动窗口方法具有较好的性能特征。

使用滑动窗口方法进行模型训练的流程如下图所示(针对单个表情系数):

Sliding window regression pipeline

步骤一:首先将输入的音位帧序列按照长度为k_x的滑动窗口,划分为连续重叠子序列{x_1, x_2, ..., x_t},如图(b)
步骤二:将每个窗口内的序列作为输入,传递给前馈神经网络,输出对应长度为k_y的表情参数序列,如图(c)和(d)
步骤三:使用逐帧平均,在融合得到每帧对应的表情参数,如图(e)。

针对每个表情系数,均按照如上所述的方法进行计算,最终得到对应的表情系数特征向量。训练过程中,batch_size = 100。为了提高泛化能力,使用了概率为50%的dropout策略。

使用滑动窗口方法包含了k_xk_y两个超参。其中输入滑动窗口长度k_x需要足够大,从而保证输入给网络的子序列能够区部分相同的不同发音序列。例如两个发音序列部分相同,如果滑动窗口过短不足以包含不同的音序,则无法区分两个发音序列。而k_y过短则则容易受噪声的覆盖。但如果k_xk_y太过大,则需要增加更多的训练数据,才能保证网络学习到序列映射内部复杂的关联性。实际训练和推断过程中,k_xk_y的取值分别为11和5。

在线驱动

在线实时驱动的基本流程为:
步骤一:使用成熟的语音识别技术,将音频转换为音位序列。由于进行了文本转换,因此网络的实际输入与说话者的语言类型和发音类型无关
步骤二:在音位序列上,通过预定义长度的滑动窗口,选择子序列作为神经网络模型的输入,输出预测的表情动画系数
步骤三:将表情系数转移到其它3D目标模型上,实现表情动作的转移和驱动

动画重定向(Animation Retargeting)

有多种方法可以将表情动画转移到指定的目标模型,例如通过deformation transfer方法。另外一种方法是通过Rig-space的动画迁移方法。论文首先针对首4个人脸表情基各自的正负3方差时对应的人脸表情模型,作为动画迁移的基础参考模型,并同时记录其对应的表情系数。8个基础参考模型的形状合成定义为:
s_k^u=s_0+s_k*u\sqrt{p_k}, where \: u=\pm 3
其中s_0为中性表情模型,s_k为4个人脸表情基的offset偏移值,p_k为表情基对应的系数。针对目标模型,手动制作语义和表情上对应的目标模型的8个表情基础模型,其表情系数与基础参考模型的表情系数一一对应。如下图所示:

Facial rigs for animation retargeting

当网络输出新的表情系数,基于8个基础参考模型的表情系数进行线性插值计算,得到每个基础参考模型的贡献参数。计算公式如下:
w_k^u=max(\frac{\hat{p_k}}{u\sqrt{pk}}, 0)
其中\hat{p_k}为网络预测输出的表情系数。利用此参数合成目标模型的8个表情基础模型,即可得到目标模型上对应的表情驱动效果。

总结

本文采用了从音位序列到表情系数的映射方法,音位序列的生成通过现有的语音识别等技术从音频序列中得到。由于音位序列不包含语言学的先验,增加了若干与语言学先验相关的特征。手工设计的特征虽然比单纯用音位序列性能较好,但也增加了前期数据标注的工作量,尤其考虑到手工设计特征维度为2000+,而且针对其它语音的可扩展性还有待验证。该方法不论从数据集还是手工特征设计方面,都需要有一定的语言学相关领域知识。动画驱动过程使用了Rig-space Retargtting技术,需要预选手动的设计若干目标模型的参考表情。此外,类似目前其它的方法,训练和驱动过程中不包含任何情绪相关的信息。

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

推荐阅读更多精彩内容