3DMM
核心思想
人脸可以在三维空间中进行一一匹配,并且可以由其他许多幅人脸正交基加权线性相加而来。每一个三维的人脸,可以由一个数据库中的所有人脸组成的基向量空间中进行表示,而求解任意三维人脸的模型,实际上等价于求解各个基向量的系数的问题。
人脸的基本属性包括形状和纹理,每一张人脸可以表示为形状向量和纹理向量的线性叠加。
人脸模型
- 首先计算形状和纹理向量的平均值。
- 中心化人脸数据。
- 分别计算协方差矩阵。
- 求得形状和纹理协方差矩阵的特征值$\alpha, \beta$和特征向量$s_i, t_i$。
求解方法
Model Fitting:如何将2D人脸拟合到3D模型上?
“A Morphable Model For The Synthesis Of 3D Faces” (1999) 提出的方法是Analysis by Synthesis。
- 初始化一个3维的模型,需要初始化内部参数$\alpha, \beta$,以及外部渲染参数,包括相机的位置,图像平面的旋转角度,直射光和环境光的各个分量,图像对比度等共20多维,有了这些参数之后就可以唯一确定一个3D模型到2D图像的投影。
- 在初始参数的控制下,经过3D至2D的投影,即可由一个3D模型得到2维图像,然后计算与输入图像的误差。再以误差反向传播调整相关系数,调整3D模型,不断进行迭代。每次参与计算的是一个三角晶格,如果人脸被遮挡,则该部分不参与损失计算。
- 具体迭代时采用由粗到精的方式,初始的时候使用低分辨率的图像,只优化第一个主成分的系数,后面再逐步增加主成分。在后续一些迭代步骤中固定外部参数,对人脸的各个部位分别优化。
存在的问题:
- 该问题是一个病态问题,本身并没有全局解,容易陷入不好的局部解。
- 人脸的背景干扰以及遮挡会影响精度,而且误差函数本身不连续。
- 对初始条件敏感,比如基于关键点进行优化时,如果关键点精度较差,重建的模型精度也会受到很大影响。
发展
数据集:Basel Face Model(200个人脸),LSFM(9663个人脸),BFM 2017(包含表情系数),FaceWarehouse(国内的数据集,没有开源)
基于3DMM的表情模型
- 加性模型:线性模型,将表情作为形状的一个偏移量
- 乘性模型:因为表情也会改变人脸的形状,因此它和形状并非完全正交的关系,所以有的研究者提出了乘性模型
纹理模型:也被称为表观模型,它相对于形状模型来说更加复杂,受到反射率和光照的影响,不过大部分的3DMM模型不区分两者,所以我们将其视为一个因素,即反射率。
深度学习3DMM重建
全监督方法 3DMM CNN:使用ResNet101网络直接回归出3DMM的形状系数和纹理系数,形状系数和纹理系数各有99维
自监督方法 MoFa:三维人脸重建中真实的数据集获取成本非常高,这一类方法不依赖于真实的成对数据集,它将二维图像重建到三维,再反投影回二维图
更好的三维特征编码 3DDFA, PRNet
EG3D
贡献
- 提出一种triplane-based 3D GAN框架。在保持效果的情况下,提速明显。
- 提出一种3D GAN训练策略dual discrimination,用于保持多视角一致性。
- 提出generator pose conditioning,建模pose相关的属性,例如:表情。
- 在FFHQ和AFHQ Cats的3D-aware图片生成中取得sota结果。
Tri-plane hybrid 3D representation
explicit features: 每个特征平面是正交的、和坐标轴对齐,分辨率为$N \times N \times C$,将3D空间中的某个点投影到每个平面上,通过双线性插值获得对应的特征向量$(F_{xy}, F_{xz}, F_{yz})$,求和将它们累积起来。
implicit: 用一个轻量级的decoder(小MLP)把特征解码为 color 和 density,进行 (neural) volume rendering。
混合型的优点:
- 比完全用隐式MLP结构进行neural rendering的计算代价小
- 对于长度为$N$的特征,scale的复杂度是$O(N^2)$,而dense voxels是$O(N^3)$;使用相同的内存,tri-plane能使用更高分辨率的特征
- 特征平面可以使用现成的 2D CNN-based generator 生成
三种3D表示方法的比较:NeRF用全连接层和位置编码来表示一个3D场景,查询速度非常慢;体素(显式或混合)用较小的解码器,查询速度快,但是很难提高分辨率;本文提出的混合表示方法tri-plane不仅快而且能继续提高分辨率。
3D GAN framework
训练集:unstructured 2D images,用现成的pose detectors估计相机内外参数。
CNN generator backbone:EG3D使用StyleGAN2作为backbone,可以进行style-mixing和latent-space interpolation。
Decoder: 从tri-plane中采样并加和后,decoder的结构是单隐藏层的MLP,这个MLP并不需要位置编码或者坐标或者角度的输入。
Rendering: 得到特征后,通过一个小MLP进行解码,得到density和32-channel feature,特征图的维度是$256 \times 256 \times 96$。然后进行volume rendering,得到2D feature image。feature image比RGB image包含更多的信息,能更好地进行下一步的refinement。
Super resolution: 为了更快地渲染高分辨率图像,体渲染只渲染较低分辨率的feature image,然后通过image-space convolutions来上采样得到高分辨率图像。
Dual discrimination: 用低分辨率的feature image得到raw image $I_{RGB}$,和超分得到的$I^+_{RGB}$拼接起来,得到6通道的图像;真实图像经过处理,得到它的blurred copy,也拼接起来得到6通道图像,然后输入判别器。
- neural rendering的渲染结果和下采样的真实图像的分布匹配。
- 低分辨率的图像和高分辨率的图像之间保持一致。
conditional strategy: StyleGAN2-ADA,允许camera pose作为条件输入,让生成器学习3D先验
Modeling pose-correlated attributes: 多数真实世界数据集(比如FFHQ)有bias,也就是说,camera pose和一些属性(比如表情)会有关联,导致视角不一致的问题。EG3D加入了pose conditioning。在训练时,pose conditioning能让生成器建模pose相关的bias,从而再现数据集中图像的分布。如果一直用渲染的camera pose作为条件,渲染出的图像会产生2D billboards angled towards the camera的问题。为了避免这个问题,在训练时以50%的概率将conditioning pose替换成随机的pose。
Next3D
Next3D: Generative Neural Texture Rasterization for 3D-Aware Head Avatars Paper
Overview
当下主流的3D GAN在虚拟人生成上,无法对面部表情、眨眼和凝视方向进行细粒度控制。结合3DMM来进行deformation的方法中,
- explicit: fine-grained 表情控制,但是不能处理头发和配饰的拓扑变化。
- implicit: 可以建模多种拓扑结构,但是无约束的deformation泛化能力有限。
key idea: Generative Texture-Rasterized Tri-planes,在参数化的mesh templates上学习Generative Neural Textures,然后光栅化得到tri-plane,再进行体渲染。这样就兼顾了mesh的显式deformation和隐式表达的灵活性。
Next3D:可以从非结构化2D图像中无监督地学习生成多视角一致的头像,可以实现全头旋转、面部表情、眨眼和凝视方向等精细控制。此外,Next3D还提供了强大的3D先验知识,可以用于下游任务如one-shot facial avatars和3D-aware stylization。
方法
为了对面部属性进行细粒度控制,我们通过 3D 可变形面部模型(3DMM)来显式或隐式地描述生成辐射场中的变形。显式方法提供细粒度的表达控制,但不能处理由头发和配饰引起的拓扑变化,而隐式方法可以模拟各种拓扑,但由于不受约束的变形场而导致泛化能力有限。
Generative texture-rasterized tri-planes: 用StyleGAN2 CNN generator生成 $256 \times 256 \times 32$ 的neural texture map $T$。每个像素对应一个特征向量。有了参数化的mesh和目标视角,就可以用 $T$ 光栅化,得到视角依赖的screen-space feature map。然后将rasterized textures 变成tri-plane $T_{uv}$
“efficient teeth synthesis module”,用于建模口腔内部的细节,并通过样式调制UNet来完成模板网格所遗漏的内部口腔特征,引入变形感知鉴别器来进一步规范变形精度,从而提高合成图像与预期变形2D投影之间的对齐度。