计算机系统应用  2022, Vol. 31 Issue (12): 69-77   PDF    
面向医疗整容的三维人脸重建与编辑系统
何龙健, 钟子乐, 邹大辉, 黄灿斌, 邓卓然, 梁艳     
华南师范大学 软件学院, 佛山 528225
摘要:针对医疗整容领域中客户在术前无法直观感受术后整容效果的问题, 提出了面向医疗整容领域的三维人脸重建与编辑系统. 该系统首先对用户上传的图片进行特征点标记, 然后结合三维形变模型(3D morphable model, 3DMM)对输入图像进行对齐, 接着将处理后的图像输入预先训练好的三维人脸重建网络中, 便可得到输入图像所对应的三维人脸模型. 系统对此模型进行加载渲染后, 用户可以对模型的脸颊、鼻梁和下巴进行编辑以达到模拟整容的效果, 之后可对模型进行保存并查看诊断结果. 最后, 对重建效果、整形效果和诊断结果可靠性进行测试. 实验结果表明, 该系统对中青年人脸的重建效果好, 重建模型与输入图片相似度高; 对模型整形后的部位依然保持平滑自然, 达到了模拟整容的效果; 在给定正确的人脸尺寸后, 诊断结果给出的整形建议在毫米级范围内, 说明了整形结果具有较高的可靠性.
关键词: 3DMM    弱监督学习    三维重建    三维文件加载    模拟整容    
3D Face Reconstruction and Editing System for Medical Plastic Surgery
HE Long-Jian, ZHONG Zi-Le, ZOU Da-Hui, HUANG Can-Bin, DENG Zhuo-Ran, LIANG Yan     
School of Software, South China Normal University, Foshan 528225, China
Abstract: Given the problem that in the field of medical plastic surgery, customers can not directly grasp the postoperative effect of plastic surgery before the surgery, this study proposes a three-dimensional (3D) face reconstruction and editing system for medical plastic surgery. Specifically, the system marks the feature points of the pictures uploaded by the user, aligns the input images with the 3D morphable model (3DMM), and then inputs the processed images into the pre-trained 3D face reconstruction network to obtain the 3D face model corresponding to the input images. After the system loads and renders this model, the user can edit the cheeks, bridge of the nose, and chin of the model to simulate the plastic surgery, and he/she can also save the model to view the diagnosis results. Finally, the reliability of the reconstruction effect, plastic surgery effect, and diagnosis results are tested. The experimental results show that the system is effective in reconstructing young and middle-aged faces, offering reconstructed models highly similar to the input images. The parts of the model remain smooth and natural after the plastic surgery, which means the effect of simulating the plastic surgery is achieved. After the correct face size is determined, the plastic surgery recommendations suggested by the diagnosis results are at the mm level, indicating that the plastic surgery results are highly reliable.
Key words: 3D morphable model (3DMM)     weakly supervised learning     3D reconstruction     3D file loading     simulated plastic surgery    

1 引言 1.1 研究背景

医疗美容是指运用手术、医疗器械、药物以及其他医学技术方法对人体不同部位形态进行修复与再塑. 由于技术上的成熟, 近年来中国进行医美人数成倍增长. 从项目类型来看, 医疗美容主要分为手术类医疗美容和非手术类医疗美容两大类. 手术类整形项目一般具有价格较高、风险较高、创伤较大等特点, 适合需要进行大幅调整的客户; 非手术类轻医美项目具备单次价格较低、风险相对较小、创伤小等特点. 但无论是哪一类医疗美容, 都存在着一个共同的问题: 即客户经常不能够直观地看到自己整形后的效果, 致使不少客户对整形手术的效果有所顾虑.

而三维人脸重建与三维模型编辑技术为这一难题提供了解决方法. 比起二维图片, 重建出来的三维人脸在空间上能够提供更多的细节; 并且对三维人脸模型进行编辑能够为医生的整容方案提供可视化效果, 以便制定更加完善的整容方案, 提高整容成功率和客户满意度. 因此, 基于三维人脸重建与三维模型编辑的三维人脸整形技术逐渐成为医美领域的重要研究课题.

1.2 研究现状 1.2.1 三维人脸重建研究现状

在20世纪70年代初, 美国科学家Parke[1]最先开展了关于三维人脸重建的工作, 时至今日, 在三维人脸重建领域中已经有许多成熟的技术. 其中, 基于单图像的三维人脸重建技术因受数据集大小、图像采集设备精度等因素的影响较小等优点而被广泛应用. 此技术主要分为: (1)基于参数化模型的三维人脸重建; (2)基于单一模板的三维人脸重建; (3)基于深度学习的三维人脸重建.

(1)基于参数化模型的三维人脸重建

大多数基于模型的三维人脸重建算法是基于通用人脸模型(generic face model, GFM)或是三维可变形模型(3D morphable face model, 3DMM)来生成所需模型. 美国科学家Blantz等人[2]在1999年首先提出了3DMM. 他们通过激光扫描仪采集了200位年轻男性和女性的三维人脸点云数据, 运用主成分分析(principal component analysis, PCA)方法得到一组可参数化任何三维人脸模型的正交向量. 虽然3DMM人脸建模方法可以有效地表示不同身份的人脸, 但这些方法由于受到数据集大小等因素的限制, 普遍存在模型精度不高、人脸细节缺失等问题. 通过生成对抗网络(generative adversarial nets, GAN)和深度卷积神经网络(deep convo-lutional neural network, DCNN)实现高精度的三维人脸模型重建是由英国科学家Gecer等人[3]一起提出的, 与传统生成3DMM颜色系数的方法不同, Gecer等人[3]使用GAN生成一张高分辨率的人脸UV纹理图, 代替3DMM颜色系数来表示人脸纹理, 因此能够还原出更多的人脸细节, 除此之外, 他们还设计了一套人脸拟合策略和许多损失函数来帮助人脸拟合, 使生成的人脸模型更加具有真实感.

(2)基于单一模板的三维人脸重建

2011年, Kemelmacher-Shlizerman等人[4]发表了一篇运用阴影塑造(shape from shading, SFS)方法来塑造人脸模板的论文. 这种方法能够恢复人脸精细的几何细节, 如皱纹和褶皱, 这在基于人脸的参数化模型中是难以实现的. 但是这种构建方法也存在自身的局限性: 由于SFS重建物体的问题本身就是一个不适定的问题, 因此它可能存在多个解. 在这之后, 科学家们使用人脸的对称性来减少SFS结果的模糊性. 美国科学家Hassner[5]提出使用尺度不变特征变换流(scale-invariant feature transform-flow, SIFT-flow)方法, 将人脸模板与输入图像之间的外观和深度相似性最大化. 基于单一模板的重建方法可以在恢复精细的人脸集合细节上表现出其优越性, 但如果模板的初始形状与输入的人脸图像之间拥有很大差异, 会导致该方法很难将模板变形成正确的形状.

(3)基于深度学习的三维人脸重建

由于使用卷积神经网络(convolutional neural networks, CNN)学习需要大量的基础训练数据, 而目前公开的三维人脸训练数据十分稀少, 因此在2016年, Richardson等人[6]提出分别使用两个卷积神经网络学习人脸形状, 第1个CNN采用有监督的训练方式学习出一个粗糙的人脸模型, 第2个CNN采用无监督的训练方式学习出一个带有几何细节的人脸模型. 在2021年, 来自南京航空航天大学的周大可等人[7]针对当前三维人脸重建算法中所存在的精度不足以及三维人脸标注样本数量较少等问题, 提出了一种引入多尺度特征提取融合模块和双重注意力机制模块来实现三维人脸重建的新技术. 同时, 使用单图像输入的自监督方法以避免传统方法中对于数据集规模的要求, 该技术对于输入图像在有部分遮挡或缺失的情况下拥有更高的鲁棒性.

1.2.2 三维模拟整形研究现状

随着人们对美的追求意识的逐渐增强, 人们对于医疗美容的接受程度也越来越高, 而应用于医疗美容领域的三维模拟整形技术能够打消客户疑虑, 提高客户满意度, 为整容手术提供更精确的保障. 在2013年, 蒋承安等人[8]通过三维软件进行术前三维扫描和三维模拟, 模拟出适合客户的外鼻形态, 并通过计算机测量模拟外鼻的各项数据, 为手术提供了依据, 从而使手术更加精准, 提高了客户满意度. 在2016年, 第三军医大学的翁羽[9]提出使用螺旋CT扫描、三维重建和电脑模拟技术为下颌角缩小整形手术提供可靠、精准的手术数据以及评价参考. 通过比较手术之后的实际情形和扫描重建出的影像来评定手术的效果. 但他们提出的方法对测量人脸参数的仪器和设备有很高要求, 实际操作较为繁琐, 因此在实际情况下不易在医院与美容场所中进行推广.

2 三维人脸重建与编辑技术 2.1 基于弱监督学习的三维人脸重建

本文利用弱监督学习[10]的思想实现基于单张图像的三维人脸重建技术, 具体的三维人脸重建模型框架如图1所示. 该框架主要包含3个模块: (1)人脸重建属性提取模块: 利用ResNet网络模型, 提取3DMM重建的参数; (2)基于3DMM的重建模块: 结合提取的3DMM参数, 将一般平均人脸变形成目标人脸; (3)重建损失计算模块: 为了重建出高精度的人脸模型, 本文充分考虑了图像的多个维度层面的特征, 包括像素点损失、人脸特征点损失和人脸身份损失, 构建了一种多维度的弱监督重建损失计算模块. 具体重建人脸模型的流程如下: 对于输入的无标签二维人脸图像, 利用dlib库对图像进行人脸检测以及计算68个关键点作为重建模型的弱监督信号. 之后利用CNN模型深层网络优越的非线性表达能力, 从二维人脸图像中有效地捕捉到人脸表情、姿态、纹理以及光照等变化引起的非线性特征, 将特征信息传递到全连接层, 作为网络模型的输出. 最终得到生成三维人脸模型各个属性的参数, 生成输入图像对应的三维人脸几何模型. 之后将重建模型投影至二维平面上, 将输入图像与投影图像输入到FaceNet人脸识别网络, 计算二者在人脸身份这一特征上的损失, 同时分别计算输入图像与投影图像在像素点、人脸特征点上的损失, 构建一种多重维度损失函数的约束模型. 通过反向传播算法, 不断地对重建网络进行优化, 以得到更为精确的3DMM模型重建参数.

图 1 三维人脸重建模型框架

2.1.1 三维形变模型(3DMM)

3DMM是一种较为基础的三维人脸统计模型[2], 利用主成分分析法(PCA)描述三维人脸空间. 基于此, 三维人脸模型的重建就可用神经网络提取出人脸的相关主成分信息, 例如表情、形状、纹理等属性, 然后利用3DMM进行相应的拟合, 重建出对应的人脸模型. 重建过程可用式(1)和式(2)表示:

$ {S_{\rm new}} = S\left( {\alpha , \beta } \right) = \overline S + \alpha \times {A_{\rm exp}} + \beta \times {A_{\rm id}} $ (1)
$ {T_{\rm new}} = T\left( \delta \right) = \overline T + \delta \times {A_t} $ (2)

其中, $\overline S $ $\overline T $ 分别是平均人脸形状和纹理, ${A_{\rm exp}}$ ${A_{\rm id}}$ ${A_t}$ 分别是人脸表情、形状和纹理(经过标准差缩放后)的PCA基, $\alpha $ $\;\beta $ $\delta $ 是对应的系数矩阵.

得到上述3DMM模型参数后, 采用巴塞尔人脸模型(Basel face model, BFM)作为平均人脸 $\overline S $ 进行拟合, 得到对应的新的三维人脸模型 ${S_{\rm new}}$ .

2.1.2 基于ResNet50的人脸属性提取模型

在构建CNN模型时, 网络结构深度越高, 特征层次越高也越丰富, 但是随着网络层数的增加, 会出现梯度爆炸以及网络退化等问题[11]. He等人[11]提出的残差神经网络, 在卷积层之间加入了跳跃连接, 实现恒等映射, 从而构成一个残差块, 使得信息可以跨越传播, 缓解了因为层数递增导致模型退化的问题[12].

本文人脸属性提取模型使用ResNet残差网络, 原网络的分类模块是经过特征提取后利用平均池化, 将最后一个卷积层输出的特征图转化为2 048维向量, 最后经过输出层通过Softmax回归输出各个类别的概率. 本文在原网络的分类器上做了修改, 在全局平均池化层后加入了一个全连接层, 节点数目为257, 修改后的网络模型如图2所示, 其中, $s$ 表示卷积步长.

图 2 网络模型结构图

2.1.3 多维度重建损失计算模型

本文通过弱监督学习来完成三维人脸模型的重建, 即无三维模型标签数据的信号监督. 因此, 如何设计有效的弱监督信号对提高重建精度十分重要[13]. 针对该问题, 本文提出3种维度的重建损失, 分别为像素点损失 $Los{s_{\rm img}}$ 、人脸特征点损失 $Los{s_{\rm lm}}$ 和人脸身份损失 $Los{s_{\rm id}}$ .

(1)像素点损失 $Los{s_{\rm img}}$

该损失函数反映的是输入图像与重建后的人脸模型投影得到的图像在RGB空间上的差异, 可用式(3)表示为:

$ Los{s_{\rm img}} = {\sum\nolimits_{i \in Pro} {\left\| {{I_i} - I_i'} \right\|} ^2} $ (3)

其中, $I$ 表示输入人脸图像, ${I'}$ 表示重建后的三维人脸模型的投影图像, $Pro$ 表示三维人脸模型的二维投影区域.

(2)人脸特征点损失 $Los{s_{\rm lm}}$

利用dlib提供的特征点检测器提取输入图像的68个关键点集合记为 $\left\{ P \right\}$ , 提取重建的三维人脸模型的68个关键点集合的二维投影记为 $\left\{ {{P'}} \right\}$ . 计算特征点之间的欧氏距离得到对关键点的特征损失, 用式(4)表示为:

$ Los{s_{\rm lm}} = {\sum\limits_{i = 1}^{68} {\left\| {{P_i} - P_i'} \right\|} ^2} $ (4)

(3)人脸身份损失 $Los{s_{\rm id}}$

仅关注像素点损失会陷入局部极小值, 需考虑高维度特征[14]. 经过重建后投影得到的二维图像与输入图像在人脸识别下应为同一人. 对此, 项目引入了人脸身份损失来指导训练过程. 先将三维模型投影为二维图像; 再将投影图像与输入图像输入到FaceNet网络进行人脸识别. FaceNet是谷歌提出的用于人脸识别的网络模型, 可以将一张人脸图像映射为128维的特征向量. 计算投影图像与输入图像的128维特征向量之间的差异, 可得到二者的相似度, 最终得到人脸身份损失, 可用式(5)表示为:

$ Los{s_{\rm id}} = - \log \left( {1 - \frac{{g\left( {im{g'}} \right)}}{{g\left( {img} \right)}}} \right) $ (5)

其中, $im{g'}$ $img$ 分别表示重建模型的投影图像和输入图像, $g\left( {im{g'}} \right)$ 表示利用FaceNet在三维模型的二维投影图像上提取的人脸身份特征, $g\left( {img} \right)$ 表示利用FaceNet在输入图像上提取的人脸身份特征. $\dfrac{{g\left( {im{g'}} \right)}}{{g\left( {img} \right)}}$ 表示两张图片上的人脸的差异系数.

2.2 三维模拟整形技术

在经过稠密对齐后, 一张三维人脸模型可用相同的三角面片或网格来表示. 不同人脸的同一区域的网格或三角面片有着唯一的顶点索引. 因此, 对人脸模型进行整容操作, 可以通过修改顶点索引对应的三角面片的位置信息来改变人脸部分区域的形状, 从而达到模拟整容的效果.

2.2.1 下巴和脸颊整形算法

模拟下巴整形算法目标是使三维网格区域的饱和度提升/下降, 模拟脸颊整形算法目标是使三维网格区域收缩/扩张, 两种算法的核心都是区域顶点基于距离场函数进行移动, 目的是为了让选中区域在变形后, 边界仍然保持连续光滑. 引入距离场函数后, 对区域内每个点的形变程度用权重加以控制[15]. 三维人脸模型下巴及脸颊区域如图3所示.

算法步骤如下:

(1)在人脸模型上确定出对应的矩形区域, 预处理出三维人脸模型下巴或脸颊区域对应的顶点索引.

(2)根据距离场函数计算对应顶点 ${V_{\rm er}}$ 各自需要移动的距离 $d$ . 设下巴和脸颊的矩形区域中点到各自矩形区域角点的距离分别为 ${R_1}$ ${R_2}$ , 矩形区域中每个点与中点的距离分别为 ${r_1}$ ${r_2}$ , 其比值 $\dfrac{{{r_1}}}{{{R_1}}}$ $\dfrac{{{r_2}}}{{{R_2}}}$ 分别记为 ${\omega _1}$ ${\omega _2}$ . 将区域的各个顶点的比值 ${\omega _1}$ ${\omega _2}$ 作为变量, 传入下巴整形算法的距离场函数 ${f_1}\left( {{\omega _1}} \right)$ 或脸颊整形算法的距离场函数 $ {f_2}\left( {{\omega _2}} \right) $ , 得到各自需要移动的距离.

下巴、脸颊整形算法的距离场函数表达式分别为:

$ {f_1}\left( {{\omega _1}} \right) = 0.9 \times \left( {0.5 \times \cos \left( {\pi \times {\omega _1}} \right) + 0.5} \right) $ (6)
$ {f_2}\left( {{\omega _2}} \right) = 0.5 \times \cos \left( {\frac{{20 \times \pi \times {\omega _2} - \pi }}{{19}}} \right) + 0.5 $ (7)

根据距离场函数的特性, 当区域内的点距离中心点越近时, 变化幅度越大; 区域内的点距离中心点越远时, 变化幅度越小. 距离场函数在定义域两端导数为0, 保证了距离场函数在中心点与边界点上连续. 其函数图像如图4所示.

图 3 三维人脸模型下巴及脸颊区域

图 4 距离场函数图像

(3)将顶点 ${V_{\rm er}}$ 沿着对应顶点的法线方向 $ \mathop n\limits^ \to $ 进行负方向/正方向移动, 得到新位置的下巴或脸颊顶点 $V_{\rm er}'$ , 模型顶点 ${V_{\rm er}}$ 移动后的最终位置 $V_{\rm er}'$ 为:

$ V_{\rm er}' = {V_{\rm er}} \pm d \times {f_1}\left( {{\omega _1}} \right) \times \mathop n\limits^ \to $ (8)

或:

$ V_{\rm er}' = {V_{\rm er}} \pm d \times {f_2}\left( {{\omega _2}} \right) \times \mathop n\limits^ \to $ (9)
2.2.2 鼻梁整形技术

模拟隆鼻主要是对三维人脸鼻子部分的区域做提升操作. 首先预处理得到人脸模型的鼻子区域的顶点索引集合 $Nose$ . 而隆鼻区域主要为鼻梁对应的区域, 再进一步得到鼻梁区域后便可进行隆鼻操作. 三维人脸模型鼻子及鼻梁区域如图5所示.

算法步骤如下:

(1)设隆鼻抬升的距离为 $D$ , 则中间两列顶点的最大抬升距离为 $D$ , 侧边两列顶点的最大抬升距离为 $\dfrac{D}{2}$ , 目的是为了保证两侧边界点处的平滑性.

(2)计算每列鼻梁顶点集合中每个顶点需要提升的距离. 本文采用线性插值法来计算该列所有顶点需要提升的距离. 鼻尖移动距离为 $D$ , 靠近眉心的鼻梁顶点移动距离为0, 中间顶点移动距离通过线性插值确定.

(3)将各顶点沿鼻尖朝向进行移动, 得到新位置的顶点.

图 5 三维人脸模型鼻子及鼻梁区域

3 系统设计与实现 3.1 开发环境和总体设计 3.1.1 开发环境

本系统的电脑开发系统为Windows 10, 开发编程语言选取Java和Python, 开发工具使用Android Studio、PyCharm, 编程环境选择Android 11.0(R)、Python 3.6.

3.1.2 总体设计

我们基于Windows系统, 搭建了由Android Studio、PyCharm和Bmob后端云数据库组成的开发环境, 系统的功能和表现层主要由图片采集、后端服务器重建、网络传输、模拟整形、模型保存和诊断结果这6大功能模块组成, 在第三方资源上, 我们使用了TensorFlow深度学习库、MTCNN多任务神经网络模型、Flask框架和OpenGL ES开放图形库, 如图6所示.

图 6 系统架构图

3.2 系统实现 3.2.1 图片采集

本系统通过使用安卓系统中的相机拍摄或从相册中选择来采集图片.

3.2.2 后端服务器重建

本模块首先在阿里云服务器中部署重建相关的环境和Python代码, 用户在安卓客户端上传图片发送http请求后, 通过WSGI (Python Web server gateway interface)协议将请求信息转换为服务器处理的相应接口格式并交给Flask程序实例, Flask程序实例调用服务器所部署的代码, 首先根据用户上传的图片进行人脸检测, 若检测出人脸, 则进行特征点标记和三维人脸模型重建, 否则返回检测不到人脸的提示信息, 请用户重新上传图片.

3.2.3 网络传输

本模块主要分为客户端和服务端两个部分. 安卓客户端利用OkHttp网络框架来处理post和get请求, 首先创建OkHttpClient实例和Request实例, 其次将请求封装在OkHttpClient实例创建出来的Call实例中, 最后通过调用Call实例的enqueue()方法创建参数对象并异步请求返回值, 在enqueue方法中, 通过调用dispatcher调度器初始化线程池并创建线程执行定义好的请求成功或失败的方法以接收返回数据或返回请求失败的结果. 网络传输流程图如图7所示.

图 7 网络传输流程图

服务端通过Flask程序实例接收客户端发来的请求, 用Werkzeug来做路由转发, 服务器接收到请求之后进行模型重建, 重建好之后将三维模型数据传给Flask, 再由Flask转发给安卓客户端.

3.2.4 模拟整形

本模块首先要加载由服务器返回或用户保存在本地的三维人脸模型, 在点击“调整脸颊”按钮后, 系统会调用安卓的seekbar组件显示带有滑块的拖动条, 通过移动滑块的距离, 可以得到对脸颊进行调整的距离参数, 再调用脸颊的整形算法, 实现对脸颊进行不同程度的胖脸和瘦脸的调整, 每次调整完之后都对模型进行重新渲染, 使得用户可以实时看到调整后的效果, 调整下巴和调整鼻梁的方式同理.

在调整过程中, 用户可以点击“前后对比”的按钮, 系统将调取初始的模型, 用户可将整容后的模型与初始的模型进行对比, 查看整容后的效果. 对比完成后点击“继续编辑”按钮, 即可回到编辑区域, 继续调整自己的三维人脸模型.

3.2.5 模型保存

本模块首先会确定用户是否对模型进行了调整, 若用户对模型进行了修改, 系统会记录下各个部位的调整信息, 并将调整后的人脸模型、各部位的调整信息等记录到Bmob后端云数据库中, 否则系统将提示用户“您尚未对模型进行修改”.

3.2.6 诊断结果

本模块主要通过真实人脸与三维人脸模型之间的比例关系, 计算用户实际需要对每个部位进行整形的幅度. 每个模型都有一个纵向尺寸, 即从头顶到下巴的距离, 系统会记录用户对模型的各个部位进行修改的参数, 用户可以在此模块中输入真实人脸的纵向距离, 根据比例关系:

$ \frac{真实人脸的纵向距离}{人脸模型的纵向距离}\text=\frac{需要整形的幅度}{调整的参数} $ (10)

即可得到需要调整的幅度 $e$ 为:

$ e=\frac{真实人脸的纵向距离\times 调整的参数}{人脸模型的纵向距离} $ (11)

医生可根据此幅度对相应的人脸部位进行整形, 实现对应模型上的整形效果.

4 系统测试与结果

系统测试包括功能测试和性能测试. 其中功能测试包括重建效果测试、模拟整形效果测试以及诊断结果准确性的测试. 性能测试则包括重建耗时测试、保存模型耗时测试以及编辑渲染耗时测试.

4.1 功能测试

(1)在测试重建效果中, 有12个体验用户, 其中男性6人, 女性6人, 真实年龄为19–67岁, 在用户体验过系统重建功能后, 通过问卷调查收集了体验者对自己照片重建结果的满意度, 实验结果如表1所示, 其中有10位用户对系统重建效果满意, 2位用户不满意, 即有75%的用户满意系统的重建效果, 满意的重建效果图如图8(a)所示, 另外, 不满意的用户均是年龄段较高的用户, 对于这类用户, 重建效果如图8(b)所示, 限制于BFM模型的原因, 人脸皱纹并不能很好体现出来, 因此对于这类照片的重建效果不好.

表 1 用户对重建效果的满意度调查表

(2)在测试模拟整形效果中, 选择一个重建模型, 对其进行下巴、脸颊和鼻梁的模拟整形效果测试, 对于每个部位, 均调整到系统规定的最大幅度(即鼻梁: −0.01和0.01, 脸颊: −0.02和0.02, 下巴: −0.04和0.04).

当各部位均调整到最大幅度后, 相应部位均保持平滑自然, 左右脸颊依然对称, 具体效果如图9所示.

(3)在诊断结果可靠性衡量上, 为了保持整形后人脸的自然, 系统在3个部位设置的幅度范围分别是下巴: −0.04~0.04, 脸颊: −0.02~0.02, 鼻梁: −0.1~0.1, 而正常人头到下巴的长度, 成年人大致范围为20–25 cm, 根据式(11)可得实际需要整形的幅度为毫米级, 并且根据整容医生的建议, 一般医疗整形的幅度也都是保持在毫米级范围内, 因此系统的诊断结果具有一定的可靠性.

图 8 重建效果示例图

图 9 整形效果图

4.2 性能测试

由于本系统在模型重建、模型保存方面需要用户等待系统响应, 在模型编辑方面存在编辑耗时和实时渲染耗时, 故本次性能测试的测试对象主要为系统在模型重建、模型保存方面的响应时间以及模型编辑及实时渲染的所需耗时.

(1)在响应时间的性能测试中, 由拍照和从相册中选择分别获取6张人脸图片, 其中分别包含两张青年、两张中年和两张老年的人脸图片, 并均包含了男性和女性的人脸. 对于模型重建的系统响应时间测试情况如图10所示, 平均响应时间为17.02 s. 由于模型保存的响应时间只与写文件有关, 与对不同的模型进行编辑以及对模型的编辑幅度无关, 故对模型进行10次修改后进行保存的响应时间测试情况如图11所示, 平均响应时间为12.51 s.

图 10 重建处理时间数据结果图

图 11 模型保存时间数据结果图

(2)在模型编辑及实时渲染耗时的性能测试中, 对模型进行10次最大程度的编辑, 每次测试从编辑完毕到完全渲染出来的时间间隔, 测试情况如图12所示, 平均耗时为0.28 s.

图 12 编辑渲染时间数据结果图

4.3 测试结果

在功能测试实验过程中, 大部分用户认为重建模型和图片的相似度高, 较高年龄段的用户则不这么认为, 主要原因是受到BFM模型的限制, 对人脸皱纹的再现效果差, 故对于年龄较大的人脸照片的重建模型相似度较低, 考虑到整形的受众用户主要集中于中青年龄段, 系统的适用性较强; 对于模型的编辑, 编辑后的部位依然保持平滑, 整形后的脸颊基本保持对称, 可以给用户展现较好的整形效果, 证明其模拟整形是可行的; 对于诊断结果可靠性上, 由于公式的正确性以及给定正确适合的人脸纵向尺寸后, 诊断结果保持在毫米级范围内, 与实际一般整形幅度吻合, 可以说明其结果具有一定的可靠性.

在性能测试中, 模型编辑及渲染的平均耗时0.28 s, 做到了编辑后的实时渲染. 但是模型重建的系统平均响应时间为17.02 s, 模型保存的系统平均响应时间为12.51 s, 所耗时间较长, 需要进一步研究以提高系统的整体性能.

5 结束语

本文采用较为成熟的三维人脸重建技术, 并提出了基于距离场函数的模拟整形编辑算法和实际整形映射算法, 实现了一个面向医疗整容的三维人脸重建与编辑系统, 使用户能直观看到术后的整形效果和实际需要整形的幅度, 有利于提高求美者对整形的满意度和医生整形的成功率.

本文对系统进行了充分的测试, 经调查结果和测试数据显示, 系统在大多数情况下重建效果较好, 对于老年人的人脸, 由于皱纹等人脸细节再现效果差, 故重建效果较差. 但由于整形的受众群体主要集中于青年和中年, 故本系统对于主要受众群体的重建效果依然较好; 但是系统对重建和模型保存的响应时间偏长, 对模型编辑后的实时渲染存在闪烁问题, 对用户的体验有一定的影响.

在未来的研究中, 本系统将致力于改进重建算法, 提高重建效果和缩短响应时间并适应于更多场景; 进一步研究人脸其他部位整形算法, 扩展系统整形功能; 对实时渲染加以改善, 提高系统的用户体验度.

参考文献
[1]
Parke IF. Computer generated animation of faces. Proceedings of the ACM Annual Conference. Boston: ACM, 1972. 451–457.
[2]
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: ACM, 1999. 187–194.
[3]
Gecer B, Ploumpis S, Kotsia I, et al. Fast-GANFIT: Generative adversarial network for high fidelity 3D face reconstruction. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2021, 1. DOI:10.1109/TPAMI.2021.3084524
[4]
Kemelmacher-Shlizerman I, Basri R. 3D face reconstruction from a single image using a single reference face shape. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011, 33(2): 394-405. DOI:10.1109/TPAMI.2010.63
[5]
Hassner T. Viewing real-world faces in 3D. Proceedings of the 2013 IEEE International Conference on Computer Vision. Sydney: IEEE, 2013: 3607–3614.
[6]
Richardson E, Sela M, Or-El R, et al. Learning detailed face reconstruction from a single image. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017. 5553–5562.
[7]
周大可, 张超, 杨欣. 基于多尺度特征融合及双重注意力机制的自监督三维人脸重建. 吉林大学学报(工学版), 2022, 52(10): 2428–2437.
[8]
蒋承安, 李青峰, 刘凯. 术前三维扫描及三维模拟在鼻整形术中的应用. 组织工程与重建外科杂志, 2013, 9(4): 204-207. DOI:10.3969/j.issn.1673-0364.2013.04.006
[9]
翁羽. 三维重建模拟技术在下颌角缩小整形术中的应用. 中国医疗美容, 2016, 6(3): 83-84. DOI:10.19593/j.issn.2095-0721.2016.03.043
[10]
Deng Y, Yang JL, Xu SC, et al. Accurate 3D face reconstruction with weakly-supervised learning: From single image to image set. 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops (CVPRW). Long Beach: IEEE, 2019. 285–295.
[11]
He KM, Zhang XY, Ren SQ, et al. Deep residual learning for image recognition. 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas: IEEE, 2016. 770–778.
[12]
林景栋, 吴欣怡, 柴毅, 等. 卷积神经网络结构优化综述. 自动化学报, 2020, 46(1): 24-37. DOI:10.16383/j.aas.c180275
[13]
张星星, 李金龙. 基于GANs无监督回归三维参数化人脸模型. 信息技术与网络安全, 2020, 39(11): 50-55. DOI:10.19358/j.issn.2096-5133.2020.11.008
[14]
吴越, 董兰芳. 基于弱监督学习的三维人脸形状与纹理重建. 计算机系统应用, 2020, 29(11): 183-189. DOI:10.15888/j.cnki.csa.007654
[15]
田唐昊. 三维人脸模拟整容系统[硕士学位论文]. 杭州: 浙江大学, 2018.