1. 引言
三维人脸重建在影视娱乐[1]、人脸识别[2]、医疗健康[3]等领域有广泛应用,单张图像的三维人脸重建问题,本质上是在特定先验条件下,把二维人脸图像像素对应至三维坐标的问题。早期,主要使用基于形变模型的三维人脸重建方法。Blanz等[4]提出了三维人脸形变模型(3D Morphable Models, 3DMM),该模型运用主成分分析将三维人脸表征转化为线性模型,通过调节形状参数和纹理参数来实现相应人脸的模型重建。然而,由于采用线性基表示以及受训练数据类型和数量的限制,3DMM 对细节的重建效果欠佳。为解决这一问题,Blanz等[5]利用光流算法将数据进行稠密对应,使得人脸顶点一一对应。此外,巴塞尔人脸模型(Basel Face Model, BFM) [6]借助更优良的扫描设备以及性能更为卓越的非刚性迭代最近点(NICP)配准算法,对先前的模型进行了改进。基于模型的人脸重建已然取得了斐然的成就。然而,这些方法存在着固有的理论缺陷,致使其在视觉辨别和几何细节方面有所欠缺。一方面,数据集中采样人脸的分布与日常生活中的真实人脸存在不匹配的情况,进而使得重建结果不够准确,例如,由高加索人面部构建的模型可能无法精准模拟亚洲人面部。另一方面,在分解过程中,高频特征被舍弃,导致重建的人脸缺乏细节。随着深度学习技术越发普及,研究人员采用一个没有激活函数的全连接层来表示3DMM基底。为了提升模型的表达性,一些研究成果运用多个全连接层或卷积层对其进行替代,以增强网络的表达能力。例如,Tran和Liu [7]利用深度卷积神经网络将输入图像编码为形状、纹理以及投影参数,并对这些参数进行解码,以在渲染图像和真实图像之间应用重投影损失。上述运用先验模型的方法能够生成全局可靠的人脸几何,而在无先验模型方法中,一些先前的工作将面部地标作为对齐约束来拟合3D人脸。但是,稀疏的地标无法在密集的几何体上捕获足够的面部细节,所以此类方法通常生成的是缺乏微妙细节的通用3D面部形状。阴影形状(Shape-from-Shading)是一种经典的计算机视觉技术,用于从图像中恢复几何形状。在给定相机姿态、表面反射率以及物体阴影的条件下,通过SFS技术能够在特定的照明模型下渲染图像。因此,可以通过最小化输入图像和渲染图像之间的差异来恢复3D面部形状。基于SFS的方法能够恢复精细的几何细节,但存在着假设模型的限制,并且依赖于初始值来获取可靠的结果等缺陷。
近年来,一种两阶段或者三阶段的通用策略被提出,用于分离恢复全局形状和局部细节的重建过程。在粗化阶段,利用先验人脸模型来产生3D人脸重建的初步结果。接下来,在精细阶段引用SFS [8]和DCNNs [9]等技术以捕捉几何上的精细细节。例如,Richardson [10]等首先依靠3DMM从给定图像中重建粗糙的面部形状,然后将3D形状渲染成深度图,通过深度网络将其与细节相结合。Zeng [11]等使用三个级联的CNN模块从输入图像生成深度图,并逐步添加局部特征。Zeng等[12]并非训练成本高昂的深度网络,而是生成光滑的3D人脸,并使用局部校正变形场对其进行增强,最后实现SFS优化以恢复精细的几何细节。
尽管在单个图像中精细地重建人脸方面取得了显著成功,但恢复准确的局部细节依然面临挑战。然而现有算法的鲁棒性相对较弱,难以适应多种场景。此外,现有算法的重建结果也存在着个性化不足的问题,即无法准确保留人脸个体特征(如皱纹等),导致细节提取的能力有限。
针对上述问题,本文设计了多尺度细节的高保真三维人脸重建模型,主要贡献如下:第一,在提取特征阶段,设计了A2D-ResNet50 [13]网络结构,在网络的第四层设计了残差可变核卷积,提取细节特征。第二,引入了RTV [14]细节一致性损失函数,在图像预处理阶段使用相对总变分算法保留图像的主要几何信息,减少细节上的干扰;第三,本文改进了特征点损失函数,通过在3D特征点上应用拉普拉斯变形技术,强化了特征点提取的精确度。实验结果表明,所提出的模型在人脸重建中捕捉了更多细节特征,显著提升了面部细节的重建质量,并在精度与鲁棒性方面超越了现有方法。
2. 算法模型
本文构建了一个基于多尺度细节的高保真三维人脸重建模型。如图1所示,该模型以ResNet50 [15]为主干网络,利用包含RTV细节一致性损失和3D特征点损失的多层级特征损失来训练优化网络。网络提取出重建所需的3DMM参数、位姿参数以及光照参数,最后通过可微分渲染器SoftRas将重建的三维人脸映射到二维图像平面,生成渲染图像。
Figure 1. Algorithm flowchart
图1. 算法流程图
2.1. 网络模块
为了解决人脸识别和特征提取过程中的精度问题,设计了一种名为“Alterable 2D Convolution ResNet50”(A2D-ResNet50)的网络模块,专注于三维人脸重建任务。
如图2所示,该网络结合了ResNet50架构和残差可变核卷积模块,ResNet50在捕捉多尺度和空间上下文信息方面表现优异,而残差可变核2D卷积模块操作使得网络能够自适应地建模人脸表情中的局部特征。残差可变核2D卷积模块通过自适应的卷积采样机制,捕获人脸表情中的不规则特征,并提取多尺度的情绪信息。
Figure 2. Network structure diagram
图2. 网络结构示意图
在残差可变核2D卷积-ResNet50中,残差可变核2D卷积模块将替换ResNet50中Stage 4的标准卷积模块。Stage 4通常负责提取高阶的语义信息,并且具备较大的感受野,因此在此处应用残差可变核2D卷积模块可以大幅提升网络对复杂特征的理解能力。
残差可变核2D卷积模块通过学习一组偏移量来改变卷积核的采样位置。对于每个输入特征点,偏移量根据输入数据的局部特征动态调整,从而使卷积核能够在特征图上自适应地扩展感受野。该操作可以捕捉到更多不同尺度的语义信息,特别是在处理人脸表情中不规则的局部变化时,能够提供更强的特征表达能力。
残差连接依然保留,即在每个卷积操作之后,网络仍然将原始输入特征与经过残差可变核2D卷积处理后的特征相加,以保持梯度的稳定性并促进训练的收敛性。通过这种方式,网络能够在增强特征提取能力的同时,保持ResNet50的原有优势。通过引入残差可变核2D卷积模块,ResNet50不再依赖于固定的卷积采样位置,而是能够通过学习动态调整采样点,从而更好地捕捉表情变化中的细微差异。
残差可变核卷积模块
普通的2D卷积由以下两步实现,首先通过2D卷积核在输入特征
上进行采样。其次,采样值由权重函数
加权求和。具体来说,扩张率为1的
普通卷积核可以表述为:
(1)
其中,
表示输出特征中的一个位置,
表示
卷积采样网格
中的第
个值。
是采样网格的大小。
可变核卷积是在传统卷积的基础上通过学习得到卷积核大小和偏移量来扩展感受野,从而增强网络的分割能力,在本文中研究发现
卷积采样网格更适合人脸特征提取的任务。首要步骤是把C*H*W的输入特性导入到标准2D卷积中,从而产出2N*H*W的偏移量特征图。针对二维空间的形状变化(也就是沿着高度和宽度的方向的改变),我们将这些偏移特性的通道数量设定为2N。接着,利用学习到的偏移量来指导普通卷积采样网格的变形,生成可变核卷积采样网格。最后,使用可变核卷积采样网格生成输出特征。
可变核卷积的公式为:
(2)
其中,
表示
卷积采样网格中第
个值对应的偏移量。由于偏移量通常为小数,本文使用双线性插值来生成精确的采样值。
残差可变核卷积模块如图3所示,本文将其作为编码器的基本组件。计算流程如下:首先,上一层输入经过
的卷积核降维,Layer Normalization (LN),接着通过可变核卷积(Akconv),然后通过 LeakyReLU (LReLU)激活函数,随后,再次经过Layer Normalization和
的卷积核升维,最终,所得输出与上一层输入通过跳线连接(skip connection)相加,生成下一层的特征图。残差可变核卷积模块在编码器中第l + 1层的输出表达式如下所示:
(3)
其中,LReLU表示LeakyReLU激活函数,LN表示层归一化,Akconv表示可变核卷积操作。输出特征图
是输入特征图
经过可变核卷积后的输出,并通过残差连接与原输入相加得到。
Figure 3. Residual variable 2D convolutional module diagram
图3. 残差可变核2D卷积模块示意图
2.2. 损失函数
本文利用无三维标签的二维人脸数据进行三维重建,弱监督信号的设计对最终重建效果至关重要。为了在输入人脸图像与渲染图像之间建立联系,本算法结合了不同维度的图像特征,包括低维度的像素光度损失、中维的人脸关键点损失以及高维的人脸身份识别损失,形成了多层面的弱监督损失函数,旨在最小化以下损失:
(4)
其中,
,
,
,
是平衡各损失项重要性的权重指数。
(1) 低层加权像素级损失
为了使输入图像与渲染图像高度一致,采用直接计算像素差异的方法来捕捉低维度信息。通过分割掩码与相对总变分(RTV),进一步优化了模型对细节与纹理的关注度:
(5)
依托人脸解析分割算法,该算法能够识别出头发、帽子等遮挡物,同时借助分割掩码mask精确定位眉毛、眼睛等人脸部位在图像中的具体位置。因此,在计算这类损失时,通过赋予不同区域适当的权重,增强模型对人脸特征部位纹理的关注,提升三维人脸重建纹理的真实感。这部分低维度的加权像素损失可表示为:
(6)
其中,V表示渲染后人脸图像的可见区域,
代表该区域内的像素位置。因此,只需比较输入图像对应区域的像素即可。此外,掩码权重
的主要功能是通过分割掩码判断可见区域内是否存在如头发、帽子等遮挡物,若有则将该区域权重设为0,以避免遮挡对重建的影响。同时,对于重要人脸特征区域如眼睛和眉毛,权重设定为2,而皮肤等其他人脸区域的权重保持为1,如图4。
Figure 4. Face segmentation algorithm result image
图4. 人脸分割算法结果图
另外,相对总变分通过引入窗口固有变差(Windowed Inherent Variation, WIV)来对图像中的不同梯度进行自适应的惩罚。这种方法能够更好地区分图像中的噪声和有效结构,从而在去噪的同时更好地保护图像的边缘和纹理细节,如图5。
Figure 5. RTV algorithm result image
图5. RTV算法结果图
在RTV算法的帮助下提取到的特征信息可以被区分为细节区域和非细节区域,其中细节区域取权重为1,非细节区域则取权重为0,让模型更加关注这些人脸特征部分的细节信息。该部分的加权像素损失可定义为:
(7)
(2) 中层人脸特征点损失
本文利用目前最先进的人脸特征点检测算法来检测无标签二维图像的68个人脸特征点{u} (如图6)和渲染后的68个人脸特征点{u′}作为一种弱监督信号。u、u′经相机坐标系转换后得到3D坐标v,v′。
Figure 6. Feature point detection result image
图6. 特征点检测结果图
代表拉普拉斯变形[16],拉普拉斯变形通过对顶点之间的相对差异施加约束,确保局部细节对齐的同时保持全局形状的完整性。通过特征点损失,网络结构可以被有效地引导,从而更准确地学习人脸的形状、表情和姿态参数。在图像处理和计算机图形学中,拉普拉斯算子通常用于检测图像中的边缘,它是一个二阶导数算子,可以用来衡量图像亮度变化的速率。拉普拉斯算子的一个常见形式是:
(8)
在离散的情况下,拉普拉斯算子可以近似为:
(9)
使用专门为人脸特征点检测任务设计的损失函数
,计算一个中层特征的人脸特征点损失:
(10)
(3) 高层人脸身份损失
仅使用低维的像素级损失很可能会导致局部极小值问题,因此考虑图像的高维度特征。对于一个人脸识别网络,从输入图像和重建图像中提取的人脸特征信息是有一定关联的。FaceNet [17]是一种非常优秀的人脸识别网络,给定一张二维人脸图像,FaceNet可输出一个 128 维的人脸特征向量。因此,本算法在训练过程中利用预训练的FaceNet人脸识别网络,同时提取输入二维人脸图像和重建渲染图像的 128 维人脸特征向量,并计算两者之间的余弦距离:
(11)
通过该损失函数,可以有效避免模型陷入局部极小值问题。此外,尽管同一人在不同图像中可能有不同的位姿和表情,但人脸识别网络仍应能够识别出同一身份。基于这一特性,算法在计算高维度的人脸身份损失时,通过对重建的三维人脸的位姿和表情参数进行随机偏置,确保变换后的渲染图像与输入图像的人脸身份保持一致。类似地,两张渲染图像的人脸身份也应保持一致。
(12)
(13)
因此,在该算法中,在计算人脸身份损失时,对从重建中得到的面部表情参数β和位姿参数m进行小范围的随机变换,以模拟多视角和多表情的变化,从而帮助训练出更鲁棒的网络结构。
(4) 正则化损失
由于3DMM参数服从正态分布,如果从无标签的二维人脸图像中回归得到的3DMM参数值偏离零点过多,可能导致三维人脸重建出现扭曲。因此,为了避免这种情况,算法在3DMM人脸形状、表情和纹理参数上添加正则化损失,以限制其偏离,从而作为一种弱监督信号。
(14)
3. 实验分析
为了全面评估本文提出的三维人脸重建算法的性能,本文采用了定性和定量两种评估方法,以确保算法的有效性得到充分验证。在定性评估方面,本文精心挑选了Aflw2000数据集[18]和NoW数据集[19]中的部分样本进行可视化展示,以直观呈现重建效果。此外,为了更深入地衡量算法的性能,本文还采用了FaceScape基准进行了一系列定量评估。
3.1. 实现设置
3.1.1. 数据集
本研究致力于基于单张图像的三维人脸重建技术。为了确保数据的质量和多样性,本文选择了包含多个图像的个体的人脸数据集作为训练集。具体来说,本文使用了VGGFace2数据集[20]和BUPT-Balancedface数据集[21]。
VGGFace2数据集考虑了姿势、年龄、照明和职业等多种因素,包含了来自9131名不同个体的约331万张图像。然而,该数据集主要覆盖了白种人面孔。为了平衡不同种族的人脸数据分布,本文还引入了BUPT-Balancedface数据集,该数据集包含了亚洲人、印度人、非洲人和白种人的约130万张图像。
3.1.2. 实验细节
实验的硬件环境包括Intel®Core i9-10920X CPU和NVIDIA RTX 3090 GPU。软件环境为Ubuntu20.04,编程语言为Python 3.9,基于PyTorch架构进行算法开发。为了优化训练过程,本文选择了Adam作为优化器,初始学习率设置为0.0001,batch大小为18,并采用SoftRas作为可微分渲染器。为了进一步提高训练速度,本文利用CUDA和cuDNN对GPU进行加速。
3.2. 实验结果及分析
3.2.1. 定性分析
为了验证本算法在细节重建能力和鲁棒性方面的表现,本文将其与多个先进的人脸重建算法进行了对比。如图7所示,与Extreme 3d [22]、Facescape [23]、Cross-Model [24]、DECA [25]方法相比,本算法能够更完整地重建头部结构,包括面部形状和表情。
此外,本算法在眼部、鼻部、额头等关键部位的重建上展现出了更多的细节特征,如图8,且重建结果更全面地覆盖了输入图像的面部区域。这表明残差可变核卷积模块是有效的。
Figure 7. Comparison chart of other algorithms
图7. 其他算法实验对比图
Figure 8. Original algorithm experiment comparison chart
图8. 原算法实验对比图
实验结果还显示,模型在30˚,60˚,90˚,120˚和150˚的视角下的重建上都具有更高的表现力,如图9,这进一步证实了多层级特征损失能够丰富模型的特征表示。下图展示了本算法在细节重建方面的显著效果。
Figure 9. Multi-angle Views
图9. 多视角效果图
3.2.2. 定量分析
本文遵循FaceScape基准中的评估方法,评估重建形状在照片拍摄时的准确性,这意味着姿势和表情也被纳入误差计算。通常情况下,CD测量整体形状的准确性;MNE测量局部形状的准确性;CR则表示结果面部是否完整。表1与表2分别展示了对比最新的Extreme 3d、PRNet [26]、Deep3DFaceRec [18]、RingNet [19]、DFDN [27]、Facescape方法的度量误差。
在两个数据集的多个姿态角度(0˚、30˚、60˚)下,本文算法在 CD(整体形状准确性)和 MNE(局部形状准确性)上表现优异,尤其在较大姿态角度(60˚)时,与其他方法相比仍然保持较高的准确性和一致性。例如,在自然场景基准中,60˚姿态时的CD值(4.11)低于大部分对比方法,仅次于Facescape,说明本文算法能够在更大角度的复杂场景中有效保留面部形状的整体精度。
本文算法在面部完整性(CR)指标上也表现较为突出,尤其在0˚和30˚角度的实验室基准中,CR 值分别为0.96和0.87,高于大部分对比方法。这表明本文算法在重建完整的面部结构上具有优势,能较好地保持面部特征的完整性。
本文算法在不同的指标上均排名靠前,展示了在多个指标上较为均衡的表现。在FaceScape自然场景和实验室基准中的各姿态下,本文算法在CD、MNE、CR三项指标上均能跻身前列,说明其方法不仅在全局和局部精度上达到了较好的平衡,而且在面部结构的完整性方面表现稳定。
尽管在较大的角度(如实验室基准中的30˚和60˚)上CD和MNE指标会有所波动,但本文算法在多个角度的 CR 指标上依然保持在高水平。这种一致性表明,本文方法在面对姿态变化时具有较强的鲁棒性,能够在不同角度和光照条件下实现较高的重建质量。
综上所述,本文算法在面部三维重建任务中具有较强的整体精度、良好的面部完整性和出色的鲁棒性,尤其在姿态变化较大的场景中,依然能够稳定地提供高质量的重建结果。
Table 1. Quantitative evaluation on FaceScape in-the-wild benchmark
表1. 在FaceScape自然场景基准上的定量评估
Pose Angle |
0˚ |
30˚ |
60˚ |
Method |
CD |
MNE |
CR |
CD |
MNE |
CR |
CD |
MNE |
CR |
Extreme 3dface |
4.96 |
0.15 |
0.61 |
5.57 |
0.17 |
0.56 |
7.55 |
0.21 |
0.41 |
PRNet |
2.64 |
0.11 |
0.83 |
3.07 |
0.11 |
0.83 |
4.27 |
0.11 |
0.79 |
Deep3DFaceRec |
3.21 |
0.09 |
0.78 |
4.13 |
0.11 |
0.77 |
5.74 |
0.11 |
0.71 |
RingNet |
2.41 |
0.08 |
0.99 |
2.98 |
0.08 |
0.99 |
4.85 |
0.10 |
0.98 |
DFDN |
3.65 |
0.09 |
0.86 |
3.30 |
0.09 |
0.86 |
0.72 |
0.12 |
0.84 |
Facescape |
1.96 |
0.07 |
0.85 |
2.76 |
0.08 |
0.82 |
3.91 |
0.11 |
0.77 |
本文算法 |
2.62 |
0.08 |
0.86 |
3.62 |
0.09 |
0.86 |
4.11 |
0.09 |
0.85 |
Table 2. Quantitative evaluation on FaceScape in-the-lab benchmark
表2. 在FaceScape实验室场景基准上的定量评估
Pose Angle |
0˚ |
30˚ |
60˚ |
Method |
CD |
MNE |
CR |
CD |
MNE |
CR |
CD |
MNE |
CR |
Extreme 3dface |
4.59 |
0.13 |
0.86 |
7.42 |
0.17 |
0.69 |
8.51 |
0.17 |
0.55 |
PRNet |
2.94 |
0.13 |
0.93 |
3.39 |
0.12 |
0.81 |
3.74 |
0.12 |
0.85 |
Deep3DFaceRec |
3.99 |
0.11 |
0.87 |
5.90 |
0.12 |
0.81 |
5.54 |
0.13 |
0.75 |
RingNet |
3.62 |
0.10 |
0.99 |
5.02 |
0.11 |
0.99 |
6.82 |
0.15 |
0.94 |
DFDN |
4.27 |
0.11 |
0.98 |
6.71 |
0.13 |
0.95 |
23.62 |
0.27 |
0.81 |
Facescape |
3.21 |
0.09 |
0.94 |
4.87 |
0.12 |
0.86 |
4.68 |
0.14 |
0.81 |
本文算法 |
2.40 |
0.08 |
0.96 |
7.27 |
0.12 |
0.87 |
3.86 |
0.11 |
0.91 |
4. 总结
本文提出了一种基于多尺度细节的高保真三维人脸重建算法,通过设计A2D-ResNet50网络,引入残差可变核卷积模块和相对总变分细节损失函数,有效提升了细节特征提取能力和局部几何细节的恢复精度。实验结果表明,该算法在FaceScape自然场景基准下,姿态角度为60˚时的整体形状准确性(CD)为4.11,局部形状准确性(MNE)为0.09,显著优于Extreme 3D( CD = 7.55, MNE = 0.21)。在实验室基准下,该方法的面部完整性(CR)在不同角度均超过0.85,表现出较强的鲁棒性和对细节的重建能力。本文研究为解决复杂场景中的三维人脸高保真重建问题提供了有效方法,未来将继续探索复杂表情建模和细节恢复技术的优化路径。