随着计算机技术的发展, 三维人脸重建成为计算机视觉领域热门的研究课题. 相较于二维人脸, 三维人脸包含更多特征信息, 能够应用于更丰富的实际生活场景, 如人脸识别[1]、影视娱乐[2]、医疗美容[3]等.
近年来, 基于单张二维人脸图像重建三维人脸的工作取得了巨大的成功[4], 本文将现有三维人脸重建技术大致分为两大类: 传统重建方法和基于深度学习的重建方法. 目前自动化程度最高、应用最广泛的传统重建方法是基于统计模型的三维人脸形变模型(3D Morphable Model, 3DMM)[5], 但该方法主要问题是其迭代拟合过程中的计算代价过大、重建效率偏低.
随着深度学习在计算机视觉领域取得重大突破, 很多学者研究了如何利用深度学习对二维人脸图像进行3DMM三维人脸形状和纹理系数估计. 深层神经网络提供了从图像像素到三维模型参数的回归学习能力, 然而利用深度学习进行三维人脸重建的首要问题是获取三维人脸数据的代价过高, 训练数据不足.
一种常用的解决训练数据不足的方案是先通过传统的三维人脸重建方法生成大量三维人脸合成数据作为训练数据. Tran等[6]针对训练数据不足的问题, 利用一种多图像3DMM估计方法生成足量带标签的三维人脸数据,并在ResNet-101上训练回归3DMM模型系数, 实现基于单张二维人脸图像的三维人脸重建. Richardson等[7]通过随机采样3DMM模型, 修改模型参数后生成新的三维人脸后进行渲染得到二维图像, 将生成的新的三维人脸和渲染投影后的二维图像作为一组训练对并作为CNN网络模型的输入. 然而, 当面对二维人脸图像中存在遮挡、不寻常的光照时, 这些纯粹由合成数据训练的网络表现的并不好. 除此以外, 大量的实验结果表明合成的图像往往缺乏真实特征, 对重建精度易产生负面影响.
另一种解决训练数据不足的方法是直接从大量无三维标注的二维人脸图像中学习3DMM系数. Tewari等[8]首先提出了从无标签的二维人脸图像中直接学习3DMM系数的方法, 他们训练了一个自动编解码网络以同时预测3DMM人脸形状、纹理、姿势、光线等参数, 该方法不需要三维标注与二维人脸图像的监督数据对. 然而, 由于该方法的训练损失函数是基于图像像素的, 网络容易混淆相关变量之间的变化. Genova等[9]进一步改进了这一方法, 通过使用预先训练的人脸识别网络, 如VGG-Face或谷歌的FaceNet, 在损失函数中添加了高层特征的约束.
此外, 目前大多数基于单张图像的三维人脸重建算法只重建三维人脸几何形状信息, 后续为增强真实感直接使用纹理贴图方法将图像中人脸纹理映射到三维人脸上. 该方法最大的问题是由于人脸图像存在不可见区域,侧脸、耳朵以及脖子处的纹理将无法获取; 对于存在遮挡或大姿态情况下的二维人脸图像, 大面积不可见区域的人脸纹理更是无法直接从二维图像中提取.
针对以上问题, 本文提出一种可同时重建三维人脸形状和纹理信息的弱监督学习算法. 首先针对训练数据不足问题, 本文设计了一种multi-level的弱监督损失函数, 可直接从大量二维人脸图像中学习多种弱监督信息来监督网络模型学习. 对于人脸纹理重建, 本文通过可微分渲染器SoftRas[10]将重建后的三维人脸渲染至二维图像平面与输入人脸图像建立起像素级别的弱监督信息, 从而实现对人脸纹理信息的约束与重建. 此外为避免遮挡对人脸纹理重建造成影响, 本文首先利用基于CelebAMask-HQ数据集[11]训练的人脸解析分割算法去除遮挡. 实验结果显示, 相较于其它三维人脸重建算法, 本文算法的重建质量与重建精度均有显著提升.
2 网络模型与关键技术本文提出的重建算法的整体框架如图1所示. 给定无三维标签的二维人脸图像I, 先用人脸解析分割算法计算人脸分割掩码mask, 利用该mask可去除人脸面部的遮挡并使模型更关注人脸中如眼、眉毛等重要部位. 此外利用目前最先进的人脸特征点检测算法[12]计算68个人脸特征点lmk作为弱监督信息. 随后将去遮挡后的图像作为输入, 通过CNN模型回归输出代表各关键系数的特征向量, 包括3DMM、位姿以及光照参数, 完成三维人脸重建. 为实现重建三维人脸纹理信息, 给定位姿和光照参数, 利用可微分渲染器SoftRas将重建三维人脸映射到二维图像平面, 得到渲染图像I', 从而实现与输入图像I之间的像素级别的纹理监督信号. 将输入图像和渲染图像输入一个人脸识别网络计算高维度的身份识别损失,实现一种基于multi-level损失函数的CNN网络模型, 以取得更好的重建结果.
2.1 模型参数
为实现同时重建三维人脸形状和纹理信息, 需要借助CNN卷积神经网络强大的特征提取能力, 从二维人脸图像中提取3DMM人脸参数、位姿参数以及光照参数以实现基于单张二维人脸图像的三维人脸重建.
(1)三维人脸形变模型3DMM
传统三维人脸形变模型3DMM将三维人脸统一用两个向量表示:
${{S}} = {\left( {{x_1},{y_1},{{\textit{z}}_1},{x_2},{y_2},{{\textit{z}}_2}, \cdots ,{x_n},{y_n},{{\textit{z}}_n}} \right)^{\rm T}} \in {{{R}}^{3n}}$ | (1) |
${{T}} = {\left( {{r_1},{g_1},{b_1},{r_2},{b_2}, \cdots ,{r_n},{g_n},{b_n}} \right)^{\rm T}} \in {{{R}}^{3n}}$ | (2) |
其中, 形状向量S表示三维人脸形状, 纹理向量T表示三维人脸纹理. 由于人脸空间被假设为一个线性空间, 任何一张三维人脸都可以由线性子空间内的其它三维人脸线性组合表示, 利用主成分分析法PCA进行降维与去相关后, 新的三维人脸模型可表示为:
${{{S}}_{\rm new}} = \overline {{S}} + {{{A}}_{\rm id}}\alpha + {{{A}}_{\rm exp}}\beta $ | (3) |
${{{T}}_{\rm new}} = \overline {{T}} + {{{A}}_{\rm tex}}\delta $ | (4) |
其中, S和T分别代表平均人脸形状和纹理向量,
(2)相机模型
假设三维人脸中顶点为
${{v}} = f*{{P}}*{{R}}*{{{V}}_{3d}} + {{t}}$ | (5) |
其中, f为缩放因子, P是相机矩阵, 因本文使用弱透视投影模型, P为正交矩阵
(3)光照模型
光照模型, 也称明暗模型, 用于计算物体某点处的光强. 光照估计就是从图片中获取光照信息, 从而降低光照对纹理的影响. 本文采用球谐函数(Spherical Harmonics, SH)来估计二维人脸图像中的光照信息.
对于三维人脸模型中的一点
$I(p) = t \cdot \sum\limits_{j = 1}^9 {{\gamma _j}} {h_j}(n)$ | (6) |
其中,
综上, 为实现基于单张二维人脸图像的三维人脸形状和纹理重建任务, 需准确预测输入人脸图像的各关键参数, 包括3DMM人脸形状参数
为了在三维人脸模型和二维渲染人脸图像间建立起像素级别的监督, 使用可微分渲染器(Soft-Rasterizer, SoftRas)对重建后的三维人脸渲染生成二维人脸图像, 从而重建出精度更高, 更有真实感的三维人脸.
可微分渲染器SoftRas将渲染过程看作是一个聚合函数, 不同于传统渲染器只选择最近的三角形的颜色的离散采样操作, SoftRas假设所有的网格三角形对每个渲染的像素都有概率贡献, 融合所有三角形对渲染像素的概率贡献, 即可获得最终的渲染结果. 作为一个真正可微分的渲染框架, SoftRas能够生成从像素到三维网格顶点、纹理、法向量等属性的有效梯度, 因此可以将SoftRas作为一个通用框架应用在深度神经网络模型中, 从而为基于单张无三维标签图像的三维重建任务提供一种像素级别的监督信号.
2.3 人脸解析分割算法由于训练数据中很可能会因为人脸区域内存在如头发、帽子、眼镜等遮挡物, 造成重建后相应遮挡区域内的人脸纹理出现问题. 因此需要对训练数据进行预处理以避免遮挡物对最终的重建效果造成影响.
在实际数据中, 最常见的遮挡是头发对人脸的遮挡, 而传统的肤色检测算法并不能很好区分与肤色像素相近的头发. 因此本文采用基于CelebAMask-HQ数据集的人脸解析分割算法,为输入图像去除遮挡.
CelebAMask-HQ数据集是一个高分辨率的人脸图像集, 每张图像都定义了19种面部属性的分割掩码, 包括人脸器官如皮肤、眼睛、眉毛、头发等, 以及一些外界遮挡如眼镜、帽子等物体. 本文在CelebAMask-HQ数据集上训练语义分割网络BiseNet[15], 实现一个人脸解析分割算法, 为训练数据计算人脸图像的分割掩码mask, 从而在计算像素级损失时仅计算去除遮挡的人脸区域, 该人脸解析分割算法效果如图2所示.
2.4 损失函数本文仅通过无三维标签的二维人脸数据重建三维人脸, 因此, 如何设计有效的弱监督信号对最终的重建效果至关重要. 为了实现输入人脸图像与渲染人脸图像间的对应关系, 本算法充分考虑了图像的多个维度层面的特征, 包括低维度的加权像素级光度损失, 中层的人脸特征点损失以及作为高维度的人脸身份识别损失, 最终实现一种multi-level的弱监督损失函数. 因此, 整个网络模型的目的是最小化如下损失函数:
$L = {\lambda _{{\rm{pixel}}}}{L_{{\rm{pixel}}}} + {\lambda _{{\rm{lmk}}}}{L_{{\rm{lmk}}}} + {\lambda _{{\rm{id}}}}{L_{{\rm{id}}}} + {\lambda _{{\rm{reg}}}}{L_{{\rm{reg}}}}$ | (7) |
其中,
(1)低层加权像素级损失
为使输入图像和重建渲染图像尽可能相似, 最简单直观的方法是直接计算两张图像间低维度的像素差异. 得益于人脸解析分割算法, 不仅能检测出如头发、帽子等遮挡物, 还可以根据分割掩码mask准确判断各人脸器官如眉毛、眼睛等在图像中的位置. 因此,在计算这部分损失时, 添加一定的权重让模型更加关注这些人脸特征部位的纹理, 使重建三维人脸纹理更具真实感. 该部分低维度的加权像素损失可定义为:
${L_{{\rm{pixel}}}} = \frac{M}{{|\rm{V}|}}\sum\limits_{(i,j) \in {V}} {{{\left\| {{I_{(i,j)}} - I_{(i,j)}^\prime } \right\|}_2}} $ | (8) |
其中, V代表了渲染后人脸图像的可见区域,
(2)中层人脸特征点损失
本文利用目前最先进的人脸特征点检测算法来检测无标签二维图像的68个人脸特征点
$ {L_{\rm lmk}} = \left\{ {\begin{array}{*{20}{l}} {w\ln \left( {1 + \displaystyle \frac{{\left| {\Delta {Q_{\rm lmk}}} \right|}}{\epsilon }} \right),\;\;\;{\rm{ if }}\left| {\Delta {Q_{\rm lmk}}} \right| < w}\\ {\left| {\Delta {Q_{\rm lmk}}} \right| - c,\;\;\; {\rm{otherwise }}} \end{array}} \right. $ | (9) |
其中,
(3)高层人脸身份损失
仅使用低维的像素级损失很可能会导致局部极小值问题, 因此考虑图像的高维度特征,对于一个人脸识别网络, 从输入图像和重建图像中提取的人脸特征信息是有一定关联的. ArcFace[17]是目前最优秀的人脸识别网络, 给定一张二维人脸图像, ArcFace可输出一个512维的人脸特征向量. 因此, 本算法在训练过程中利用预训练的ArcFace人脸识别网络, 同时提取输入二维人脸图像I和重建渲染图像I'的512维人脸特征向量
${L_{\rm id}} = f(I) \cdot f\left( {{I^\prime }} \right)$ | (10) |
通过该损失, 可以避免模型出现局部极小值问题. 此外, 对于人脸识别网络, 尽管同一个人在多张图像中呈现不同的位姿、表情, 最终识别的结果仍是同一个人. 基于人脸识别网络这一特性, 本算法在计算高维度的人脸身份损失时, 通过对重建后的三维人脸的位姿与表情参数随机添加一个偏置,变换后的人脸渲染图像I''与输入图像I中的人脸身份应仍是一致的. 同理, 两张渲染图像的人脸身份也应是一致的, 即:
$L_{\rm id}^\prime = f(I) \cdot f\left( {{I^{\prime \prime }}} \right)$ | (11) |
$L_{\rm id}^{\prime \prime } = f\left( {{I^\prime }} \right) \cdot f\left( {{I^{\prime \prime }}} \right)$ | (12) |
因此, 本算法在计算人脸身份损失时, 对重建得到的人脸表情
(4)正则化损失
由于3DMM参数是服从正态分布的, 若从二维无标签人脸图像中回归的3DMM参数值偏离零点太多, 则重建的三维人脸可能是扭曲的, 因此为了防止人脸形状和纹理退化, 为回归的3DMM人脸形状、表情和纹理参数添加了正则化损失项作为一种弱监督损失:
${L_{\rm reg}} = {\omega _{\rm id}}{\rm{||}}\alpha {\rm{|}}{{\rm{|}}^2} + {\omega _{\rm exp}}{\rm{||}}\beta {\rm{|}}{{\rm{|}}^2} + {\omega _{\rm tex}}{\rm{||}}\delta {\rm{|}}{{\rm{|}}^2}$ | (13) |
综上, 通过上述介绍的multi-level的多种弱监督损失函数, 可以在不同程度上约束待回归的人脸形状、表情、纹理、位姿以及光照参数, 从而能够训练出一个鲁棒且具有真实感的三维人脸重建网络模型.
3 实验分析 3.1 实现细节本文算法基于Pytorch深度学习框架, 采用ResNet-50网络模型, 将最后一层全连接层修改为314维, 并采用Adam方法优化参数, 设置初始学习率为1×10−4, batch size设为16, 共训练101340次迭代, 10个epoch. 训练过程中, 各损失函数的权重
为能够定性定量地评估本章算法的重建结果, 将从重建质量以及重建精度两方面来验证模型的有效性. 重建质量部分首先将本算法在特定图像上的重建结果与目前一些先进的三维人脸重建算法如Tran等[6]、MoFA[8]以及Genova等[9]算法的重建结果在不同的人脸数据集如MoFA-test以及LFW数据集上选择若干人脸图像进行视觉上的对比比较, 如图3与图4所示, 部分实验结果图来源于文献[9].
由图3与图4可以看出, 本文算法对于人脸形状和纹理的重建都优于另外几种算法, 本文算法重建得到的三维人脸的面部轮廓以及五官形状与输入图像更为一致, 更能体现人脸的身份特征. 此外, 其它几种算法在面对不同肤色不同光照的人脸图像时重建得到的人脸纹理信息并没有较大差别, 相较而言本文算法能够更加真实地反映人脸纹理信息. 除了人脸形状和纹理信息外, 本文算法还可以准确预测输入人脸图像的表情.
为了验证本文算法在大姿态或遮挡情况下仍能较好完成三维人脸形状和纹理重建, 在二维人脸图像中存在大姿态或遮挡的情况与普通的纹理贴图方法进行了对比实验, 如图5所示. 可以看出, 对于存在遮挡或大姿态的人脸图像, 被遮挡部分的纹理信息并不能够从输入二维人脸图像中提取, 因此传统的纹理贴图方法将无法提取不可见区域的纹理信息, 得益于人脸解析分割算法,在面对存在遮挡或大姿态的人脸图像时, 本文算法仍能重建出具有真实身份特征的真实感三维人脸.
最后, 为验证本文人脸重建算法的鲁棒性, 对同一身份处于不同姿态、表情、光照条件下的多张二维人脸图像进行重建, 结果如图6所示. 实验结果表明, 本算法提出的多视角多表情的高维度人脸身份损失能够有效提升重建模型的鲁棒性, 对于同一身份在不同表情、姿势、光照条件下仍能输出较为一致的三维人脸模型.
3.3 重建精度
为了评估本算法的重建精度, 将本算法重建得到的三维人脸模型与MICC数据集中的ground truth三维真值人脸模型进行定量的对比评估, 并与目前一些优秀的三维人脸重建算法进行了比较.
MICC数据集中除了利用专业设备扫描得到的作为ground truth的真实三维人脸扫描模型外,还包括53个受试者的3段短视频, 包括交互、室内以及室外3种场景. 与其它基于单张图像重建的算法类似, 本文对视频中的每一帧图像都进行三维人脸重建, 并取平均作为最终的三维人脸模型.
为公平比较本算法与文献[6]、文献[9]等算法之间的重建精度, 首先采用文献[6]中的方法, 用球心在鼻尖, 半径为95 mm的球体对真实三维人脸网络进行裁剪, 从而只考虑人脸面部区域的重建精度. 随后, 采用文献[9]中的对齐方法, 将重建三维人脸网格与真实三维人脸网格进行密集对齐, 随后计算point-to-plane点对面距离误差. 表1展示了不同算法在MICC数据集中载3种不同视频片段下的重建三维人脸与真实三维人脸间的点对面距离的平均误差(以mm为单位).
由上表结果表明, 与其它两种先进的重建算法相比, 本算法最终的重建精度取得了约10%的提升, 其中一个主要原因是文献[9]算法虽然考虑了高维度的身份损失, 但没有考虑低维度的像素级损失, 本算法不仅通过可微分渲染器实现了一种加权光度像素损失, 还实现了多姿势多表情的身份识别损失, 在一定程度上提升了模型参数回归的能力.
4 结论与展望本文提出了一种基于单张二维人脸图像的同时重建三维人脸形状和纹理信息的算法. 为解决训练数据不足问题, 本文设计了一种multi-level的弱监督损失函数, 直接从大量二维人脸图像中学习多种弱监督信息. 为避免遮挡对人脸纹理重建造成影响, 本文利用一种人脸解析分割算法进行预处理. 实验结果显示, 相较于其它算法, 本文算法的重建质量与重建精度均有显著提升, 且本算法对二维图像中存在遮挡或大姿态等问题有较强的鲁棒性. 然而,目前本方法受限于三维人脸形变模型3DMM,重建出的三维人脸表面有些平滑, 并不能很好地凸显人脸皮肤纹理细节特征, 因此在接下来的工作中, 将考虑研究一种更为细节的三维人脸重建算法, 能够在重建过程中考虑如人脸皱纹等细节重建, 进一步提升重建三维人脸的真实感.
[1] |
Abate AF, Nappi M, Riccio D, et al. 2D and 3D face recognition: A survey. Pattern Recognition Letters, 2007, 28(14): 1885-1906. DOI:10.1016/j.patrec.2006.12.018 |
[2] |
Dornaika F, Davoine F. Head and facial animation tracking using appearance-adaptive models and particle filters. Proceedings of 2004 Conference on Computer Vision and Pattern Recognition Workshop. Washington, DC, USA. 2004. 153.
|
[3] |
Scherbaum K, Ritschel T, Hullin M, et al. Computer‐suggested facial makeup. Computer Graphics Forum, 2011, 30(2): 485-492. DOI:10.1111/j.1467-8659.2011.01874.x |
[4] |
Zollhöfer M, Thies J, Garrido P, et al. State of the art on monocular 3D face reconstruction, tracking, and applications. Computer Graphics Forum, 2018, 37(2): 523-550. DOI:10.1111/cgf.13382 |
[5] |
Blanz V, Vetter T. A morphable model for the synthesis of 3D faces. Proceedings of the 26th Annual Conference on Computer Graphics and Interactive Techniques. Los Angeles, CA, USA. 2002. 187–194.
|
[6] |
Tran AT, Hassner T, Masi I, et al. Regressing robust and discriminative 3D morphable models with a very deep neural network. Proceedings of 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu, HI, USA. 2017. 1493–1502.
|
[7] |
Richardson E, Sela M, Kimmel R. 3D face reconstruction by learning from synthetic data. Proceedings of the 20164th International Conference on 3D Vision (3DV). Stanford, CA, USA. 2016. 460–469.
|
[8] |
Tewari A, Zollhöfer M, Kim H, et al. Mofa: Model-based deep convolutional face autoencoder for unsupervised monocular reconstruction. Proceedings of 2017 IEEE International Conference on Computer Vision. Venice, Italy. 2017. 3735–3744.
|
[9] |
Genova K, Cole F, Maschinot A, et al. Unsupervised training for 3d morphable model regression. Proceedings of 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City, UT, USA. 2018. 8377–8386.
|
[10] |
Liu SC, Chen WK, Li TY, et al. Soft rasterizer: A differentiable renderer for image-based 3D reasoning. Proceedings of 2019 IEEE/CVF International Conference on Computer Vision. Seoul, Republic of Korea. 2019. 7707–7716.
|
[11] |
Lee CH, Liu ZW, Wu LY, et al. MaskGAN: Towards diverse and interactive facial image manipulation. arXiv: 1907.11922, 2019.
|
[12] |
Bulat A, Tzimiropoulos G. How far are we from solving the 2D & 3D face alignment problem? (and a dataset of 230, 0003D facial landmarks). Proceedings of 2017 IEEE International Conference on Computer Vision. Venice, Itala. 2017. 1021–1030.
|
[13] |
Paysan P, Knothe R, Amberg B, et al. A 3D face model for pose and illumination invariant face recognition. Proceedings of the 20096th IEEE International Conference on Advanced Video and Signal Based Surveillance. Genova, Italy. 2009. 296–301.
|
[14] |
Cao C, Weng YL, Zhou S, et al. FaceWarehouse: A 3D facial expression database for visual computing. IEEE Transactions on Visualization and Computer Graphics, 2014, 20(3): 413-425. DOI:10.1109/TVCG.2013.249 |
[15] |
Yu CQ, Wang JB, Peng C, et al. BiSeNet: Bilateral segmentation network for real-time semantic segmentation. Proceedings of the 15th European Conference on Computer Vision. Munich, Germany. 2018. 334–349.
|
[16] |
Feng ZH, Kittler J, Awais M, et al. Wing loss for robust facial landmark localisation with convolutional neural networks. Proceedings of 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City, UT, USA. 2018. 2235–2245.
|
[17] |
Deng JK, Guo J, Xue NN, et al. ArcFace: Additive angular margin loss for deep face recognition. Proceedings of 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach, CA, USA. 2019. 4685–4694.
|