基于卷积神经网络的单幅图像三维人脸重建*
2021-06-26王育坚李深圳韩静园谭卫雄
王育坚,李深圳,韩静园,谭卫雄
(北京联合大学 信息学院,北京 100101)
0 引 言
近年来,三维人脸重建成为计算机视觉、图像识别等研究领域中的热点问题。三维人脸重建技术可以分为基于不同视角的多幅图像的重建和基于单幅图像的三维人脸重建。现实生活中很多场合下,往往只有一张人脸图片可用,因此,基于单幅图像的三维人脸重建受到了国内学者的重点关注。
目前,针对单幅图像的三维人脸重建,传统方法有基于模型的方法[1]、基于明暗形状恢复的方法[2]等。随着深度学习被引入到三维人脸重建领域,并且取得了比传统方法更优异的效果,而逐渐成为主流的重建方法。Jackson A S等人[3]提出使用VRN(volumetric regression networks)从单个二维图像直接进行三维面部重建的方法。Feng Y等人[4]设计了一个名为UV位置图的二维表示方法,记录UV空间中完整面部的三维形状,然后训练一个简单的卷积神经网络(convolutional neural network,CNN),从单个二维图像中回归。Chang F J等人[5]提出了直接应用于人脸图像强度,回归3D表情系数的29D 向量的ExpNet CNN模型。Tu X G等人[6]针对3D标注训练数据短缺问题,提出一种2D辅助自监督学习方法,利用带嘈杂地标信息的无约束二维人脸图像改善三维人脸模型的学习,在密集人脸对齐和三维人脸重建方面取得了突出的效果。刘成攀等人[7]提出一种基于自监督深度学习的人脸表征及三维重建方法,将二维人脸的特征点信息映射到三维空间实现三维人脸重建。
在无约束条件下,人脸的表情、姿势、纹理和内在几何存在很大差异,以上三维人脸重建方法仍然不够稳定,重建的结果出现脸部不完整、重建脸型偏向平均脸型、表情不够逼真等问题。针对上述问题,以卷积网络模型VGG—16[8]为基础,设计一种VGG-BN的改进网络模型,用于回归三维形变模型(3D morphable model,3DMM)参数进行三维人脸重建,并在300W-LP数据集上训练,在AFLW2000-3D数据集上进行测试。
1 3DMM
3DMM是Blanz V等人[9]提出的一种人脸线性表示模型。该模型使用形状向量S表示人脸的几何形状,S=(X1,Y1,Z1,X2,…,Yn,Zn)T∈R3n,其中n是人脸面部的顶点个数,Xi,Yi,Zi是第i个顶点的三维坐标。该模型假设进行纹理映射时,有效纹理值的数量等于顶点的数量,人脸的纹理可通过纹理向量T表示,T=(R1,G1,B1,R2,…,Gn,Bn)T∈R3n,其中Ri,Gi,Bi是第i个顶点对应的纹理值。利用m个人脸样本数据构建一个可形变的人脸模型,每个人脸样本由形状向量Sj和纹理向量Tj表示(0≤j≤m)。
(1)
(2)
最后,分别计算协方差矩阵的特征值和特征向量,按特征值降序选取前m个最大的特征值γ=(γ1,γ2,…,γm)和δ=(δ1,δ2,…,δm),以及对应特征值顺序的特征向量s=(s1,s2,…,sm)和使用主成分分析(principal component analysis,PCA)对特征向量和构成的正交坐标系进行基础变换。模型公式如下
(3)
(4)
当模型具有纹理部分时,上述3DMM往往拟合效果不够好。因此,重建人脸时通常只考虑人脸的形状部分,当需要纹理时,一般直接从照片中提取纹理进行贴合。针对3DMM对人脸表情处理的不足,Cao C等人[10]提出了FaceWarehouse人脸表情数据库,并将其引入到3DMM中。人脸线性模型可以扩充为
(5)
式中ej为在FaceWarehouse数据上,通过PCA得到的表情协方差矩阵的特征向量,φj为对应的表情参数,n为使用的数据量数,至此人脸重建问题可以转化为求解形状参数α和表情参数φ的问题。
在获得三维面部形状Snew之后,可以使用弱透视投影将三维面部投影到二维图像平面上
(6)
式中V存储投影到二维平面上的三维顶点的二维坐标,f为比例因子,Pr为正交投影矩阵,R为由9个参数组成的投影矩阵,t为平移向量。改进模型中,s采用BFM[11]的40个基,e采用FaceWarehouse的10个基,将这些参数放在一起形成具有62个参数的向量P=[f,t,R,α,φ]T。研究的主要目标就是使用深度CNN从单幅图像中预测对应的三维人脸的参数P,以重建带有表情的三维人脸形状。
2 改进的CNN VGG-BN
2.1 概 述
CNN已经被应用于三维人脸重建,Dou P F等人[12]在VGG-Face人脸识别网络的基础上,增加了一个子CNN(fusion-CNN),提出了端到端的三维人脸重建网络(UH-E2FAR)。Tuan Tran A等人[13]使用深度残差网络ResNet-101回归3DMM形状和纹理参数,用于三维人脸重建。Zhu X Y等人[14]利用级联CNN(3DDFA)回归3DMM参数,用于大姿势的人脸对齐和三维人脸重建。
目前使用CNN重建三维人脸主要有两种方式,一是在现有网络如AlexNet,VGGNet,DenseNet等基础上增加网络层数或修改模型结构。另一种是修改网络参数,对网络中算法进行改进,来提升网络模型的性能。本文采用第二种改进思路,通过在卷积操作之后,激活函数ReLU之前加入批归一化(batch normalization,BN)层,更改网络全连接层参数,调整优化器,使用迁移学习,提升网络模型对参数的预测的性能。
2.2 VGG-BN的网络结构
改进方法设计的VGG-BN网络模型以VGG-16网络为骨架,网络模型包含13个卷积层、5个最大池化层、3个全连接层,网络结构如图1所示。卷积层网络参数如表1所示。
图1 网络结构
表1 卷积层网络参数
在卷积层中,每个卷积核的大小为3×3,步长为1,填充为1,即卷积之后图像大小不变。每个卷积层之后紧跟一个激活函数ReLU,其计算公式为
R=max(0,y)
(7)
式中R为激活函数的输出值,y为卷积层的输出值。ReLU函数的优点在于:当输入值y大于0时,它的导数恒为1,保持梯度不衰减,有效缓解了梯度消失问题,加快了网路收敛速度。
对VGG-16网络结构的改进点,是在激活函数ReLU之前加入BN层,即对输入激活函数的数据进行批量标准化处理,使输入数据的均值为0,方差为1。假设BN层输入数据为β={x1,x2,…,xm},其中m是单批次输入数据个数,那么
(8)
(9)
(10)
(11)
式中ε为避免分母为0,设置的极小正数,取值为1×10-5,γ为尺度因子,φ为平移因子。引入γ,φ的原因是xi经过式(10)归一化后被限制在正态分布下,使得网络表达能力下降。γ,φ可通过梯度下降法求得。
在池化层中,每个卷积核的大小为2×2。池化层的作用是从小区域的特征中剔除不重要的特征,提取新的特征信息。池化方式常用的有最大值池化和平均值池化,改进方法结构采用的是最大值池化方式,实现过程见图2。
图2 最大值池化示意
网络模型包含3个全连接层,前两个全连接层都是4 096个通道,第三个全连接层通道原本是1 000,代表1 000个类别。因为本文预测目标是62个参数,此处将其改为62。前两个全连接层之后紧跟ReLU激活函数和Dropout函数。Dropout函数的作用是在网络训练过程中,按照一定的概率p将神经元从网络中丢去,这样使网络模型的泛化能力更强,让网络不会太依赖于某些局部特征。改进模型Dropout函数的失活概率p=0.5。
3 实验与分析
3.1 实验数据
目前300W-LP和AFLW2000-3D数据集被广泛用于人脸对齐和人脸重建领域。300W-LP是由Zhu X Y等人[14]采用其提出的方法生成61,225个大型样品,其进一步通过翻转将其扩展到122,450个样品。每个样品包括二维人脸图像和对应3DMM系数。采用其中636 252张图片和对应的3DMM系数作为训练集,51 602张图片和对应的3DMM系数作为训练时的验证集。
将AFLW2000-3D[14]作为独立测试集。AFLW2000-3D是选择AFLW的前2000张图片构建而成,每张图片都有对应的3DMM参数和68个3D人脸特征点。
300W-LP数据库中原始二维图像大小是450像素×450像素,根据图像对应的三维信息文件中人脸区域的二维坐标,将图像中人脸区域裁剪并调整大小为150像素×150像素。对训练数据和验证数据集进行归一化,将所有数据都映射为均值为0,方差为1。这里使用均值方差归一化方法,即
xscale=(x-xmean)/xstd
(12)
式中xmean为均值,xstd为方差,xscale为归一化后的数据,即送入CNN的数据。对于训练数据和验证数据中的目标参数P也进行均值方差归一化,即
Pscale=(P-Pmean)/Pstd
(13)
并将均值Pmean和方差Pstd保存。因此,对于网络预测输出的参数需要进行反归一化,即
(14)
式中Pout为深度CNN直接输出的结果,为预测出的参数。
3.2 评价指标
本文采用定性评价和定量评价两种评价指标。其中,定性评价是对重建的三维人脸形状和表情的直观观察,定量评价是参考文献[5]中评价方法,首先,使用迭代最近点(iterative closest points,ICP)算法来找到重建的3D人脸顶点和真实3D人脸顶点之间相应最近点,然后计算相应最近点之间的归一化均值误差(normalized mean error,NME),人脸区域的边界框大小用作归一化因子,NME值越小,说明重建效果越精确。
(15)
式中n为顶点集中顶点个数。若d小于给定阈值,则停止迭代,否则返回步骤(2),直到满足收敛条件。
(16)
3.3 实验过程
实验使用的硬件设备如下:处理器为Intel®CoreTMi9—9900K CPU @3.6GHz;内存8 GB;系统为64位Ubuntu 18.04.3 LTS操作系统,运行环境Python3.6,运行软件PyCharm,一块NVIDIA GeForce RTX 2080 Ti GPU,硬盘大小200 GB。
为减少网络训练时间和提高网络训练效率,在训练过程中采用迁移学习方法,引入了预训练好的VGG-16模型参数。预训练好的VGG-16模型是通过ImageNet数据库中的100万幅图像训练而成,具有较强的深度特征学习能力,其拥有大量已经训练完成的参数和权重,特别是卷积层关于图像的曲线、边缘、轮廓的特征提取具备较强的能力。
改进模型基于PyTorch深度学习框架编码完成卷积网络结构。通过实验对比,网络选择使用Adam优化器,初始学习率base_lr设为0.0001,学习率按epoch调整,当3>epoch>=1,base_lr=base_lr*0.01 ,当epoch>=3,base_lr=base_lr*0.001,动量设为0.9,L2正则化权重衰减参数设置为1×10-5,训练集批处理大小为64,验证集批处理大小为8,epoch总数设为100。
对于网络回归问题,常用的损失函数是回归参数之间的欧氏距离(parameter distance cost,PDC),即
(17)
(18)
将改进的VGG-16网络以及使用迁移学习和使用式(18)作为损失函数的模型集记为VGG-BN,将未改进的VGG-16网络以及使用迁移学习和使用式(18)作为损失函数的模型集记为VGG-preVDC,将未改进的VGG-16网络以及使用迁移学习和使用式(17)作为损失函数的模型集记为VGG-prePDC,将未改进的VGG-16网络以及未使用迁移学习和使用式(17)作为损失函数的模型集记为VGG-PDC。文中只详细介绍VGG-BN的具体训练参数,其余模型不再赘述。
3.4 实验结果分析
从图3中,可以很明显地看出改进后的网络VGG-BN在验证集上的损失比未改进网络结构的VGG-preVDC低的多,验证了改进方法的可行性。
图3 训练过程中在验证集上的损失对比
图4中第一列为从测试集AFLW2000-3D抽取的二维图像,第二列、第三列为改进方法VGG-BN重建三维人脸的正面图和侧面图,第三列、第四列为文献[14]方法重建三维人脸的正面图和侧面图,第五列、第六列为文献[5]方法重建三维人脸的正面图和侧面图。为保证对比的公平性,文献[5]和文献[14]的重建结果均由对应文献公布的测试程序生成。由图4中可以看出,改进方法重建的人脸形状比文献[5]的重建结果更加平滑,重建的人耳部分更加完整,同时文献[5]重建的人脸具有明显条纹;对比文献[14],改进方法和文献[14]的部分重建结果相差不够明显,但图4第一行中改进方法重建的人脸的嘴张开的大小更加合理,同时改进方法重建结果的面部细节相对更加丰富,尤其在眼部位置。
图4 本文方法VGG-BN和文献[14]、文献[5]对比结果
由于改进方法和文献[14]方法在测试时均使用dlib人脸检测器进行人脸特征检测,同时AFLW2000-3D数据集中存在人脸角度偏转较大的图片,该部分图片无法检测到人脸,除去无法检测到人脸的图片,共使用AFLW2000-3D数据集中的1 496张图片进行测试评估。从图5中可以看出,在使用同样数量单幅图像进行重建时,VGG-prePDC的NME值远低于VGG-PDC的NME值,这说明改进方法使用迁移学习提高了模型训练效率;VGG-preVDC的NME值远低于VGG-prePDC,这说明改进方法提出的损失函数促进了模型的学习效率;同时VGG-BN,VGG-preVDC的NME值都低于文献[14]的NME值,并且VGG-BN的NME是最低的,表明对模型的改进是可行的。
图5 在AFLW2000-3D上的累积误差分布(CED)曲线(来自AFLW2000-3D数据集的1496张图像)
从表2中可以看出,在测试数据集上,改进模型VGG-BN的平均NME值最低,比VGG-preVDC的平均NME值低0.12,比文献[14]的平均NME值低0.15,重建的效果明显改善。通过实验和比较分析,可以看出,相对于原来的VGG-16网络,改进后的VGG-BN网络对单幅图像的图像特征学习能力更强,泛化能力更好。
表2 在AFLW2000-3D上的平均NME
4 结束语
本文介绍了一种基于CNN的单幅图像三维人脸重建方法,改进网络模型VGG-BN以VGG-16为基础,在每个卷积之后添加批归一化层设计,预训练模型引入迁移学习技术,直接从二维图像中回归3DMM形状和表情参数,进行三维人脸重建。通过在AFLW2000—3D数据集上进行实验和比较,验证了改进方法进行三维人脸重建的有效性。下一步将结合纹理、形状、表情重建出逼真的3D人脸。