面向虚拟现实的着装人体个性化头面部纹理生成技术

2023-10-31 08:12陈金文罗炜豪梅琛楠韦京艳钟跃崎
纺织学报 2023年9期
关键词:肤色人脸亮度

陈金文, 王 鑫, 罗炜豪, 梅琛楠, 韦京艳, 钟跃崎,2

(1. 东华大学 纺织学院, 上海 201620; 2. 东华大学 纺织面料技术教育部重点实验室, 上海 201620)

近年来,以虚拟现实,增强现实以及混合现实技术为依托的元宇宙概念蓬勃发展。特别是基于用户个性化定制的虚拟化身,在虚拟现实中的应用愈发广泛。从技术构成的角度而言,三维着装人体的实现已经较为普遍[1-2],但是能够将用户的头面部特征赋予着装人体,在虚拟现实乃至元宇宙场景中加以应用,依然是一个值得深入探索的命题。有鉴于此,本文提出通过最少量的输入,仅需用户的单张面部正面照片重建其三维头部模型,并通过纹理融合与修复技术,统一面部、颈部与身体部位的纹理肤色,且整个过程无需人工干预,能够自动实现具有用户特征的定制化着装人体,用于各种虚拟现实的应用场景。

在基于单张图像重建人脸方面,有学者[3]提出了一种使用卷积神经网络(CNN)从单个二维图像直接重建三维面部的方法,该方法还可以处理从网络上下载的任意面部图像,即任意姿势、面部表情和遮挡的面部图像,但重建的三维面部精度不高;Hu等[4]和Lattas等[5]认为单张图像的人脸重建虽然显示效果良好,但重建的三维人脸包含伪像,在应用上仍具有局限性;文献[6]提出了一种基于单张图像重建人脸的方法,通过设计新的细节连续损失函数,将人脸细节中的身份和表情独立区分,使得生成的三维用户人脸的表情可以根据新的表情系数进行驱动生成动画,并且生成的三维人脸重建精度高,对遮挡,光照,姿态变化都更加鲁棒性,但纹理映射只局限在人脸,缺乏整体纹理的补全与映射;何华赟[7]在基于单张照片重建三维人脸的网络中提出利用特征点求解人脸参数化模型的参数,利用人脸图像的高频信息对细节增强,利用反照率参数化模型对贴图补全,但该参数化纹理贴图存在一定的细节丢失。

在基于头面部特征的定制化着装人体方面,李俊等[8]提出一种基于模特和用户照片的虚拟试衣方法,其中包括肤色替换、头部替换和体形调节3个步骤,该方法虽然重建速度快,但是基于二维的虚拟重建用户的互动性不够,试衣时不能全方位观察着装效果;许艳秋[9]通过对用户人脸进行三维扫描,编制了面向虚拟试衣的三维脸部特征转换软件,建立面向真人三维虚拟试衣的三维脸部特征提取与重构系统,最终实现真人与三维虚拟试衣人模之间的脸部特征的有效连接,但重建效果与用户真人差距大,应用范围有限。Pinscreen公司推出的基于单张图片的三维人脸重建技术加上人体重建后,实现了基于头部重建的三维虚拟着装人体,但纹理映射只针对脸部进行处理,脸部与身体边缘有明显的肤色拼接痕迹。Styleme和Virtisse公司通过用户手动输入人体参数重建大致三维人体,但用户的肤色、发型和脸部都用模板代替,用户真实体验感仍有待提高。

由此可见,目前的技术进展已经可以利用模板人脸或头部模型,通过深度学习技术,从单张照片推理用户的三维面部特征。但是所得人脸的纹理,通常与颈部和身体部分的纹理肤色相去甚远,不能自然融合。针对这个问题,本文提出一种头面部纹理融合与修复技术,使得所生成的头面部模型能够与着装人体无缝衔接。

1 头面部纹理融合与修复

1.1 面部纹理的光照校正

DECA(detailed expression capture animation)网络通过重构损失、特征点映射损失、闭眼损失、光照损失、身份损失以及形状一致性损失等一系列损失函数,迫使深度神经网络在推理过程中同时关注头面部的整体及细节特征;因此,所得三维人脸的几何模型精度较高,但是该网络对于局部空间上的纹理映射,以及颜色空间上的肤色变换,缺乏相应的优化对象,所得面部的初始纹理需要根据用户的颈部以及身体纹理肤色加以处理。

在虚拟现实的应用场景中,着装人体的纹理通常分为服装纹理、身体纹理以及面部纹理。图1示出头面部纹理融合与修复流程图。将原始着装人体的头颈部纹理中的面部纹理删除,并令得到的头颈部模板纹理为Um,根据用户(本文涉及的人脸均来自对抗生成网络合成的虚拟人脸)照片,输入所得DECA面部初始纹理UO(分辨率为256像素×256像素),本文研究旨在通过一系列的图像处理,得到二者自然融合的头面部纹理Ure,并将该纹理映射在三维头面部模型上进行渲染,如图1(e)所示,可在不同角度得到很好的渲染效果。

图1 头面部纹理融合与修复流程图Fig. 1 Flow chart of facial texture fusion and repairing. (a) Image input by user; (b) Initial texture U0; (c) Head and neck template texture Um; (d) Texture Ure generated by proposed method; (e) Texture mapping rendering results

用户输入的正面人脸照片大多数情况下会因环境光和自然光的影响,造成左右两边的肤色亮度不一致,若直接作纹理映射,会导致左右面部的颜色差异大,不利于后续的渲染应用。为解决这个问题,本文在保留用户原本面部信息的基础上,采用光照校正算法[10],利用光照分量的分布特性调整二维伽马函数的参数,降低光照过强区域图像的亮度值,提高光照过暗区域图像的亮度值,最终实现对光照不均匀纹理图像的自适应的校正处理,使两边皮肤的亮度差异缩小(见图2),具体实现步骤如下。

图2 光照校正流程图Fig. 2 Flow chart of illumination correction

1)将RGB颜色空间转换为HSV颜色空间,对亮度通道进行卷积核大小为5×5的高斯卷积滤波,并计算光照分量I(x,y)。所用高斯核函数如下:

I(x,y)=F(x,y)G(x,y)

2)采用伽马函数γ对光照分量进行处理,从而降低光照过强区域的亮度值,并提高光照过低区域的亮度值:

式中:γ为用于亮度增强的指数值(包含了图像的光照分量特性);m为光照分量的亮度均值。O(x,y)为校正后的输出图像的亮度值。为便于后续应用,再将HSV颜色空间转换为RGB颜色空间。

1.2 面部纹理的自动修复

DECA网络生成的初始纹理只有中心区域的面部纹理,侧脸部分的纹理有残缺(见图1)。为获得完整的面部纹理,需要先剔除经过前述光照校正后所得纹理图像U中的头发遮挡和背景,提取有效的面部纹理Utex,再进行纹理补全修复。

图3示出面部纹理提取流程图。首先根据纹理中人脸的肤色和轮廓得到二值化的面部掩膜Umask(即面部和眼睛区域的像素值为0,其余区域像素值为1)。然后将校正结果U与Umask逐元素相加运算,得到面部纹理Utex。在此基础上,为使得面部纹理边缘与颈部的纹理颜色过渡自然,首先计算Utex边缘像素的RGB均值作为肤色填充值,得到纯色图像Im。再将Im与头颈部模板纹理Um进行混合相加运算,即可得到肤色转换后的头颈部纹理Uhead(如图4所示)。

图3 面部纹理提取流程图Fig. 3 Flow chart of facial texture extraction

图4 肤色转换效果Fig. 4 Skin color conversion effect. (a) Solid color image Im; (b) Head and neck template texture Um; (c) Head and neck texture Uhead

qIm+(1-q)Um=Uhead

式中,q为权重系数。

不难发现,若将代表用户面容的纹理Utex与Uhead直接叠加,二者间会存在一个空白区域Ublank如图5所示。为使得该区域填色后尽可能与Uhead和Utex自然融合,将其当作一个图像修复任务(image in-painting),利用深度神经网络,采用两步修复法对其中的纹理进行补全。

图5 未补全的纹理图Fig. 5 Incomplete texture map

图6为纹理补全流程图。为补全面部纹理,首先对分辨率为256像素×256像素的Utex放大至286像素×286像素(多次实验结果表明,眼睛到脸部边缘的像素差值约为15),并从中心截取分辨率为256像素×256像素的区域,得到纹理Usym;然后将Utex的背景透明化与Usym进行图像叠加,对边缘处采用基于图像周围关系辅助的修复方法[11],得到初步补全的纹理Ua。然后将Ua的背景透明化与Uhead进行图像叠加,对空白区域使用基于快速行进的方法[12]进行修复,接着使用掩膜提取UO纹理上方的眼部纹理并透明化,与修复的纹理进行叠加即可得到补全的纹理Ure。

图6 纹理补全流程图Fig. 6 Flow chart of texture completion

1.3 身体纹理的风格迁移

经过上述处理,可将用户头面部纹理自然融入原始着装人体的头颈部纹理Um中。为进一步提高真实感,将此时的头面部纹理作为输入风格图像,而将原始身体纹理作为输入内容图像,通过神经网络进行风格迁移(见图7),将身体纹理的肤色自然转换为与头面部肤色差异最小化时的结果。由于该任务的核心在于尽可能保留身体纹理的内容,同时约束转移前后的区域一致性和肤色风格质量,因此本文采用PAMA(progressive attentional manifold alignment)网络[13]予以解决,该网络通过将内容图像与风格图像的流形进行对齐,并使用注意力机制使语义区域之间的风格达到一致。

图7 身体纹理风格迁移展示图Fig. 7 Display diagram of body texture style migration

2 结果与讨论

2.1 面部纹理的光照校正影响因素分析

在光照校正的系数选择上,本文使用不同用户的面部纹理图像做了对比实验,不同用户的实验数据结果趋势基本一致,本文任选其中一位用户的实验结果加以说明。结合面部纹理的实际情况,将高斯核函数的卷积核大小分别取5×5、15×15、25×25、35×35,对初始纹理UO进行图卷积运算,计算经过伽马光照校正后的纹理U和UO亮度V的平均差值。然后对左右两边的面部纹理U各使用像素大小为25直径的圆形进行掩膜提取,计算左右两边亮度V1的总和差值。图8、9分别示出不同卷积核的亮度差值及其光照校正后的结果。可以看出,当卷积核大小为5×5时,整体亮度V的平均差值最大,说明光照校正后,纹理U比UO的整体亮度提高;两边局部亮度V1的总和差值最小,说明左右两边的亮度差距缩小了。且初始纹理UO的左右两边局部亮度V1的总和差值为163.18,当卷积核为5×5时,左右两边局部亮度V1差距减少了23.1%(如图2所示),说明光照校正确实能缩小用户面部纹理的亮度差,提高面部的光照均匀度。

图8 不同卷积核的亮度差值Fig. 8 Brightness difference of different convolution kernels

图9 不同卷积核光照校正后的结果Fig. 9 Results after illumination correction of different convolution kernels. (a) Convolution kernel of 5×5; (b) Convolution kernel of 15×15; (c) Convolution kernel of 25×25; (d) Convolution kernel of 35×35; (e) Circular mask with diameter pixel of 25; (f) Mask extracted face part

在确定卷积核大小为5×5的前提下,进一步分析验证尺度因子c的最佳取值,实验结果如图10所示。可见不同尺度因子c对亮度V和V1的影响较小,但综合来看,最终选取左右两边局部亮度V1的总和差值最小时,即尺度因子c为5用于校正面部纹理的亮度。

图10 不同尺度因子c的亮度差值Fig. 10 Brightness difference of different scale factors c

2.2 面部纹理的自动修复分析

面部纹理自动修复的核心是肤色转换和二次修复。就肤色转换而言,将Im与头颈部模板纹理Um进行混合相加运算,本文对不同权重系数q进行了对比实验,结果表明权重系数q=0.4时,得出的头颈部纹理Uhead与面部肤色最接近且同时能保留头颈部模板纹理Um的皮肤肌理,如图11所示。

图11 不同权重因子q的肤色转换结果Fig. 11 Skin color conversion results of different weight factors. (a) q=0.1; (b) q=0.2;(c) q=0.3; (d) q=0.4; (e) q=0.5; (f) Extracted texture Utex

对于纹理修复任务而言,当只使用基于图像周围关系辅助的修复方法时,面部纹理Utex与头颈部纹理Uhead的边缘融合效果差,有伪像,如图12(a)所示。当只使用基于快速行进的修复方法时,面部纹理Utex与头颈部纹理Uhead的边缘虽然融合效果好,但修复的区域纹理来自头颈部纹理的边缘扩散,如图12(b)所示。只有当2种方式相结合时,效果最佳,如图12(c)所示。由于在光照校正过程中,用户的眼部纹理也参与了光照亮度调整,如原始的眼睛颜色由黑色变为褐色,故在执行纹理修复操作前,预先使用掩膜提取初始纹理的眼部区域,再与修复后的图12(c)纹理进行叠加,得到最终的补全纹理Ure,如图12(d)所示。

图12 不同方法修复纹理的结果Fig. 12 Results of texture repairing by different methods. (a) Assisted repairing; (b) Rapid repairing; (c) Reparing by two methods; (d) Finally completed texture Ure

图13示出使用本文方法对不同用户进行纹理修复的结果。可以看出,对原始纹理进行修复补全后,用户头面部模型的纹理与原始三维着装人体模型中的颈部肤色相似,边界融合自然,且保留了用户原始的面部信息,整个过程无需用户干预,说明本文方法是合理有效的。

图13 纹理修复结果展示Fig. 13 Texture repairing results. (a) User′s frontal view; (b) Initial texture map; (c) Results of proposed method; (d) Initial texture rendering result; (e) Rendering results of proposed method

图14示出本文方法与其它基于单张图像的头面部纹理修复方法的比较结果。可以看出:Avatar SDK网页生成的用户肤色与实际差别大,且不能保留用户眼睛周围区域的特征[14];BFM是一种基于DECA的头面部纹理修复方法[15],但生成的结果不真实,与用户差异大;本文方法能极大地保留用户自身的面部特征,而且不受神经网络的影响,针对常规背景下正脸的修复成功率达到100%,体现出本文的创新性。在修复时间上,本文修复一个用户的纹理平均耗时1.4 s,以图14的3个用户为例,在2台1080ti显卡的电脑上,Avatar SDK方法共耗时113.47 s,人均37.82 s;BFM方法共耗时38.50 s,人均12.83 s;DECA方法共耗时19.80 s,本文方法的修复时间是24 s,人均8 s。有效说明了本文方法在修复时间上的优越性,能快速根据用户输入的自拍正脸图像生成对应的全纹理三维头部模型。

图14 与其它基于单张图像的头面部纹理修复方法的比较Fig. 14 Comparison with other head and face texture repairing methods based on single image. (a)Input image; (b) Results of Avatar SDK; (c) Results of BFM; (d) Results of proposed method

2.3 身体纹理的风格迁移结果与讨论

着装人体的纹理通常分为服装纹理,身体纹理,以及面部纹理。通过1.1和1.2节的方法,已经得到修复后的用户面部纹理Ure,为实现在虚拟现实中着装人体的身体纹理与用户面部纹理具有相似的皮肤肌理,采用PAMA风格迁移网络。图15示出风格迁移结果。图15(a)所示的着装人体的原始身体纹理肤色偏白,并不适用于代表用户的身体纹理;图15(b)所示的经过风格迁移后的用户身体纹理,与头面部肤色差异最小,过渡自然;图15(c)所示的使用1.2节肤色转换的方法对身体纹理进行处理的结果,其与面部肤色仍有一定的差距,效果不及风格迁移。

图15 风格迁移结果Fig. 15 Style migration results. (a) Original body texture; (b) Body texture of style transfer; (c) Body texture converted by weight coefficient method

2.4 在虚拟现实中的应用

在生成带纹理的头面部模型后,可将其安装在三维着装人体上。该过程中主要涉及头部的仿射变换,姿态校准,与身体融合的布尔(加)运算等,由于这些内容属于虚拟试衣领域的常见技术,在此不做赘述。

图16示出在虚拟现实中的应用效果。根据单张用户照片(见图16(a))所生成的三维头面部模型与着装人体(见图16(b))进行头面部替换,得到用户的着装人体(见图16(c)),用户的头面部模型与着装人体融合自然,且对用户替换不同发型后能够得到不同的妆发效果(见图16(d)、(e))。图17示出用户的着装人体在不同虚拟现实(VR)场景中的渲染结果,可以看出该模型在室内室外不同的光照环境下,均能呈现真实的光影明暗效果,证明了本文方法用于虚拟场景的实用性。

图17 虚拟现实渲染效果展示Fig. 17 VR rendering effect. (a) VR scene 1; (b) VR scene 2; (c) VR scence 3

3 结 论

本文从虚拟现实的应用出发,对着装人体的个性化头面部纹理生成进行研究,提出一种头面部纹理融合与修复技术。输入单张正面人脸图像,利用DECA神经网络生成初始纹理,并对其进行光照校正和纹理修复,接着利用PAMA神经网络进行风格迁移,最终生成完整的头面部纹理和对应的身体纹理,解决了不同来源的头面部纹理与身体纹理肤色的自然融合问题,能满足各种VR环境下的虚拟试衣应用。

猜你喜欢
肤色人脸亮度
有特点的人脸
Conversation in a house
人的肤色为什么不同
为什么人有不同的肤色?
亮度调色多面手
三国漫——人脸解锁
亮度一样吗?
基于斩波调制的LED亮度控制
人生的亮度
马面部与人脸相似度惊人