APP下载

基于弱监督学习的三维人脸形状与纹理重建①

2020-11-24董兰芳

计算机系统应用 2020年11期
关键词:纹理人脸形状

吴 越,董兰芳

(中国科学技术大学 计算机科学与技术学院,合肥 230027)

1 引言

随着计算机技术的发展,三维人脸重建成为计算机视觉领域热门的研究课题.相较于二维人脸,三维人脸包含更多特征信息,能够应用于更丰富的实际生活场景,如人脸识别[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 网络模型,以取得更好的重建结果.

图1 模型训练流程图

2.1 模型参数

为实现同时重建三维人脸形状和纹理信息,需要借助CNN 卷积神经网络强大的特征提取能力,从二维人脸图像中提取3DMM 人脸参数、位姿参数以及光照参数以实现基于单张二维人脸图像的三维人脸重建.

(1)三维人脸形变模型3DMM

传统三维人脸形变模型3DMM 将三维人脸统一用两个向量表示:

其中,形状向量S表示三维人脸形状,纹理向量T表示三维人脸纹理.由于人脸空间被假设为一个线性空间,任何一张三维人脸都可以由线性子空间内的其它三维人脸线性组合表示,利用主成分分析法PCA 进行降维与去相关后,新的三维人脸模型可表示为:

其中,S和T分别代表平均人脸形状和纹理向量,Aid,Aexp和Atex分别表示人脸形状、表情和纹理PCA 主成分.本文中的三维人脸形状和纹理信息来源于Basel Face Mode 模型[13],三维人脸表情信息来源于FaceWarehouse三维人脸表情库[14].通过改变3DMM人脸形状参数 α、表情参数 β以及纹理参数δ,即可生成新的三维人脸.

(2)相机模型

假设三维人脸中顶点为V3d,通过弱透视投影将三维人脸顶点投影至二维平面顶点v的过程可表示为:

其中,f为缩放因子,P是相机矩阵,因本文使用弱透视投影模型,P为正交矩阵[[1,0,0],[0,1,0]],R为旋转矩阵,t为平移向量.三维人脸的位姿参数即可用[f,R,t]表示.

(3)光照模型

光照模型,也称明暗模型,用于计算物体某点处的光强.光照估计就是从图片中获取光照信息,从而降低光照对纹理的影响.本文采用球谐函数(Spherical Harmonics,SH)来估计二维人脸图像中的光照信息.

对于三维人脸模型中的一点p,点p处的像素纹理信息即为p处的反照率(去除光照和阴影后的皮肤纹理) 乘以球谐基函数的线性组合:

其中,t代表顶点p处的皮肤纹理,n=(nx,ny,nz)代表法线方向,hj代表9个球谐基函数,γj表示球谐基函数的系数,即光照系数.

综上,为实现基于单张二维人脸图像的三维人脸形状和纹理重建任务,需准确预测输入人脸图像的各关键参数,包括3DMM 人脸形状参数 α ∈R100、人脸表情参数 β ∈R80、人脸纹理参数δ ∈R100、人脸位姿参数m∈R7以 及光照条件参数γ ∈R27.

2.2 可微分渲染器SoftRas

为了在三维人脸模型和二维渲染人脸图像间建立起像素级别的监督,使用可微分渲染器(Soft-Rasterizer,SoftRas)对重建后的三维人脸渲染生成二维人脸图像,从而重建出精度更高,更有真实感的三维人脸.

可微分渲染器SoftRas 将渲染过程看作是一个聚合函数,不同于传统渲染器只选择最近的三角形的颜色的离散采样操作,SoftRas 假设所有的网格三角形对每个渲染的像素都有概率贡献,融合所有三角形对渲染像素的概率贡献,即可获得最终的渲染结果.作为一个真正可微分的渲染框架,SoftRas 能够生成从像素到三维网格顶点、纹理、法向量等属性的有效梯度,因此可以将SoftRas 作为一个通用框架应用在深度神经网络模型中,从而为基于单张无三维标签图像的三维重建任务提供一种像素级别的监督信号.

2.3 人脸解析分割算法

由于训练数据中很可能会因为人脸区域内存在如头发、帽子、眼镜等遮挡物,造成重建后相应遮挡区域内的人脸纹理出现问题.因此需要对训练数据进行预处理以避免遮挡物对最终的重建效果造成影响.

在实际数据中,最常见的遮挡是头发对人脸的遮挡,而传统的肤色检测算法并不能很好区分与肤色像素相近的头发.因此本文采用基于CelebAMask-HQ 数据集的人脸解析分割算法,为输入图像去除遮挡.

CelebAMask-HQ 数据集是一个高分辨率的人脸图像集,每张图像都定义了19 种面部属性的分割掩码,包括人脸器官如皮肤、眼睛、眉毛、头发等,以及一些外界遮挡如眼镜、帽子等物体.本文在CelebAMask-HQ数据集上训练语义分割网络BiseNet[15],实现一个人脸解析分割算法,为训练数据计算人脸图像的分割掩码mask,从而在计算像素级损失时仅计算去除遮挡的人脸区域,该人脸解析分割算法效果如图2所示.

2.4 损失函数

本文仅通过无三维标签的二维人脸数据重建三维人脸,因此,如何设计有效的弱监督信号对最终的重建效果至关重要.为了实现输入人脸图像与渲染人脸图像间的对应关系,本算法充分考虑了图像的多个维度层面的特征,包括低维度的加权像素级光度损失,中层的人脸特征点损失以及作为高维度的人脸身份识别损失,最终实现一种multi-level 的弱监督损失函数.因此,整个网络模型的目的是最小化如下损失函数:

其中,λpixel,λlmk,λid,λreg是控制损失项重要性的常数.

图2 人脸解析分割算法示例

(1)低层加权像素级损失

为使输入图像和重建渲染图像尽可能相似,最简单直观的方法是直接计算两张图像间低维度的像素差异.得益于人脸解析分割算法,不仅能检测出如头发、帽子等遮挡物,还可以根据分割掩码mask 准确判断各人脸器官如眉毛、眼睛等在图像中的位置.因此,在计算这部分损失时,添加一定的权重让模型更加关注这些人脸特征部位的纹理,使重建三维人脸纹理更具真实感.该部分低维度的加权像素损失可定义为:

其中,V代表了渲染后人脸图像的可见区域,(i,j)代表可见区域内的像素位置,因此,只需要取输入图像内相同区域进行比较即可.此外,M代表掩码权重,主要作用是通过分割掩码mask 判断该可见区域内是否存在如头发、帽子等遮挡物,若存在则将该区域权重设为0,以避免遮挡对重建造成影响.此外,将眼睛、眉毛等人脸重要器官区域的权重设为2,其它人脸区域如皮肤等权重仍设为1.

(2)中层人脸特征点损失

本文利用目前最先进的人脸特征点检测算法来检测无标签二维图像的68 个人脸特征点{qn}作为一种弱监督信号,并将重建后的三维人脸投影至二维平面得到重建后的68 个人脸特征点使用专门为人脸特征点检测任务设计的损失函数Wing Loss[16],计算一个中层特征的人脸特征点损失:

其中,ΔQlmk=q′n−qn,代表了根据检测得到的人脸特征点与重建得到的人脸特征点间的误差.通过特征点损失,能够有效引导网络模型对人脸形状、表情以及姿态参数的学习.

(3)高层人脸身份损失

仅使用低维的像素级损失很可能会导致局部极小值问题,因此考虑图像的高维度特征,对于一个人脸识别网络,从输入图像和重建图像中提取的人脸特征信息是有一定关联的.ArcFace[17]是目前最优秀的人脸识别网络,给定一张二维人脸图像,ArcFace 可输出一个512 维的人脸特征向量.因此,本算法在训练过程中利用预训练的ArcFace 人脸识别网络,同时提取输入二维人脸图像I和重建渲染图像I'的512 维人脸特征向量f(I)和f(I′),并计算两者之间的余弦距离:

通过该损失,可以避免模型出现局部极小值问题.此外,对于人脸识别网络,尽管同一个人在多张图像中呈现不同的位姿、表情,最终识别的结果仍是同一个人.基于人脸识别网络这一特性,本算法在计算高维度的人脸身份损失时,通过对重建后的三维人脸的位姿与表情参数随机添加一个偏置,变换后的人脸渲染图像I''与输入图像I中的人脸身份应仍是一致的.同理,两张渲染图像的人脸身份也应是一致的,即:

因此,本算法在计算人脸身份损失时,对重建得到的人脸表情 β和位姿参数m进行小范围的随机变换,实现多视角多表情的人脸身份损失,从而能够训练出更鲁棒的网络模型.

(4)正则化损失

由于3DMM 参数是服从正态分布的,若从二维无标签人脸图像中回归的3DMM 参数值偏离零点太多,则重建的三维人脸可能是扭曲的,因此为了防止人脸形状和纹理退化,为回归的3DMM 人脸形状、表情和纹理参数添加了正则化损失项作为一种弱监督损失:

综上,通过上述介绍的multi-level 的多种弱监督损失函数,可以在不同程度上约束待回归的人脸形状、表情、纹理、位姿以及光照参数,从而能够训练出一个鲁棒且具有真实感的三维人脸重建网络模型.

3 实验分析

3.1 实现细节

本文算法基于Pytorch 深度学习框架,采用ResNet-50 网络模型,将最后一层全连接层修改为314 维,并采用Adam 方法优化参数,设置初始学习率为1×10-4,batch size 设为16,共训练101 340 次迭代,10 个epoch.训练过程中,各损失函数的权重 λpixel、λlmk、λid、λreg分别设置为3.0、2.4×10-3、0.24 和4×10-4,正则化损失项中的 ωid、ωexp和ωtex分别设置为1.2、0.8 和0.001.

3.2 重建质量

为能够定性定量地评估本章算法的重建结果,将从重建质量以及重建精度两方面来验证模型的有效性.重建质量部分首先将本算法在特定图像上的重建结果与目前一些先进的三维人脸重建算法如Tran 等[6]、MoFA[8]以及Genova 等[9]算法的重建结果在不同的人脸数据集如MoFA-test 以及LFW 数据集上选择若干人脸图像进行视觉上的对比比较,如图3与图4所示,部分实验结果图来源于文献[9].

图3 部分MoFA-test 数据上的重建质量对比

由图3与图4可以看出,本文算法对于人脸形状和纹理的重建都优于另外几种算法,本文算法重建得到的三维人脸的面部轮廓以及五官形状与输入图像更为一致,更能体现人脸的身份特征.此外,其它几种算法在面对不同肤色不同光照的人脸图像时重建得到的人脸纹理信息并没有较大差别,相较而言本文算法能够更加真实地反映人脸纹理信息.除了人脸形状和纹理信息外,本文算法还可以准确预测输入人脸图像的表情.

图4 部分LFW 数据上的重建质量对比

为了验证本文算法在大姿态或遮挡情况下仍能较好完成三维人脸形状和纹理重建,在二维人脸图像中存在大姿态或遮挡的情况与普通的纹理贴图方法进行了对比实验,如图5所示.可以看出,对于存在遮挡或大姿态的人脸图像,被遮挡部分的纹理信息并不能够从输入二维人脸图像中提取,因此传统的纹理贴图方法将无法提取不可见区域的纹理信息,得益于人脸解析分割算法,在面对存在遮挡或大姿态的人脸图像时,本文算法仍能重建出具有真实身份特征的真实感三维人脸.

图5 遮挡或大姿态情况下人脸纹理贴图与重建结果对比

最后,为验证本文人脸重建算法的鲁棒性,对同一身份处于不同姿态、表情、光照条件下的多张二维人脸图像进行重建,结果如图6所示.实验结果表明,本算法提出的多视角多表情的高维度人脸身份损失能够有效提升重建模型的鲁棒性,对于同一身份在不同表情、姿势、光照条件下仍能输出较为一致的三维人脸模型.

图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 为单位).

表1 不同重建算法在MICC 数据集上的平均误差

由上表结果表明,与其它两种先进的重建算法相比,本算法最终的重建精度取得了约10%的提升,其中一个主要原因是文献[9]算法虽然考虑了高维度的身份损失,但没有考虑低维度的像素级损失,本算法不仅通过可微分渲染器实现了一种加权光度像素损失,还实现了多姿势多表情的身份识别损失,在一定程度上提升了模型参数回归的能力.

4 结论与展望

本文提出了一种基于单张二维人脸图像的同时重建三维人脸形状和纹理信息的算法.为解决训练数据不足问题,本文设计了一种multi-level 的弱监督损失函数,直接从大量二维人脸图像中学习多种弱监督信息.为避免遮挡对人脸纹理重建造成影响,本文利用一种人脸解析分割算法进行预处理.实验结果显示,相较于其它算法,本文算法的重建质量与重建精度均有显著提升,且本算法对二维图像中存在遮挡或大姿态等问题有较强的鲁棒性.然而,目前本方法受限于三维人脸形变模型3DMM,重建出的三维人脸表面有些平滑,并不能很好地凸显人脸皮肤纹理细节特征,因此在接下来的工作中,将考虑研究一种更为细节的三维人脸重建算法,能够在重建过程中考虑如人脸皱纹等细节重建,进一步提升重建三维人脸的真实感.

猜你喜欢

纹理人脸形状
有特点的人脸
玻璃窗上的人脸
肺纹理增多是病吗?
童梦
TEXTURE ON TEXTURE质地上的纹理
火眼金睛
“领家系”可爱脸VS“高冷系”美人脸
消除凹凸纹理有妙招!
分一半
长得象人脸的十种动物