目录
Figure 1. 我们展示了FaceScape,一个大规模详细的三维人脸数据集,由18760个具有孔级几何形状的纹理三维人脸模型组成。通过学习FaceScape的动态细节,我们提出了一种新的算法,从单个图像中预测详细的三维人脸模型,可以生成具有高几何细节的各种表达式。
本文的两大贡献
文中提出的模型如图所示,分为三个部分。
第一个部分就是拟合3DMM模型,作者使用的是双线性的表达方式。一般3DMM参数表达都是“最终人脸=表情参数*表情基底+身份参数*身份基底”这样的线性模型,而本文用的是“最终人脸=总基底*表情参数*身份参数”这样的双线性方程,作者展示了最终效果,说是挺不错的。
第二个部分就是预测置换贴图,置换贴图(displacement map)就是为了给基础的3DMM模型增加一些细节的。作者这里用了pix2pixHD这个GAN模型 ,输入是人脸的纹理图和deforming map,输出就是对应的displacement map了。这个deforming map就是计算了不同表情之间人脸网格对应点的位移向量,其实也就是替代了表情标签而已。
第三个部分就是动态细节生成,其实也就是给每个表情的置换贴图都加上一个attention matrix,最后将所有20中表情的置换贴图通过加权求和的方式得到最终适合目标表情的那个displacement map(因为人类不仅仅只有这20种表情,使用了加权求和就可以表示更多不同的表情了)。最后再将最终的displacement map放到拟合完的3DMM模型上生成最终人脸即可。
1. 简介
在本文中,我们提出了一个大规模详细的三维人脸数据集,人脸景观,并提出了一种新的算法,能够从单一图像输入预测复杂的三维人脸模型。FaceScape数据集提供了18760个纹理3D面孔,来自938个受试者,每个人都有20个特定的表情。三维模型包含了孔隙级的面部几何形状,它也被处理为拓扑统一的。这些精细的三维面部模型可以表示为一个粗糙形状的三维变形模型和详细的几何形状的位移图。利用大规模和高精度的数据集,进一步提出了一种新的利用深度神经网络学习表达式特定的动态细节的算法。学习到的关系是我们的单一图像输入的三维人脸预测系统的基础。与以往的方法不同,我们预测的三维模型在不同的表达式下具有高度详细的几何结构。这个前所未有的数据集和代码将向公众发布为研究目的。
1.1本文贡献
- 提出了一个大尺度高细节的三维人脸数据集FaceScape,采集938个人的20种表情,共18760个三维人脸
- 数据集三维模型具有孔隙级别的精度,并且被处理成拓扑一致性,如果想查看大致形状可使用3DMM系数,如果想更精细一点再加张位移图(displacement map,在图形学中有个专业术语叫置换贴图,这里翻译成位移图或许更容易从字面意思理解hhh)即可
- 提出了一种基于单张图片进行三维人脸重建并且可以自由编辑的方法
1.2 方法概述
- 将原始采集到的数据经过处理变成拓扑一致,之后建立双线性模型(类似于3DMM但有区别)将人脸控制权交给身份(或者说形状)和表情系数
- 先前的方法只能估计人脸大致形状,没有皱纹等小尺度特征,关键的问题在于如何去预测由表情变化导致的小尺度变化,比如眨眼,于是提出了动态细节方法
- 动态细节方法(精细重建)和双线性模型拟合方法(粗糙重建)结合,使得最终可编辑细节模型方法可行
- 系统包含三个阶段:基模型拟合,位移贴图预测,动态细节合成,整体结构如图所示:
2. 相关研究介绍
2.1 三维人脸数据集
三维人脸数据集比较稀少,如果按照获取方式来分类的话,有
- 基于模型拟合的数据集。如3DDFA这篇文章提出了一种用三维重建的方式进行人脸关键点检测的方法,从AFLW二维人脸数据集中抽取前2000张做成了AFLW2000-3D数据集;这类数据集虽然方便构建,但是缺点便是拟合的三维模型精度不确定并且缺乏形状上的细节(3DMM系数本身只能大致重建人脸形状,无法继续精细了)
- 基于深度传感器或扫描仪,或稀疏多视点相机系统。传统的深度传感器与3D扫描仪缺点是空间分辨率有限,无法覆盖面部几何细节;稀疏多视点相机系统缺点是重建时不稳定,不精确。
与上述数据集不同,facescape用了稠密多视点相机系统,用了68台数码单反(DSLR)相机,在建模质量上有了很大的提高,下面是与其它数据集的对比:
2.2 关于3DMM的研究
注意这不是指的人脸三维重建,而是对人脸3DMM系数本身的研究,作者认为主要分为两大类:
1. 将人脸参数空间划分成不同的维度,如身份,表情等,这样就能通过改变不同维度的信息进行人脸属性的控制与编辑(类似于神经渲染中的特征解耦合?反正目标都是类似的,为了能够自由编辑目标的各种属性)
2. 提高3DMM的表示能力,通过神经网络等方式表示3DMM基底。(比如非线性3DMM这篇文章,是将编码器输出的特征比作3DMM系数,将解码器比作PCA基底,这样用神经网络的方式进行人脸表示后,可以不再依赖三维人脸数据集,直接用野生二维数据进行训练即可,并且表示能力肯定也比正常3DMM要好很多)
2.3 关于单视图人脸形状重建
人脸三维重建其实主要分为两个方面:形状和纹理。人脸重建保证形状或纹理的一个方面足够精细,那我们完全可以说是高精度人脸重建,(比如GANFIT这篇文章没有在形状上下功夫,而是保证了纹理足够精确,依然可以说自己是高精度的,丝毫不影响人家现在已经商业化了hhh)而作者在这里着重讨论了关于形状上的高精度优化问题,因为3DMM系数重建的人脸形状本身只是个大致形状,无法表达人脸的皱纹等几何细节。为了解决形状上的高精度问题,有多层级优化结构方法,有先粗略重建形状渲染出深度图,再继续优化深度图的方法,有用SFSNet的,有用图形学中的凹凸贴图方法的,有用超分辨率与位移图的,有用条件GAN基于3DMM预测位移图的(《Photo-Realistic Facial Details Synthesis From Single Image》ICCV 2019 Oral)
不管怎样,本文的工作推动了这一方面的发展,因为迄今为止FaceScape是最大的质量最高的人脸数据集,并且之前的工作大多关注于静态人脸形状的细节,本文关注于恢复动态的形状细节
3. 本文数据集——FaceScape
3.1 面部捕捉
使用了多视图三维重建系统进行人脸原始数据的采集,用了68台数码单反相机,30台用8K分辨率拍正面,剩下的用4K分辨率拍侧面,总共花了6个月邀请938人来拍摄,年龄在16~70岁,大部分是亚洲人,并且让每个人做20组不同的表情,这样所有的三维模型达到了18760个。其中原始的人脸模型数据中顶点数量达2百万,三角形面数量达4百万,并且还统计了参与人的年龄,性别,工作信息等
3.2 拓扑一致性模型
1. 采集的原始数据肯定是无法直接用的,先下采样把这百万数量级的点和面变少一点
2. 之后注册一个模板人脸,这个模板人脸的每个点都是有特定的语义信息的(类似于BFM数据集的操作方式)
3. 然后对于每一个下采样后的人脸,我用这个模板人脸去“拟合”它,让这个模板人脸去表示每个采集到的人脸,具体方法是NICP(非刚性配准),这样就得到了拓扑一致性的人脸
4. 当然,我下采样之后,还用了NICP,人脸的精度肯定是有一定的损失的,为了弥补这种损失,使用位移图(displacement map)来进行弥补
5. 位移图具体而言,可以认为是针对每个顶点位置的微小修正,因为现在的mesh具有拓扑一致性,所以每一个顶点都有对应的一个确定的uv纹理坐标,可以把位移图的像素值,看做是这个像素点所对应的uv纹理坐标所对应的顶点的位置修正值,位移图应该能获得两个信息,正负信息和数值信息,代表这个顶点应当沿着这个顶点的法线方向正向或者负向移动多少距离
6. 因此,可以说数据集使用模板人脸表示粗糙的几何,使用位移图表示精细的几何,并且这种表示大大减少了原始数据的表示方式占用的存储
3.3 双线性模型
这里要解决的问题是使用一种参数化的方式来表示人脸身份(或者说是形状)和表情,因为毕竟采集到的人脸身份与表情是“离散”的,需要用某种“插值”的方式来表示更多的人脸身份与表情,经过一系列复杂操作后(塔克分解),对于一个新的不在数据集中的人脸,可以用如下简约的式子进行表示了:
将人脸的身份与表情分别用一组系数就可以进行表示了,而实验也证明了这种双线性模型表示能力的多样性
FW 数据集用了50个id参数与47个exp参数,FLAME数据集用了300个id参数和100个exp参数,而这里本文方法与它们对比时,分别用了50 47与300 52个参数
4. 人脸重建
4.1 基模型拟合
4.2 位移贴图预测
4.2.1 位移贴图介绍
这一步的目的是为了在粗略人脸重建的基础上进一步优化细节,而且还是动态的细节,因此需要用到位移贴图,但是单张的位移贴图肯定是无法表达动态变化的人脸的,只能表示静态的人脸细节,因此这里采用了神经网络去预测多张位移贴图。
具体而言,位移贴图其实可以分为两部分,一部分是静态的,一部分是动态的,静态部分其实相当于一些毛孔、痣之类的,本身反映人脸某种“不变”的特征,动态部分相当于皮肤的收缩和伸展,这些东西本身就是随着人的不同表情而变化,因此属于“变化”的特征,将位移贴图分为这两部分之后,可以分别进行提取,之后丢入神经网络去预测最后完整的位移贴图。静态部分可以从纹理图中得到,动态部分使用一张变形图(deforming map)进行表示(因为拍摄的人脸是静态的,至于怎么让它动起来,推测是根据拍摄的同一个人的人脸不同表情,去做一种过渡操作,比如计算uv空间下的两种表情的点的位移得到变形图),上述如图所示:
4.2.2 位移贴图预测
4.3 动态细节合成
注:部分摘自论文精读