前言

目前无论是学术界还是工业界对人脸的研究有两个方向,其一民用级,通过技术泛化为用户提供低精的产品,这些技术在工业级高精度上是无法满足需要的,主要因为算法泛化丢失了人脸的低频信息(五官的细微差别)。其二工业级,从人脸生物力学仿真层面,持续提高精度,FACEGOOD走在这个方向,在技术适当泛化的基础上,其将人脸关键点跟踪推向了极致,目前已将精度推到10万级,该技术可用于工业级换脸、表情捕捉等场合。

人脸关键点检测在安防、金融、娱乐等领域具有广泛的应用,可以说已经成为非常基础的算法,我们先来回顾一下它的发展历史,Tim Cootes & Chris Taylor在1995提出了一种新的方法(Active Shape Model)开创了人脸关键点对齐的先河,ASM引入了统计模型来解决对齐问题,紧接着三年之后,他俩在此基础上发展出了Active Appreance Model,这个方法有很重的历史地位,要知道当时人脸对齐问题是个很棘手的事,传统的CV算法太粗暴,难以应付人脸这种高纬特征,AAM之后算是进入了一个正确的方向,为后来神经网络方法奠定了基础,基本思想是ASM并没有考虑到纹理特征,只是对landmark训练了一个统计模型出来,AAM进一步优化了ASM,在回归的过程中加入了纹理特征,这样就解决了特征的泛化匹配的问题,使得人脸对齐更加鲁棒。20年之后,在众多研究者不断推动下2D人脸对齐问题已经彻底解决了,算法也已经白菜化,随便在github都有大量的精度不错的开源项目。

3DMM

与此同时,在1998年有两位研究人员又开辟了一条新赛道,他们提出了3D对齐算法,将人脸对齐推向了一个全新的维度,这套方法目前已经成为现在工业界主流的算法流程,现在工业界习惯上把它叫做3DMM,虽然并不严谨,但我们姑且沿用这样一个定义,3DMM计算结果是在人脸上拟合并投影出一个3D点云,它的应用就非常丰富了,美颜、表情捕捉、通过照片生成一张人脸等等都用了类似的技术。

公式1

如上图所示基本思想是:一张脸可以由多个不同的人脸通过线性组合得出,换句话说,给出一张人脸,要得出3D模型,就是一个系数的回归问题,了解AAM的同学一眼就看出来这个公式就是AAM公式,也可以说这是AAM的另一种应用,其中S是平均脸,s是特征向量,ai是权重系数。Tmodel是用来拟合人脸纹理,同样使用线性组合得出。3DMM是一个非常初期的idea,他的计算结果并不理想,现在来看只能算玩具级,主要是PCA在精度上的丢失是很严重的。

2008年,一篇论文的发表将3DMM的精度进一步推广,公式1只采样了人脸在某一时刻的表情,因此在表情上没有考虑到其他情况,导致精度丢失。这篇论文增加了一个维度,因此叫“双线性模型”,在人脸基础上加上了表情因素,这样的计算结果更加可信。

公式2

这个双线性公式在公式1的思路上增加了一个系数a,表示不同表情,b表示不同的个体,w是人脸数据库,到此3DMM在算法流程上完整了,为日后Facewarehouse等应用奠定了基础,后面的故事大家都知道了Facewarehouse推出了自己的数据库及应用思路,讲到这里我们对前面这些研究做个总结。

3DMM缺点是很明显的,在技术泛化这条路上一路狂奔,忽略了人脸非常多的细节,尤其是高频低幅度的表情细节,在个体上体现非常明显,造成这个局面的原因有两个,基于统计的回归并不精确,是一个模糊解,3D数据库模型的采集多数用成本低廉的设备生成,精度不高,两者加起来,3DMM在高精应用场景可以说完全无法满足需求,更不可能达到工业级超高精度需要。

FACEGOOD 3DMM

图示1 BFM & SFM 模型

图示2 FACEGOOD 模型

为了更精确的计算人脸的3D信息,并能适用于工业级业务场景,FACEGOOD团队采用相机阵列方式采集了100个不同个体的3D模型,每个人有43个不同的表情,以及他们对应的高精度皮肤材质数据,至于这些数据建立了FACEGOOD 3DMM模型。

目前开源的数据库主要有BFM跟SFM两个,同时还有一个Facewarehouse仅供学术研究使用,对比这些数据库,FACEGOOD 3DMM主要体现在精度上,抛弃kinect这类民用级扫描技术,使用相机阵列的方式,可以完全重建人脸的所有肖像特征,如上图所示,图示2是FACEGOOD数据,图示1是SFM数据,后者在细节上损失很大,基本上只保留了人脸的大概特征。

神经网络的优势主要在技术泛化上有很好的表现,但在高精度场合并非理想选择,为了达到高精度跟踪人脸的3D特征,包括脸型、五官的深度、微表情的变化等,FACEGOOD研发人员使用传统算法实现了这一套方案,目前已经在超写实数字人上开始应用。

传统绑定的问题

表情动画方面在ilm、weta digital等为首的特效公司目前都已经在使用肌肉了,这里说的表情肌肉不是ziva dynamics那种计算果冻效果的,例如在用力摇头的时候,口轮轧肌会抖动,这类高频motion就是果冻效果,利用有限元分析可以对这类弹性力学现象仿真,ziva的肌肉是基于这类理论实现的。表情动画的肌肉方案有两个路线,根据人脸从内到外建立肌肉模型,解决肌肉运动后,再推算出皮肤的形变,最终产生表情,理论上,只要肌肉的运动足够接近真实,这种做法的效果是最好的,在2016年研究过这个方向,有篇论文做了一些初步研究:run.usc.edu/cs520-s12/f。当时判断这个方向太理想化,难度非常大,就放弃继续深入了,而且目前看起来学术界在这个方向上也没有继续发展。第二个路线,也就是我们目前采用的路线,ilm跟weta digital也用了同样的技术路线,在alita、avenger、the planet of apes里面大放异彩,效果甩blendshape动画好几个维度,我简单介绍一下思路,人的同一个表情,在每次出现时幅度跟形状都是不同的,我们只要保证计算出来的表情跟实际误差最够小,就可以接近演员的表情了,怎么做到这一点呢?

我们先看一下Blendshape绑定的问题,bs绑定有个巨大缺陷,就是我们假设了人的每个表情只是幅度的不同,形状都是一样的。但实际情况是,同一个表情,每次做的时候形状也是不同的,如果微分到人脸上的每个点,这个解基本上是无穷的。试图解决这个问题,只能把bs数量放大,但实际上到了几百个bs后人工绑定的要求就非常高了,1k以上的绑定需要手艺很好的老师傅才能完成,而且国内这种人非常少,国外的绑定成本高得离谱,而且最终问题还是解决不了,因为bs动画无论加到多少,它都是一维的。

粗暴一点,拿iphonex举个例子,51个bs,bs动画的数学原理就是对这些表情求和,最终得出表情,每次只是变化幅度不一样,形状完全一样,线性组合嘛,问题就在这个线性,每次变化都是一维的,就算加到10w个bs,它也是一维的。给出公式:

F(w)是最终表情,Base是自然pose,对其余表情求和,w就是权重,很显然这个过程是线性的。第一代表情捕捉技术就是对w求值,这个公式的逆过程,因此像facegood P1、faceware、dynamixyz这类产品非常依赖于绑定,绑定做不好,算出来的表情是没法看的。上面指出了bs绑定的理论缺陷,但也并非bs完全没用,我们的解决方案是这样的,在bs绑定的基础上计算了一次肌肉,保留bs主要是为了方便动画师对动画二次加工,保留bs绑定,看一下我们是怎么解决这个缺陷的。

首先第一步是bs权重的计算,bs绑定,w的计算就是表情捕捉要计算的结果,计算公式就是求和公式的逆过程,把上面换个形式,如下图:

faceware跟dynamixyz在算这个权重w的时候也是有很大缺陷的,给到一个视频后,需要用户k几个关键pose,然后跟当前帧做线性回归,当用户k的pose超过个位数后,回归的结果会变得混沌,精度变得非常差,这就是为什么当台词多的时候,尤其是对白超过30秒后,效果非常差,另外还有个致命弱点,因为是根据pose来推算权重w,就导致人脸的局部肌肉的运动是算不出来的,例如苹果肌,一般只能由嘴部表情联动,这种效果是不精确的,容易导致僵尸脸。

FACEGOOD 方案

我们的做法是不用用户k关键pose,我们根据当前表情,计算出所有bs的权重,最终得出当前表情的粗解,如上图公式。为什么叫粗解,因此此时的结果是无法完全匹配到演员的,原因我们开始已经解释过了,人的表情,每次的形状都是有差异的,bs只记录的某个时刻的外观。我们要做的就是在bs权重计算完之后再做一次修正,如下图:

此时计算完bs权重后,可以看到内嘴唇是没有完全匹配到演员的,我们在这个基础上计算肌肉,这一步已经完全脱离了bs的一维线性空间变成顶点动画了。

肌肉计算完后,可以看到嘴唇已经完全匹配了,这时bs动画变为顶点动画,这是全自由度解,完美匹配真人的表情。尤其是细微的、高频的微表情,例如嘴唇的粘连、眼轮匝肌四周微小高频的motion等。第一步bs权重的粗算得到了八九不离十的大表情,最终算完肌肉后,演员的“神情”就被计算出来了,尤其是眼睛中的情绪,都可以还原,下图为完整算法。

以下这种级别的匹配度,可以说100%匹配,bs绑定就算细分到1k也是做不到的。因为人的微表情变化是无穷的,表演的灵魂恰恰都在其中。

参考文献:

· 微表情在戏剧表演中对艺术真实塑造的作用,曹娜,衡阳师范学校音乐系,2016

· T.F. Cootes and C.J. Taylor and D.H. Cooper and J. Graham (1995). “Active shape models – their training and application”. Computer Vision and Image Understanding

· Cootes, T. F.; Edwards, G. J.; Taylor, C. J. (1998). “Active appearance models”. Computer Vision — ECCV’98. Lecture Notes in Computer Science.

· Bilinear Model for 3D Face and Facial Expression Recognition,Iordanis Mpiperis,Fellow,IEEE,2008.

· Ekman and W. Friesen. Facial Action Coding System: A Technique for the Measurement of Facial Movement. Consulting Psychologists Press, Palo Alto, 1978.

· BRADLEY, D., HEIDRICH, W., POPA, T., AND SHEFFER, A. 2010. High resolution passive facial performance capture. ACM Trans. Graph. 29, 4 (July), 41:1–41:10.

· PIGHIN, F. H., SZELISKI, R., AND SALESIN, D. 1999. Resynthesizing Facial Animation through 3D Model-based Tracking. In Proc. 7th International Conference on Computer Vision, Kerkyra, Greece, 143–150.

· WEISE, T., BOUAZIZ, S., LI, H., AND PAULY, M. 2011. Realtime performance-based facial animation. ACM Transactions on Graphics (Proceedings SIGGRAPH 2011) 30, 4 (July).LIU, X., MAO, T., XIA, S., YU, Y., AND WANG, Z. 2008. Facial animation by optimized blendshapes from motion capture data. Computer Animation and Virtual Worlds 19, 3–4, 235–245.

· LI, H., ADAMS, B., GUIBAS, L. J., AND PAULY, M. 2009. Robust single-view geometry and motion reconstruction. ACM Transactions on Graphics (Proceedings SIGGRAPH Asia 2009) 28, 5.

· BALTRUSAITIS, T., ROBINSON, P., AND MORENCY, L.-P. 2012. 3D constrained local model for rigid and non-rigid facial tracking. In Computer Vision and Pattern Recognition (CVPR 2012).

· CHUANG, E., AND BREGLER, C. 2002. Performance driven facial animation using blendshape interpolation. Tech. rep., Stanford University.