《Facial Geometric Detail Recovery via Implicit Representation》
paper: 2203.09692v1.pdf (arxiv.org)
code: insightface/reconstruction/PBIDR at master · deepinsight/insightface · GitHub
1、目标
单图三维人脸重建
有限的低维3DMM统计模型会导致重建效果平滑,缺乏细节
直接预测三维模型结构的方法成本高昂,需要大量匹配的三维扫描数据
参数化的纹理空间表达力有限(一般都是较低维的)
输入的野外图像容易受遮挡和阴影等环境因素的影响
2、贡献
设计了一种单张图像获取高保真纹理和几何形状的方法;
设计了遮挡鲁棒的面部纹理补全方法,仅使用预训练的StyleGAN-v2生成器;
设计了一种详细的形状优化方法,一种基于物理的深度网络,解耦出镜面法线以更好地恢复几何细节;
3、简介
提出一种人脸几何细节恢复方法,包括了纹理增强和几何增强
纹理增强部分
首先人脸解析生成蒙版,后输入StyleGAN Encoder来修复被遮挡的图像,然后使用无遮挡的图像修复蒙版图像
几何增强部分
先使用完整面部纹理图像和3DMM得出的粗糙几何形状渲染出多视角的图像;输入这些渲染图像,后经过深度网络分离,漫反射法线(diffuse normal)和镜面法线(specular normal)
4、相关工作
纹理修复相关工作
利用面部对称性训练image to image网络,需要匹配训练数据
将纹理修复视为补全问题,使用StyleGAN-v2修复遮挡部分,但存在外部遮挡时会失效
几何增强相关工作
基于优化——拟合3DMM获得粗略形状,后使用shape from shading生成细节——遮挡敏感
基于回归——拟合3DMM获得粗略形状,回归高分扫描数据;回归displacement map;回归bump map;利用多视图图像数据回归;利用light-stage数据来学习漫反射和镜面反射率;直接学习可动画化的displacement map;
无3DMM模型——直接重建密集网格或推断表面法线 image to mesh
隐式表面重建
SDF理论介绍:
SDF(signed distance field)基础理论和计算 - 知乎 (zhihu.com)
SDF的本质就是存储每个点到图形的最近距离,即将模型划出一个表面,在模型表面外侧的点数值大于0,在模型表面内侧的点数值小于0。
5、具体方法
5.1 遮挡鲁棒纹理补全
去除外部遮挡
给定输入图像与通过现成人脸分割网络得到的人脸图像蒙版,和使用StyleGAN-v2对latent space采样进行复原
遵循与OSTeC相同的方式来初始化潜在参数,这加速了收敛并帮助优化器避免局部极小值。 然后,使用学习率为 0.25 的 Adam优化器对潜在参数(方程 1)进行优化。 请注意,我们的过程(例如拼接、掩模预测)是全自动的,不需要针对不同图像进行参数调整。
纹理补全
这部分基本是基于OSTeC的工作上做的;与OSTeC所用的3DMM估计粗略形状;获取可视部分,再以不同的姿势重新渲染修复混合
多视角面部的再渲染
选择各种预设相机姿势下使用纹理图渲染网格结构,收集多视角的渲染图以便之后使用
5.2 纹理引导的面部几何细节恢复
给定一连串渲染图和他们对应的几何结构,定义一个SDF和一个可微分渲染器PBIDR,使用PBIDR优化SDF,获得精确的镜面法线和隐式的面部表面,最后传回3DMM拓扑。
SDF的形状表示
预测一个点到面的映射
基于物理的隐式可微分渲染器PBIDR
传统上,面部重建方法使用简单的 Lambertian 着色模型来渲染具有单个反照率纹理的面部网格。 相反,逼真的面部渲染需要额外的材质属性和昂贵的着色模型。 Blinn-Phong 着色模型分别对漫反射和镜面着色进行建模,并且可以以较低的计算成本近似人体皮肤渲染。 此外,分离漫反射法线和镜面法线还可以近似皮肤的漫反射次表面散射,它受镜面法线中存在的高频细节的影响较小。 相反,镜面法线代表一些细观表面细节的外观,例如细皱纹和皮肤毛孔,这些细节通常很难提取,但它们在渲染中的效果很显着。
将镜面法线近似为SDF的梯度,光滑的漫反射法线近似为再原始粗糙网格上进行重心采样获得的法线,这样只有SDF法线负责渲染图像的高频细节,从而指导SDF更准确地捕获它们。因此,可将该顶点的外观分解为:
形状细节优化
定义了一个优化框架,并使用光度损失、掩蔽损失、eikonal 损失、配准损失和法线损失来训练 SDF MLP 结构。
将细化的SDF转换到模板网格
优化 Fθ 后,我们可以估计任意点的梯度和 SDF 值,并将它们“拉”到隐式曲面。 因此,我们计算粗 3D 网格中顶点的 SDF 值,然后近似其法线。 然后,我们保留原始网格面,并通过其法线和 SDF 值给每个顶点一个位移,得到细粒度网格 Gf 如下: