随着数字人产品不断的迭代和发展,对于用户来说,属于自己的个性化的数字人不可或缺,在数字人产品中常见的3D数字人个性化设定的方式主要由3种进行捏脸,模板选择方式、自由调整方式、自动捏脸。首先简单介绍一下模板选择和自由调整方式后,再详细介绍自动捏脸。01
—
模板选择方式
模板选择方式进行数字人捏脸,将数字人划分成不同的模块,如发型、脸型、眉毛、眼睛、睫毛、鼻子、嘴唇等模块。每一个模块提供多套模板供用户选择,用户通过选择不同模块的模板实现数字人捏脸完成属于自己的个性化数字人。下图为QQ通过模板选择方式进行捏脸获得个性化数字人。
模板选择方式的优缺点:
优点:模板都是事先预置好具备美观效果的样例,用户所能改变的仅仅是不同的组合方式,最终效果相对可控。
缺点:需要花费大量的时间与人力对各个部分生成足够多的模板,由于人力的限制,往往无法提供足够多的具备各色特征的模板,造成个性化能力表达不足。
—
自由调整方式
自由调整方式进行数字人捏脸通过提供物理含义的滑条提供用户进行人脸调整,如脸的大小、眉毛的样子等,通过滑条和关键的,用户可以选择不同的关键点对各个部分细节进行细致的调控,改变模型效果。自由调整方式结合模板选择方式,使得最终生成的个性化数字人数量增加,并且降低了人工生成各个模块模板的成本。下图为QQ通过自由调整方式进行捏脸获得个性化数字人。
但是对于一些用户来说,通过滑条和关键点对数字人模型进行效果调整达到满意的细微人脸变化十分困难,因此自动捏脸成为了关键方式。
—
自动捏脸方式
数字人自动捏脸方式只需要通过手机或者其他设备,采集人脸系统自动分析与提取人脸的特征,并根据分析和提取的数据自动生成带有用户特征的数字人人脸。数字人自动捏脸系统的主要流程如下:
数字人自动捏脸系统主要模块包含3D基础头模、基于关键点人脸表示方法、基于关键点检测、人脸关键点调整、基于关键点的网路变形、照片体征提取、发型分类、基于网络化模块的数字人人脸渲染。
数字人要生成3D捏脸的结果,首先要需要制作一个3D的基础头模。3D基础头模往往是由脸、眼睛、鼻子、睫毛、牙齿、头发等多个部分组合而成。
其次是人脸的特征地表示,对人脸各个部分进行网络化。脸部的特征一般分为形状特征和颜色特征。形状特征主要指脸型和五官边界,分别包括脸部,眼睛,眉毛,嘴唇,鼻子轮廓。颜色特征指面部各个区域的颜色。对脸部的特征进行状态和位置的定位需要包含3D坐标。为了表示脸部特征,目前常用的方法是关键点信息,所有的关键点都定义在脸部和五官的边界处。对于默认的数字人的人脸基础头模,需要预先标定其网格上对应的106个关键点。
人脸风格化首先要求对用户的人脸关键点进行检测,如何对人脸的关键点进行检测。
检测到了人脸关键点后,检测结果可能无法被直接使用,真实的人脸可能存在左右不对称、关键点检测误差等问题。因此需要对检测结果进行一定的预处理。预处理的过程分为三步:关键点归一化、关键点对称化、关键点平滑化。
不同数字人有不同的人脸风格,自动捏脸系统需要将真实的人脸的关键点风格转化为成数字人所需要的风格才能生成数字人中的人脸。在数字人制作中,美工通过3Dmax或Maya等3D建模工具制作出的头模内在的模型表征都是多边形网格。数字人角色的捏脸效果可以通过改变网格结构的组合,顶点位置及贴图等多种方式实现。
对于用户的人脸检测出106个关键点,并估计出它们的3D空间坐标,得到人脸主要部位的形状。根据数字人的需求,对关键点进行符合数字人风格的调整,如对称化、眼睛放大、瘦脸等,从而得到数字人人脸模型的关键点的目标位置。对数字人3D基础人脸模型的106个关键点调整到目标位置,并保持人脸网格平滑,从而得到最终的带有人脸特征的数字人人脸。
如何得到带有人脸特征的数字人人脸?
解决网络自动变形的主要思路是把关键点驱动变形的问题转化为二次项函数优化问题,即求解一个线性偏微分方程组。二次项函数数学模型的建立有很多方式,第一种方式双调和变形,将网格形变转化为一个双调和函数的求解问题;第二种称为仿射变形,是另一种形式的线性偏微分方程求解。
自动捏脸采用BlendShape的方法,把关键点驱动变形得到的头模结果跟基础头模进行线性融合。融合的权重计算可以复用双调和优化的方法计算出来。
在一个真实的基础头模上,对一些随机照片照片的预测变形结果。
为了数字人美观同时使得数字人的形象更加符合用户特征,需要根据用户照片中的图像特征对标准的贴图进行调整,变成符合用户个性化的特征贴图。例如,如果用户肤色比多数人的平均肤色偏深,则个性化数字人肤色也会相应加深。
照片特征提取的方式一般可以分为两类:基于图像处理的方式与基于监督学习的方式。
两种方式适用于不同的场景,对于准确度要求不高的特征信息,使用基于图像处理的方式。而对于预测难度较大要求高的特征,可以使用基于监督学习方式。
对于数字人肤色、眉色、瞳色、唇色、发色、眼影等贴图的调整,是对贴图的颜色进行统一的调整,因此只需要真实照片的平均颜色和大体的图片颜色接近即可,不需要特别精准的各个部分的颜色,因此选择基于图像处理的方式进行图片特征提取。
对于平均肤色、平均眉色、平均瞳色、平均唇色等提取,需要选择不影响误差的检测,对该区域的所有像素RGB值的中位数选取作为最终预测的颜色。
为了方便颜色的改变,需要将常用的RGB颜色模型转换为HSV颜色模型。HSV颜色模型由三部分组成:色调H、饱和度S和明度V。色调H表示在360°的颜色范围中取值,红色为0°,绿色为120°,蓝色为240°。饱和度S表示光谱色跟白色的混合,饱和度越高,颜色越鲜艳,饱和度越趋近于0,颜色越趋近于白色。明度V表示颜色明亮的程度,取值范围为从黑到白。
对发型的修改,需要将真实照片的发型进行分类,划分到设定好的发型库。
女发分类:直发/卷发分类;短发/长发分类;前发刘海儿分类;马尾/发髻分类。
男发分类:极短发/卷发/其他;背头/分头/自然碎发;左/右/中分。
根据用户的照片提取发型的分类,根据分类在发型库中选择为数字人添加。由于发型的检测比较复杂,因此可以选择基于深度学习的方法训练分类模型来进行预测。
使用Unity基于数字人3D基础头模以及带有用户人脸特征的形状关键点和颜色特征进行个性化3D模型数字人生成。Unity是一款跨平台的2D和3D游戏引擎,除了可以研发电子游戏外,还可以用于实时三维动画等类型内容的创作。