APP下载

基于三维人脸变形算法的三维人脸采集系统

2021-06-03李嘉豪程宾洋孙家炜

现代计算机 2021年9期
关键词:人脸人脸识别变形

李嘉豪,程宾洋,孙家炜

(1.四川大学视觉合成图形图像技术国防重点学科实验室,成都610065;2.四川川大智胜软件股份有限公司,成都610065)

0 引言

三维人脸变形技术是医学、生理学、心理学、计算机科学等多学科交叉的研究领域。使用计算机技术来生成真实逼真的人脸动画图像,为各种应用提供友好的技术支持,一直是计算机图形学、计算机视觉甚至生理学等领域中重要研究内容。在此研究领域,研究人员们提出了大量的人脸表情动画、人脸表情生成等相关的生成方法,并取得了非常不错的成果。然而,传统方法往往大多依赖于人工所设计的特征,具有较差的鲁棒性。近年来,深度学习方法得益于其强壮的鲁棒性以及自学习能力,在广泛图像任务中取得了令人满意的结果[19]。

深度学习在二维人脸识别方面取得了很大进展。二维的人脸识别因为研究的时间较长,诞生了一批准确率较高的识别人脸识别算法,如DeepFace、FaceNet、ArcFace等,通常而言,二维人脸识别算法往往遵循四个步骤,分别为图像采集、人脸检测、特征提取以及特征匹配。然而,由于二维信息存在深度数据丢失的局限性,无法完整地表达出真实人脸,所以在实际应用中存在着诸多不足,如可用特征少、识别准确率不高以及安全性差等[2]。为了缓解上述的问题,三维人脸识别技术逐渐应用到更多的实际场景中。三维面部本身由于包含面部的空间形状信息,受外部因素的影响较小,因此其具有更高的鲁棒性以及识别精度。三维面部数据携带更多信息,然而,由于难以获得三维面部数据以及一些面部数据缺乏准确性,使得三维面部识别的发展遇到了比较大的阻碍。如何获得足够的、精确的三维人脸模型数据集,成为了三维人脸识别研究中的一个重点问题[4]。基于已有的数据集,通过一定的方法进行三维人脸变形来扩充出额外的三维人脸模型的方法成为了一个解决上述问题的途径。目前国内外研究者们在三维人脸变形研究方面取得了不错的成果,一定程度上实现了视觉上真实的人脸变形效果。

基于以上背景,本课题将研究基于深度学习的三维人脸变形方法的尝试和设计,并在此之上设计三维人脸采集系统,三维人脸采集系统采集建模得出一个三维人脸模型,使用三维人脸变形算法,在保持模型的身份信息最大程度不损失的前提下,生成该身份的多个带不同表情的人脸模型。本课题的研究成果,能够实现更逼真的三维人脸变形,能够从有限的三维人脸数据集中大幅度扩充三维人脸数据,对三维人脸识别研究十分具有价值。

1 相关工作

1.1 三维人脸参数化模型

现有的一些三维人脸参数化模型很多是通过身份参数和表达式参数来表示人脸形状。Blanz和Vetter提出了三维变形模型(3DMM)[1]来模拟人脸形状。3DMM最流行的形式是身份和表达基础的线性组合[9-10]。FaceWareHouse[11]采用双线性模型,利用具有恒等式和表达式权重的张量构造人脸形状。最近,Flame[12]利用关节模型来处理下巴、脖子等属性。以达到最先进的效果。这些线性和双线性模型的一个共同特点是,每个属性都位于单独的线性空间中,并且每个属性的组合也是线性的。线性统计模型具有表达能力有限等局限性,这种限制来自线性公式本身[13-14]。然而,面部变化在现实世界中是非线性的,例如,不同面部表情的变化。虽然最近一些文献提出了改进统计模型的方法,但它们仍然通过线性组合的方法来构造三维人脸形状。

受深度学习技术的迅速发展启发,人们提出了基于学习的方法将三维人脸形状嵌入到非线性参数空间中,这些方法的表示能力得到了很大的提高,例如能够表示几何细节[15],或者使用很少的参数重建整张人脸形状[3]。然而,所有这些方法都将整个人脸形状在潜在空间中编码成一个向量,从而无法区分身份和表情。另外,许多应用如3D人脸识别[16-17]需要将3D人脸形状分解为身份和表达组件。

1.2 三维人脸变形与深度学习

在计算机视觉和相关应用中,人们对开发用于自动识别或合成表情的方法的兴趣日益浓厚。长期以来,基于图像和视频的面部表情自动分析一直是需要大量的人力物力,如今,机器学习(尤其是深度学习解决方案)的成功彻底改变了这种情况:通过机器学习给定的样本进行表情分析,提取非线性的表情特征,使研究者能够不考虑表情变化的过程,实现高效提取人脸表情变化,直接生成人脸面部表情,并且支持人脸表情得编辑与合成等。其中使用生成对抗网络(Generative Adversarial Network,GAN)实现人脸表情图像的合成最为突出。Pumarola等人提出了GANimation[5],这是基于GAN网络的在人脸的解剖结构上建立的一种连续面部表情合成的方法,该方法可以在连续语义背景下呈现图像,并可以在复杂背景和光照条件下处理图像。Choi等人提出的StarGAN[6]可以解决多个域之间的图像转换问题,生成的人脸表情质量也相对较高;Cao等人[7]提出了一种针对特定用户的实时面部动画系统,该系统不需要特殊设备的帮助,通过收集预先定义的表情和姿势图像序列并对图像上的特征点的位置以半自动的方式进行标定,为用户形成三维人脸形状的回归模型。该系统能够实时执行,并生成鲁棒性高且逼真的人脸表情。Geng等人[8]提出了Warp-Guided GANs来从单张照片生成面部表情,他们使用神经网络来处理预先经过变形的面部照片,可以获得更真实的面部图像,例如面部细节(皱纹、眼睛)等。然而这些使用GAN方法生成的带表情的人脸往往会丢失一定的人脸身份信息。Claudio Ferrari提出了一种使用特定3D可变形模型(3DMM)的解决方案[1],该模型从目标对象的中性图像开始,能够生成同一对象的逼真的表情人脸图像。但该方法生成的表情图像会有几率出现偏差,这意味着必须对它们进行相应的加权等操作,以免产生我们不期望的变形。

2 基于解耦表示学习的三维人脸变形

2.1 三维人脸模型的解耦表示学习

解耦表示学习旨在对影响数据形态的关键因素(factor)进行建模,使得某一关键因素的变化仅仅引起数据在某项特征上的变化,而其他的特征不受影响。例如,人脸的特征有肤色、发型、五官,等等,如果我们成功对人脸进行了解耦表示,则我们可以通过改变其中对应的关键因素(可以是低维隐变量的某一维)来改变一张人脸的肤色,而该人脸的发型、五官等其他特征维持不变。而本研究中的三维人脸变形,是要求在人脸身份特征保持不变的情况下,改变其表情特征。可以使用解耦表示学习方法,来获取三维人脸模型的解耦的身份特征和表情特征。其中,每个人的身份特征信息不同,但表情特征可以相同,所以身份特征可以被看成是特殊特征,表情特征部分可以被看作共同特征部分。算法示意图如图1所示。

该方法学习机制分为两部分,分别为身份信息学习和表情信息学习。为了使得迁移后的表情符合用户的真实人脸身份。我们将Gid表示为身份网络Mid的变形表示形式,将Gexp表示为表情网络Mexp的变形表示形式。假设Did和Dexp是身份和表情提取的解码器,而Zid和Zexp是每个分支的潜在表示。身份信息损失由公式(1)中进行计算,以确保迁移后的人脸仍处于该用户的身份隐藏特征空间中。

图1 算法示意图

其中,Lid是身份信息重建损失,Lid_kld是Kullback-Leibler差异(Kullback-Leibler Divergence)损失。如上所述,实现人脸信息分解的另一部分是对表情进行判断,该方法对表情判断主要依赖于两个评估公式,如公式(2)所述。KL差异损失执行了一个高斯先验N(0,1),在潜矢量Q(z)的分布上均值为零。

2.2 数据扩充

三维人脸相关的深度学习项目中,缺少数据集是一个重要问题。在训练过程中,由于身份模型有限,我们训练出来的身份模型容易导致过拟合。在三维人脸数据增强方面,Jiang等人[4]提出了一种新的数据增强方法来克服这种无监督下的中性人脸数据集过少导致的过拟合问题,其方法是给定训练集中的m个不带表情的中性人脸模型样本,通过m个样本之间的插值生成新的三维人脸模型。盖赟[18]提出了基于重采样的三维人脸扩充方法,该方法以器官分布来对三维人脸模型进行区域划分,通过对不同对象的三维人脸模型的不同器官区域进行组合,生成新的三维人脸模型。本实验中采用二者结合的方式,先使用重采样的三维人脸扩充方法生成新的三维人脸模型,再通过这些模型,使用插值的方法生成新的三维人脸模型,生成的模型样本丰富、真实,示例效果如图2所示。

图2 使用重采样与插值结合方法的数据扩充生成的人脸模型示例

3 基于人脸变形算法的三维人脸采集系统

3.1 系统介绍

三维人脸采集是获取对象的三维人脸模型的一个必要步骤。我们设计的三维人脸采集系统使用由川大智胜公司自主研发的一款低成本、高精度的三目相机(参见图3)。该三目相机由三个摄像头组合而成,分别是左右两个红外摄像头和一个中间的纹理摄像头,以保证采集到的人脸的全面性和准确度。

图3 川大智胜公司自主研发的三目相机

三维人脸采集系统需要操作员手动点击软件界面的采集按键,来使三目相机进行拍摄,系统对拍摄的多组图片会进行相应的处理,先对左右相机拍摄到的图片进行人脸检测,定位人脸面部关键点,利用这些关键点的外部轮廓部分,建立一个凸包,来确定三维人脸区域,在另一人脸区域中寻找对应点,通过两张图片的关键点的对应关系的一致性来提高三维人脸建模的精度,再将结果处理生成视差图,最后计算得到三维点云信息,生成三维点云文件。在生成点云文件后,再调用三维人脸变形算法,生成对应的多个变形后的三维人脸模型,并将生成的模型点云信息存储下来,与通过相机采集建模得到的人脸模型一起存储到人脸模型数据库中。同时,建模生成的三维人脸渲染图可以在信息展示界面上展示出来。人脸采集系统结构参见图4。

图4 人脸采集系统结构

3.2 系统各模块设计

三维人脸采集模块负责驱动三维相机进行拍摄,并将拍摄的图片数据传输给后台服务。数据传输使用TCP协议,使用magic number和心跳包来确保数据传输不出差错。后台服务负责对采集的图片数据进行处理,生成点云数据,并调用三维人脸变形算法,生成带表情的三维人脸模型,并为三维人脸信息展示模块提供三维人脸数据查询接口。

三维人脸信息展示模块能够通过后台服务来查询人脸模型信息和个人信息,并展示三维人脸模型。

数据库存储个人信息和对应的多个点云信息。

3.3 程序运行界面效果

程序三维人脸采集系统运行后台程序是一个由C++语言编写的一个基于TCP网络通信的服务器程序。三维人脸变形算法被封装成了一个动态库中的接口,可以直接在C++程序中调用算法接口。程序使用socket编程,连接数据库方面使用的是ocilib库,数据库是MySQL。三维人脸采集模块作为客户端连接后台服务,采集到照片后会将照片数据通过TCP发送给服务器。服务器程序收到数据后进行人脸识别、定位关键点、建立凸包、关键点对应、三维人脸建模、生成深度图、三维人脸变形、存储数据的工作。界面如图5所示。

图5 三维人脸采集系统后台界面

三维人脸信息展示模块,作为一个客户端来连接后台服务,可以调用后台服务器为其提供的信息查询接口,并将结果展示,模型可以在展示窗口内拖动,以供多视角观察三维人脸模型。三维人脸信息展示模块界面如图6所示。

图6 三维人脸信息展示界面

4 结语

本文介绍了三维人脸变形算法的研究现状,并提出了一个基于解耦表示学习的三维人脸变形方法,该方法能够通过给定的三维人脸模型,在保持模型的身份信息最大程度不损失的前提下,生成该身份的多个带不同表情的人脸模型。在训练过程中我们提出了一个扩充数据集的方法,使用结合三维器官区域重组和插值的方式来生成新的三维人脸模型。我们设计了一个研究基于三维人脸变形方法的三维人脸采集系统,利用提出的算法,达到采集一次人脸,存储多个对象不同表情的三维人脸模型,能够从有限的采集到的三维人脸数据集中大幅度扩充三维人脸数据,对三维人脸识别研究十分具有价值。

猜你喜欢

人脸人脸识别变形
人脸识别 等
玻璃窗上的人脸
人脸识别的“国标”来了
变形记
谈诗的变形
不会变形的云
智力考场:有趣的图片测试
荣耀畅玩7C:人脸识别
会变形的饼
“领家系”可爱脸VS“高冷系”美人脸