面部驱动技术:摄像头怎么抓到你的表情

了解更多

工具简介

面部捕捉靠的是先在人脸上钉几十个关键点,再转成一组表情推子。本文用调音台比喻讲清表情驱动原理,解释数字人表情为什么会僵,无非推子不够、幅度被压平、缺少微表情,并告诉你怎么用素材质量把效果拉回来。

你对着镜头录了一段自我介绍,想给自己做一个数字人分身。成片出来,嘴型对得上,可整张脸像打了过量肉毒,笑的时候只有嘴角在动,眼睛一点没变。这不是模型不行,是面部驱动这一环出了问题。它要做的事其实很朴素:从摄像头画面里读出你的表情,再照着做一遍。

一、第一步是找人脸:在画面里钉几十颗钉子

机器看一张脸,第一步不是理解情绪,而是定位。它会在脸上找出几十个固定位置:眼角、鼻翼、嘴角、眉峰、下巴轮廓,行业里把这些位置叫关键点。就像裁缝量体,先在你身上定几个基准点,后面的尺寸才量得准。这一步靠的是训练过的图像模型,它见过上百万张标注好的人脸,知道眼睛大概长什么样、鼻子大概在哪个位置。现在多数方案会分两级来做:先把整张脸粗粗框出来,再在框里精确定位,就像先用地图找到城市,再去找街道和门牌,两级下来稳定性好很多。关键点定住了,机器才知道这张脸此刻是什么形状:嘴角是往上还是往下,眼睛是睁着还是眯着,眉毛是平着还是皱着。所以摄像头画质差、光线乱,定位就先歪了,后面的表情自然跟着歪。

二、从点到表情:几十根推子一起动

有了关键点,还要把它翻译成数字人能听懂的语言。行业里的做法叫表情基,英文叫 blendshape。你可以把它想成一排调音推子:左边第一根管嘴角上扬,第二根管眉毛下压,第三根管眼睛闭合,几十根推子各管一个细微变化,全部归零就是一张没有表情的脸。真人笑的时候,机器先算出这次笑需要哪几根推子、各推到什么位置,再把这一组数值发给数字人,数字人照着把推子推到同样位置,表情就复现了。所以数字人的表情丰富不丰富,就看它的推子有多少根、每根推得有多细。

三、表情为什么会僵:三个绕不开的限制

第一是推子不够用。真人脸上有四十多块表情肌,能组合出的表情成千上万,而多数方案只有几十根推子,只能覆盖大笑、皱眉、惊讶这些大类,中间那些说不清道不明的过渡表情就丢了。第二是幅度被压平。为了不让画面崩掉,很多系统会给表情设一个安全上限,笑起来只到七成,久了就显得客气而疏远。第三是缺少微表情。真人说话时眉毛会不自觉跳一下,鼻翼会轻轻动,眼球会微颤,这些幅度极小的动作恰恰是活着的信号,而它们最容易被省掉。这三条限制叠在一起,就形成那种说不上来的僵感:五官都在动,可它们动的时机和幅度不像同一个人在同步发力。

四、眼神是最后一道坎

还有一处特别难:眼睛。真人的眼球一直在微微转动,看镜头时会有焦距的变化,眨眼也不是均匀的,而是一会儿快一会儿慢。数字人的眼睛如果只是定时眨一下、瞳孔固定不动,观众说不出哪里怪,但就是觉得不对。这也是为什么有些团队宁可让数字人戴一副眼镜,用镜片反光遮住眼神的呆板。想让眼神活起来,通常要给眼球单独加一层驱动,让它随着说话内容做小幅扫视,眨眼间隔也做成随机的,而不是固定每四秒来一次。

五、素材质量决定效果上限

同一套算法,喂不同素材,结果差很远。用手机前置摄像头在昏暗房间里随便拍,画面噪点多、脸部细节糊,机器抓关键点就会飘,最后表情也跟着抖。用相机在均匀光线下拍,脸部轮廓清楚、没有强烈阴影,效果立刻上一个台阶。另外要注意,戴框架眼镜会有反光,留厚刘海会挡住眉毛,浓妆会改变轮廓判断,这些都会让驱动变差。想少走弯路,拍摄时记住三条:光线均匀、脸不遮挡、正对镜头。还有一个容易被忽略的变量是说话内容本身,念产品参数和讲一个笑话,脸上该有的活动量差很多,脚本干巴巴,再好的驱动也只能照着干巴巴地演。

判断一个数字人的表情做得如何,别在它笑的时候看,在它不说话的时候看。真人静下来,脸上仍有细微起伏;数字人静下来,往往就凝固成一张照片。这中间那点动静,就是这项技术的全部功夫。