数字人技术系列一:3DMM人脸建模技术20年来的洞察

举报
ljw 发表于 2022/04/27 22:28:57 2022/04/27
【摘要】 人脸建模在计算机图形学和计算机视觉领域都产生了大量研究。这两个领域都会使用人脸建模技术,当然每个领域都有自己的方式。在计算机图形学中,面部建模对于面部合成和动画至关重要。在计算机视觉中,对面部及其变形进行建模可用于面部的自动分析。这包括面部识别、面部表情识别、面部动作单元检测和情绪检测等。

人脸建模在计算机图形学和计算机视觉领域都产生了大量研究。这两个领域都会使用人脸建模技术,当然每个领域都有自己的方式。在计算机图形学中,面部建模对于面部合成和动画至关重要。在计算机视觉中,对面部及其变形进行建模可用于面部的自动分析。这包括面部识别、面部表情识别、面部动作单元检测和情绪检测等。

本文今天主要讨论的部分,是下图中红框当中的内容,后文也会稍微发散到其他模块中。

自从3D变形人脸模型首次在SIGG’99上展示以来,人脸建模技术已经发展20年了。布兰茨和维特开创新地提出并解决了许多附属问题,他们的研究结果被认为是开创性的。而随着深度学习技术的不断普及和使用,新的人脸分析、合成和建模技术也被纳入更多的研究中。

3DMM这一类技术,从一开始就基于两个关键设想:一是通用人脸模型可抽象出点对点的特征信息,人们可以基于这种特征进行匹配、查询和合成等后续操作,所以线性人脸合成就有了理论依据;二是脸的形状和颜色分离,能使得模型更加灵活。在一开始,3DMM技术不仅仅使用像素和特征点匹配的方法, 还使用了光流(optical flow,即观察者和场景相对运动引起的视觉场景中物体表面和边缘的运动表示)、参数曲面化和线性插值等方法。然而理论终究是理论,10年后,2009年第一个公开可用的3DMM才由Paysan等人发布出来。

人脸建模有几个具体问题,我们简单介绍下:一是人脸捕捉(获取3D面部数据),二是建模面部形状和外观的方法,三是从3D模型生成2D图像的方法,四是如何从2D图像重建3D人脸。

首先是人脸数据捕捉。毫无疑问,受控场景下的人脸数据集采集是非常必要的。当前深度学习非常普及,一些学者直接用未经处理过的数据去学习,但是最终效果会有出入。所以,我们会看到很多研究者致力于建立一些公开的基本数据集。这些数据集也在该研究领域产生了重大影响,许多重要的方法都离不开这些公开数据集的贡献。

人脸形状最常用建模方式是基于三角形网格的,当然还有许多其他的方法。一般而言,激光扫描仪是常见的有源多视角的测量方式。随着相机和手机等技术的发展,现在无源测量方式成为业界首选。而人脸的光照情况,也是从最初的单点光源光照,变成多点光源,乃至最后到全照明模式(lightstage,即光笼)。现在深圳华强北一套山寨光笼价格都降到几十万一套了,光笼普及成为大众设备也将指日可待。

部分人脸部位需要其它的采集方式,例如眼睛和角膜部分等。总之人脸捕捉技术远远领先于人脸建模技术。时至今日,人脸技术仍然有很多公开的挑战。接下来看看人脸建模技术的情况。

人脸建模技术的研究者,经常吐槽的一点是好的数据集太少。采集人脸数据比想象中困难很多。尤其是男同学想想给女生拍照的事,如何拍出自然状态下的标准数据? 拍摄结构会随着拍摄环境、设备参数、拍摄技巧乃至于被采集者的状态变化而发生变化。当然理论上也要有所准备,例如人类到底有多少种表情?这里乱入一个心理学的研究成果,FACS系统,最初由瑞典解剖学家Carl-Herman Hjortsjö开发的系统,后来被Paul Ekman和Wallace V. Friesen采用,并于1978年出版。2002年,该系统还进行了一次重大更新。FACS系统根据人体面部肌肉的运动判断面部外观瞬间的细微变化并进行编码,系统性地对人的情绪进行物理表达,并进行分类。FACS系统广泛用于心理学和动画师的工作中。

人脸建模的有三种类型的工作要做,一是通用模型,描述全局模型和局部模型的变化;二是解决不同不同表情中几何变化(经常使用的是线性叠加,例如加法模型和乘法模型,最近又有人使用非线性模型);三是外观、照明和着色,这将由单独的系统来解决。为了计算形状、表情或外观模型,统计是在人脸数据数据库上执行的。传统方法一直是使用3D扫描生成人脸,最近一些方法能够直接从2D图像学习人脸模型。扫描得来的数据比较冗杂,一般会用一个基本模板网格来清理扫描出来的数据(预处理);然后在这些扫描点之间建立解剖对应关系模型和Mesh网格。可以使用 S S 来标记某个Mesh的形状,对于其中第 i i 个顶点, v i R 3 \mathbf{v}_{i} \in \mathbb{R}^{3} ,如果以向量 c \mathbf{c} 表示包含 v i \mathbf{v}_{i} 的坐标,表示为 c R 3 n \mathbf{c} \in R^{3 n} 。而第 i i 个三角形,可表示为 t i = ( t i 1 , t i 2 , t i 3 ) { 1 , , n } 3 \mathbf{t}_{i}=\left(t_{i}^{1}, t_{i}^{2}, t_{i}^{3}\right) \in\{1, \ldots, n\}^{3} t i 1 , t i 2 , t i 3 t_{i}^{1}, t_{i}^{2}, t_{i}^{3} 分别表示对应顶点 v t i 1 , v t i 2 , v t i 3 \mathbf{v}_{t_{i}^{1}}, \mathbf{v}_{t_{i}^{2}}, \mathbf{v}_{t_{i}^{3}} 。而一个形状空间,可以定义为一组连接在一起的 n n 个顶点的集合,当然这顶点集合都在 R 3 \mathbb{R}^{3} 中。如果以统计方法建模的参数为 d d 维,以包含多个顶点集合的向量 w \mathbf{w} 来表示 d d 维参数的空间,则 w R d \mathbf{w} \in \mathbb{R}^{d}

由于人脸的先验知识比较明显,通用人脸特征可以用概率密度分布函数 f ( w ) f(\mathbf{w}) 表示,其中 w \mathbf{w} 就是对应人脸的特征向量。此时,从统计模型向3D Mesh分布模型转换需要完成数学映射工作,其生成器函数可记为 c : R d R 3 n \mathbf{c}: \mathbb{R}^{d} \rightarrow \mathbb{R}^{3 n} ,从而完成将低维参数向量 w \mathbf{w} 映射到所有顶点坐标的向量。这里再次使用 v i ( w ) R 3 \mathbf{v}_{i}(\mathbf{w}) \in \mathbb{R}^{3} ,来引用 w \mathbf{w} 给出的网格的第 i i 个顶点。而之前我们谈到的布兰茨和维特开创的新方法,就是在这里把PCA方法引入进来,构造了连线生成器函数 c \mathbf{c} ,而 c ( w ) = c + E w \mathbf{c}(\mathbf{w})=\overline{\mathbf{c}}+E \mathbf{w} ,其中 c \overline{\mathbf{c}} 是在训练数据上计算的平均值, E R 3 n × d \mathrm{E} \in \mathbb{R}^{3 n \times d} 是包含在形状差 { c i c i } \left\{\mathbf{c}_{i}-\overline{\mathbf{c}}_{i}\right\} 上计算的协方差矩阵的 d d 个最主要特征向量的矩阵,而 w i \mathbf{w}_{i} 是低维形状参数向量。 这种数学处理办法,后续研究者一直在借鉴,例如把PCA优化作为重要的推动手段以获得更好的形状生成器函数。这种数学方法其实是假设通过线性插值可以生成新的3D人脸。因此也产生了加法模式和乘法模式等的不同人脸拟合方法。

非线性方法中的面部形状和表情主要是用线性子空间建模的。2017年,马普所的研究者引入FLAME,用一个关节表达头部模型,通过将下巴关节与线性表情混合形状结合起来,提供对面部表情的非线性控制。Koppen等人在2018年使用由物理模拟驱动的肌肉激活模型。最近,非线性方法得到广泛研究,联合建模方法正在逐步取代PCA方式,因为皮肤颜色、纹理、关节形状甚至是雀斑和黑色素等越来越需要被考虑进来。2019年有研究者还提出了一种深度卷积彩色网络自动编码器,它可以学习形状和纹理的联合非线性模型。

当前3DMM人脸合成方法中,大多数模特的统计数据仅限于面部,而不包括眼睛、嘴内部或头发的信息。很明显,这些细节对于许多应用程序至关重要。PCA类的方法没有解释性且不包含语义信息。因此这种无监督方法不足以明确地指明该如何改善模型。3DMM当前的困境还反映在到底还需要多少参数才能准确表达不同细节水平面部外观,并且也无法确定什么是最优的模型组合。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。