Learning a model of facial shape and expression from 4D scans (TOG 2017 FLAME)

Learning a model of facial shape and expression from 4D scans (TOG 2017 FLAME)

Abstract

本文提出了一个名为FLAME(Faces Learned with an Articulated Model and Expressions)的面部模型,旨在填补高端和低端3D人脸建模之间的差距。高端方法能够生成几乎无法与真实人类区分的 facial animation,但是 at the cost of extensive manual labor;而对于低端方法,从消费级深度传感器捕获的人脸依赖于3D人脸模型,没有充分的表现力捕获自然人脸形状和表情的变化。FLAME通过从数千个精确对齐的3D扫描中学习面部模型,结合线性形状空间、关节式的 jaw、neck 和 eyeball、姿态依赖的修正混合形状以及全局表情混合形状,旨在与现有图形学软件兼容,并易于拟合数据。模型从超过33,000个扫描中训练而而来,比FaceWarehouse模型和Basel Face Model更具表现力且维度更低。FLAME在拟合静态3D扫描和4D序列时显著更准确,并已公开提供用于研究目的。

Key Contributions

FLAME 主要提出了一个明显更加精确和具有强大表示能力的统计人头模型,能够明确地建模人头姿势和眼球的旋转,并且能够与现有的图形学软件兼容。

Method

FLAME 基于 SMPL 身体建模模型,将其迁移到人头的重建上面,并改善模型通过引入人脸姿势(下巴和眼睛的关节化)和人脸表情的表示。

Inspiration

  • 引入表情形变的动机:认为表情形变主要由于肌肉的神经激活引起,而不是关节式的姿势变化。

Model Formulation

  • 线性形状空间:FLAME 使用从 3800 个头部扫描中训练得到的线性形状空间来表示人脸的身份变化。这些扫描涵盖了广泛的年龄、性别和种族多样性。
  • 可动关节:模型包括可动的下巴、颈部和眼球,通过关节旋转实现姿态变化。颈部和下巴的姿态变化通过姿态依赖的修正混合形状(blendshapes)来建模,这些混合形状从 4D 面部序列数据中学习得到。
  • 表情混合形状:FLAME 引入了全局表情混合形状,用于捕捉面部的非刚性变形。这些表情混合形状从 4D 面部序列中学习,能够表示复杂的表情变化。
  • 顶点基模型:FLAME 是一个基于顶点的模型,具有较低的多边形数量(5023 个顶点),适合实时应用和与现有游戏引擎的兼容性。

FLAME 使用标准的基于顶点的 Linear Blend Skinning (LBS),并采用修正混合形状。

Vertex-based Linear Blend Skinning (LBS)

Vertex-based Linear Blend Skinning (LBS) 是一种用于计算机图形学中动画和建模的技术,主要用于处理网格(mesh)的变形和运动。它的核心思想是通过控制一组骨骼(bones)或关节(joints)的运动,来驱动网格顶点(vertices)的变形,从而实现自然的动画效果。LBS 是一种简单而高效的方法,广泛应用于游戏开发、动画制作和虚拟现实等领域。

核心概念

  1. 顶点(Vertices)
    顶点是构成网格的基本单元。每个顶点都有一个位置(通常是三维坐标),并且可以与一个或多个骨骼相关联。

  2. 骨骼(Bones)或关节(Joints)
    骨骼是用于控制网格变形的虚拟结构。它们通常以树状结构(称为骨骼树)组织,每个骨骼可以有多个子骨骼。关节是骨骼之间的连接点,用于定义骨骼的运动范围。

  3. 权重(Weights)
    每个顶点可以与一个或多个骨骼相关联,并且每个关联都有一个权重值。权重决定了该骨骼对顶点变形的影响力。权重值通常在 0 到 1 之间,且一个顶点的所有权重之和为 1。

  4. 变形(Deformation)
    当骨骼运动时,与骨骼关联的顶点会根据权重进行变形。LBS 使用线性插值来计算顶点的新位置,从而实现平滑的变形效果。

LBS 的工作原理

LBS 的核心是通过线性插值计算顶点的新位置。具体步骤如下:

  1. 定义骨骼和关节
    首先,定义一组骨骼和关节,形成一个骨骼树。每个骨骼的位置和旋转可以通过动画控制。

  2. 权重分配
    为每个顶点分配权重,表示该顶点与骨骼的关联程度。权重可以通过手动设置、自动计算或基于距离的方法生成。

  3. 计算顶点变形
    当骨骼运动时,每个顶点的新位置可以通过以下公式计算:
    $$
    v_{new} = \sum (w_i * M_i * v)
    $$

其中:

  • $v$ 是顶点的初始位置。
  • $w_i$ 是顶点与第 $i$ 个骨骼的权重。
  • $M_i$ 是第 $i$ 个骨骼的变换矩阵(包括平移、旋转和缩放)。
  • $v_{new}$ 是顶点的新位置。
  1. 线性插值
    通过线性插值将多个骨骼对顶点的影响结合起来,从而实现平滑的变形效果。

优点

  1. 简单高效
    LBS 的计算过程简单,适合实时应用,如游戏开发和虚拟现实。

  2. 易于实现
    LBS 的算法容易理解和实现,且与现有的图形引擎兼容。

  3. 灵活性
    可以通过调整骨骼运动和权重分配来实现各种复杂的动画效果。

缺点

  1. 线性限制
    LBS 是一种线性方法,可能无法完全捕捉复杂的非线性变形(如肌肉伸缩或皮肤褶皱)。

  2. 权重分配的挑战
    权重分配需要仔细设计,否则可能导致变形不自然(如顶点“穿透”或“拉伸”)。

  3. 关节处的变形问题
    在关节处,LBS 可能会产生不自然的变形,需要额外的修正方法(如修正混合形状)。

应用

LBS 广泛应用于以下领域:

  1. 游戏开发:用于角色动画和变形。
  2. 动画制作:用于生成复杂的角色动作。
  3. 虚拟现实:用于实时交互中的角色和物体变形。

与 FLAME 的关系

在 FLAME 模型中,LBS 被用于实现颈部、下巴和眼球的运动。通过定义骨骼和关节,FLAME 能够以自然的方式模拟头部的旋转、下巴的开合和眼球的转动。同时,FLAME 还引入了修正混合形状(corrective blendshapes),以解决 LBS 在关节处可能产生的变形问题,从而实现更逼真的动画效果。

FLAME 被定义为一个函数,可以表示为

其中,各自的意义如下所示:

pose vector $\vec{\theta}\in\mathcal{R}^{|\vec{\theta}|}$ 包含有 $K+1$ 个旋转向量,并采用的轴角表示。

Learning a model of facial shape and expression from 4D scans (TOG 2017 FLAME)

https://lzhms.github.io/readings/FLAME/

Author

Zhihao Li

Posted on

2025-02-19

Updated on

2025-03-09

Licensed under


Comments