导读:本文将从图形角度介绍数字人建模和动画关键技术的相关研究工作,比如人脸建模、头发编辑、虚拟服装等,主要包括以下几大部分内容:
在 ACM Multimedia2021 上发表了视频肖像胖瘦调整的口头报告论文,主要是调整视频中人脸的胖瘦,达到从视觉上看不出明显修整的自然效果。
双下巴去除是发表在 Siggraph 2021 的论文。人脸编辑中去双下巴是比较难的,既涉及纹理又涉及几何。如果所示,第一排是原始的图像,通过调节参数可以使双下巴逐渐消失(第二排)。
给肖像去头发是将给定的照片中人物的头发去掉。可以做头发的编辑,比如给人物换一套头发,如果保留原来的头发会对合成的结果产生干扰。在数字人的三维重建中,如果保留原始头发的话,会对纹理产生干扰。我们的方法可以获取没有头发纹理干扰的三维重建结果。
这是元宇宙里面的新时尚,提供一张照片,将虚拟衣服合成到人的身上,可以随心所欲的穿新衣服。
在可持续发展当中,时装业存在着大量问题。虚拟服装提供了一个很好的解决方案。
比如,左边是真实衣服,右边是虚拟衣服。可以看出,虚拟衣服和真实衣服是非常相近的。
2022 百度世界大会中数字人希加加的衣服模型和动画都是由我们提供的。
上图是电影中的数字人,以及虚拟整容的工作。
我们要研究的是如何构建高精度的三维人脸重建方法。一类方法是采集用户照片,使用 MVS 来重建三维模型,但是这种方法对睫毛处理效果较差。因为睫毛部分存在几何信息,会对重建造成干扰,眼部区域不精确。
相关的研究工作非常多,比如人脸几何和毛发重建、眼睑眼球重建等,但是没有一个可行方法去准确地编辑睫毛。
① 基于三分图的抠图方法
要编辑睫毛,可以使用抠图把睫毛抠出来,抠图实际上是解一个病态方程,如下图所示,这是一个基于三分图的自然抠图示例,能得到很好的结果。但这个方法有一个缺点,需要输入一个三分图,而要构建三分图,是非常困难的。
② 抠图数据集
对于抠图数据集近几年工作也很多,比如下图的 CVPR2009 的一个数据集。
③ 蓝幕抠图
蓝幕抠图在电影特效里面用的非常多,通常会用绿幕或蓝幕,然后通过一些三角测量方法计算前景蒙版的值。
① 数据集合基线方法介绍
我们要解决的是睫毛的抠图。左边输入的是包含眼睫毛的照片,通过抠图网络EyelashNet,把mask的值算出来。
② 研究动机
睫毛区域存在几何纹理,在三维重建参数化的时候,对结果产生很大的干扰,效果非常不好,如果靠美工去修就非常耗时耗力,所以需要一种方法能自动把睫毛抠出来。
③ 主要挑战
如果人工移除睫毛,很费时费力。使用 Gabor 滤波方法,效果也仍然不好。也可以用图像抠图方法,但是数据集构建非常困难。如果使用蓝幕抠图,睫毛生长在眼睑上,使得背景图例如眼睑和眼皮无法被分离和替换,另外人是会眨眼的,使得睫毛采集的时候难以保持静止,那么想要采集多个严格对齐且颜色不同的睫毛是很困难的。
④ 睫毛数据采集
我们把睫毛涂上荧光剂,打开UVA闪光灯,就能看到荧光效果,进而得到睫毛的分割结果。但这还是不够的,还需要进一步处理。
⑤ 睫毛蒙版计算
我们使用上一步获得的数据集作为输入,用抠图网络去预测真正的抠图结果。但如果只用原始数据集,效果也不是很好,而且我们没有 ground truth。我们设计了虚拟合成的方法 Render EyelashNet 进行预热,再用实验结果去预测得到一个估计的结果,结合人工,把那些不好的结果筛选剔除,最终得到了带有初始蒙版的数据集。之后就可以用这个数据集去训练,得到一个细化的结果,细化的结果放入数据集,再去训练,经过迭代最后获得一个比较好的数据集。
① 采集设备
我们搭建了一套采集系统,包括 16 个相机、365 纳米的紫外闪光灯、补光系统等,具体参数可以参看截图。
② 睫毛上色和眼部定位
我们邀请了很多浙大的同学,给睫毛上色图上荧光剂,人要保持不动,然后使用激光定位眼部。
打开和关闭紫外闪光灯的结果对比:
③ 矫正对齐
理想的情况下输入的两个对照图是没有偏移的,但是人的眼皮很容易动的,会有偏差,我们使用FlowNet2得到一个光流场,使用光流场结果对荧光睫毛进行偏移矫正,进而得到一个严格对齐的图片,这样就获得了分割结果。
① GCA 网络
推理阶段我们主要用的发表于 2020 年 AAAI 的 GCA 网络。
GCA 网络的输入是 RGB 图像和一个三分图,输出是睫毛蒙版,我们前面的分割结果可以作为初始的三分图结果,从而解决了睫毛三分图的人工构建困难的问题。
② 蒙版推理网络
这里把三分图换为睫毛遮罩图像和原 RGB 图像作为输入,通过渐进式训练的方式,结合 RenderEyelashNet 训练预热网络,得到一个蒙版结果,然后把这个结果再加入到输入作为训练集,通过人工筛选得到视觉上正确的睫毛抠图数据集,这样既有虚拟数据也有真实数据。用这个数据集再去训练和推理,最后得到预测版的睫毛蒙版。然后再放入训练集,再迭代,通常两次就能打到所期望的结果。
③ 人工选择
使用再先进的软硬设备也无法保证睫毛采集的准确性,我们通过人工选择把一些不好的结果去掉,确保训练数据的准确性。
④ 基线网络
训练好基线网络后,输入一张图片进行测试,得到比较好的结果。对于未知的图像,我们并不知道它的三分图是怎样的,我们直接输入一个灰度图,一样可以得到很好的睫毛预测结果。
① 训练数据集
我们对 12 个眼睛表情和 15 个视图进行睫毛数据的捕捉。
② 测试数据集
为了验证我们的方法,在测试的时候,既使用了我们自己采集的数据,同时也使用了互联网上的一些图片数据。
我们通过渐进式迭代两次后,得到的结果已经非常好了,和真值比较接近。
③ 方法对比
我们和目前最好的几种方法做了对比,不管是视觉上还是定量上,我们的方法都显著地好过以前的方法。
④ 消融实验
我们也做了消融实验,验证我们的方法各个部分是不可或缺的。
⑤ 结果展示
我们用了互联网上的一些照片进行验证,这些照片是没有 Ground Truth 的。但对于这些照片,我们的方法仍然能计算出比较好的睫毛抠图结果。
⑥ 应用
我们与腾讯 NEXT 工作室合作,把该方法用于高精度三维人脸重建,睫毛区域已经高度逼真。
另外一个应用是睫毛的美化编辑。获得睫毛后,可以改变其颜色或把睫毛变长。但这个方法应用在戴眼镜、光线强弱明显的地方,结果会有偏差。
我们提出了 EyelashNet,这是第一个高质量的睫毛抠图数据集,包含 5400 个高质量捕获的睫毛抠图数据和 5272 个虚拟睫毛抠图数据。
我们提出了一个专门设计的荧光标记系统来捕捉高质量睫毛图像和遮罩。
我们的方法在睫毛抠图上实现了当前最先进的性能。
这项工作是为了模拟宽松衣服。我们和马里兰大学、腾讯 NEXT 工作室合作,相关论文发表在 Siggraph2022 上。这个工作提出基于深度学习的宽松衣服实时预测方法,可以很好地处理大幅度动作,并支持可变的模拟参数。
这项工作的一项核心技术是虚拟骨骼,这是一组使用刚性变换与线性混合模拟方法控制服装变形的模拟骨骼。利用虚拟骨骼,我们可以高效地模拟宽松服装的复杂形变,而且这些骨骼可以作为输入,引导服装细节的生成。
让服装动起来一般有两类方法,一种是物理方法,这种方法计算起来费资源;另一种方法是数据驱动的,它通过从真实的数据中学习并去驱动,这种方法相对较快,有着很好的性能。
近几年,机器学习和深度学习的方法越来越多,但这些方法,要么是预测静态情况下的服装形变,要么是预测紧身衣服的动态形变。但实际上,像裙子之类的很多服装都是宽松的,尽管有些方法能预测宽松衣服形变,但对于大幅度动作的形变预测不太好。而且目前方法都无法支持可变参数的。
我们的研究主要有两点贡献,第一个是使用深度学习方法预测宽松衣服的复杂形变,我们将服装形变拆解为两部分——低频部分和高频部分。使用虚拟骨骼表示低频部分的形变,并使用它来推断高频部分;第二个贡献是使用身体的动作结合物理模拟参数作为输入,使用该方法处理两种输入的异质性。
① 虚拟骨骼生成方法
先使用模拟方法得到一个 ground truth 的训练集,对这些训练集做拉普拉斯顺滑处理,得到低频的 Mesh,然后做 Skin Decomposition 处理,得到虚拟骨骼和权值。
② 运动网络
通过身体的运动序列得到虚拟骨骼的运动序列,通过运动网络预测低频形变信息,使用低频的信息预测高频的信息,最后得到模拟结果(最右边图形)。
③ 模拟参数变量
我们想要针对不同参数变量都能做评估,通过 RBF 网络预测出我们没看到的模拟参数结果,这样就能使用一套网络即使参数不同也能做预测。
① 数据准备
首先要生成真值数据,我们使用 Houdini Vellum Solver 解算器,大约模拟了四万帧的动画。我们没有采用真人的动捕结果,而是采用了网络的视频动作。这是因为我们希望模拟大幅度动作,但真人的动作其动作比较小。
② Skin Decomposition
低频形变序列我们使用蒙皮分解来获取虚拟骨骼,得到结果是一个线性混合蒙皮的模型,这个模型包括一个 Rest Pose 和每根骨骼对应的蒙皮权重。还得到了每一帧虚拟骨骼的平移和旋转。虚拟骨骼没有层次关系,没有父骨骼和子骨骼这样的关系,而且每个骨骼有自己的旋转和平移。
另外,虚拟骨骼是没有真正的现实意义的,虚拟骨骼是每个特定动画中获取的。我们使用 Motion Network 处理身体的输入,每个网络对应不同的身体模拟参数,输入只有关节的旋转和角色的平移,输出是对应物理参数的 Mesh 推断结果。
③ 动作网络
动作网络依次推断低频和高频部分。
低频部分使用循环神经网络 GRU 将输入的身体动作转换为虚拟骨骼的旋转和平移,使用循环神经网络有个好处是能够获得之前帧的信息,这样更好捕获动态效果,低频形变可以用虚拟骨骼线性混合蒙皮来获取。
动作网络可以用来预测高频部分,一个是 GRU 获取高频特征,一个是 GNN 获得低频部分特征,把两部分特征通过 MLP 来得到高频信息。将高频和低频结果相加后得到最终结果。
为了处理物理模拟参数输入,我们训练了很多个不同动作的 Motion Network,相同动作的输出对应的参数模拟结果,我们使用RBF神经网络把这些结果加起来,加权系数取决于模拟参数和对应网络的模拟参数的距离,并在计算距离之前使用多层感知机将参数投影到一个空间里。
在实时模拟时,在不改变模拟参数的情况下,宽松衣服都可以模拟得非常好。
左侧的模拟结果和 ground Truth 是非常接近的,右侧是处理可变参数的。
另外一个问题是如何选取虚拟骨骼的数目。我们实验发现,对于低频部分,数目太少效果不好,太多也没多大帮助,80 是比较好的结果。但对于高频部分,虚拟骨骼的数目是越多越好,这样可更好地表现细节。
宽松是指衣服离人体的距离,红色部分表示更远,蓝色表示紧身部分,可以看出我们的结果(最右侧)更好。
这是低频和高频情况下和真值的对比图,我们的方法和 ground truth 更接近。
从视觉上看不同方法的对比,我们的效果虽然和 ground truth 有一点点差异,但相对更好,不管高频还是低频部分,都比较接近。
同时也做了定量的分析,例如 RMSE、STED 等指标,结果显示明显好于以前的方法,即使对于紧身衣服和传统方法也相当。
我们通过 RBF 网络做了一个消融实验来验证我们的方法。
在动作非常大的情况下,模拟结果上的腿可能穿过衣服,这是因为碰撞避免是通过能量网络加进去的,以后也可以采用其他 skinning method 获得更好的结果。
高精度人脸重建和动画在很多应用中很重要,比如游戏、虚拟人、元宇宙,都需要实时的处理,也是一个很大的挑战。另外服装覆盖了人体 80% 以上,也是数字人重要的组成部分。在图形应用中,近距离我们可能比较关注人脸,但距离稍微远一点,我们更关注服装。我觉得以后的发展方向是使用低成本方法构建高度逼真、实时的数字人应用。
A1:虚拟骨骼是算出来的,换一套衣服需要重新生成新的骨骼,数目和变换也不一样。在推理的时候是实时的计算出来的。
A2:还是很方便的,之前没学过的人经过培训可以很快学会。即使从无到有设计一套衣服,可能一两个小时就能设计一件很复杂的衣服。
以上是数字人建模和动画关键技术的详细内容。更多信息请关注PHP中文网其他相关文章!