论文解读(全头皮重建方向):3DCMM
从面部到完整头部:3DCMM 的技术原理解析
引言
在计算机图形学和人体工学领域,3D 头部模型的需求日益增加。无论是虚拟化身的创建还是头盔的个性化设计,仅有面部模型往往不足以满足要求,完整的头部几何(包括头皮)才是关键。传统的 3D 可变形模型(3DMM)多集中于面部重建,头皮区域因数据稀缺和技术限制常被忽略。2022 年发表于 VRCAI’22 的论文《3DCMM: 3D Comprehensive Morphable Models for Accurate Head Completion》提出了一种新方法,利用 2528 个真实头部扫描数据,构建了 3D 综合可变形模型(3DCMM),并实现从 2D 面部图像或 3D 扫描到完整头部的重建。
本文将详细解析 3DCMM 的技术原理,重点放在其数学基础和推导过程上,力求清晰且严谨。
背景
现有的 3DMM(如 Basel Face Model、FaceScape)擅长面部细节的重建,但对头皮区域的支持有限。少数头部模型(如 FLAME、LYHM)虽然尝试覆盖全头,但受限于样本数量(数百至一千多)、分辨率(顶点数较低)或种族单一性(多为白人数据),难以满足高精度需求。此外,头皮数据采集因头发遮挡而困难重重。
论文的目标是从面部输入(2D 图像或 3D 扫描)生成完整头部,方法是先重建面部,再预测头皮。为此,作者引入了 3DCMM,分成面部模型(3DMFM)和头皮模型(3DMSM),并用大规模真实数据驱动其构建和应用。
核心原理
1. 数据基础
3DCMM 的基础是 2528 个中国人群的 3D 头部扫描数据,涵盖年龄 3-84 岁,包括成人(1763 人)和儿童(765 人)。这些数据使用高精度扫描仪(如 Artec Eva,精度 0.1 毫米)采集,并通过非刚性迭代最近点算法(NICP)对齐到统一模板,确保顶点对应一致。
2. 主成分分析(PCA)构建 3DCMM
PCA 的基本过程
每个头部扫描是一个高维向量,例如面部模型有 53,215 个顶点(159,645 维,x, y, z 坐标),直接处理这些数据计算量巨大。PCA 通过降维提取主要形状变化模式,将头部表示为参数化模型。
-
数据矩阵与中心化
- 设数据矩阵 X ∈ R N × D X \in \mathbb{R}^{N \times D} X∈RN×D, N = 2528 N = 2528 N=2528(样本数), D = 159 , 645 D = 159,645 D=159,645(维度)。
- 计算平均形状:
S ‾ = 1 N ∑ i = 1 N X i \overline{S} = \frac{1}{N} \sum_{i=1}^N X_i S=N1i=1∑NXi
其中 X i X_i Xi 是第 i i i 个头部的顶点向量。 - 中心化数据:
X centered = X − 1 S ‾ T X_{\text{centered}} = X - \mathbf{1} \overline{S}^T Xcentered=X−1ST
1 \mathbf{1} 1 是全 1 向量, X centered X_{\text{centered}} Xcentered 表示每个样本的偏差。
-
协方差矩阵
- 计算协方差矩阵:
C = 1 N − 1 X centered T X centered C = \frac{1}{N-1} X_{\text{centered}}^T X_{\text{centered}} C=N−11XcenteredTXcentered
C ∈ R D × D C \in \mathbb{R}^{D \times D} C∈RD×D,是一个对称矩阵,反映顶点坐标间的相关性。 - 由于
D
D
D 极大(159,645),直接计算
C
C
C 成本高昂。实际中,可用奇异值分解(SVD)优化:
- 对
X
centered
X_{\text{centered}}
Xcentered 进行 SVD:
X centered = U Σ V T X_{\text{centered}} = U \Sigma V^T Xcentered=UΣVT- U ∈ R N × N U \in \mathbb{R}^{N \times N} U∈RN×N, Σ ∈ R N × D \Sigma \in \mathbb{R}^{N \times D} Σ∈RN×D, V ∈ R D × D V \in \mathbb{R}^{D \times D} V∈RD×D。
- V V V 的列是主成分, Σ 2 / ( N − 1 ) \Sigma^2 / (N-1) Σ2/(N−1) 对应特征值。
- 协方差矩阵可表示为:
C = 1 N − 1 V Σ 2 V T C = \frac{1}{N-1} V \Sigma^2 V^T C=N−11VΣ2VT
- 对
X
centered
X_{\text{centered}}
Xcentered 进行 SVD:
- 计算协方差矩阵:
-
特征分解与主成分
- 对
C
C
C 进行特征分解(或直接用 SVD 结果):
C = V Λ V T C = V \Lambda V^T C=VΛVT- Λ = diag ( λ 1 , λ 2 , … , λ D ) \Lambda = \text{diag}(\lambda_1, \lambda_2, \ldots, \lambda_D) Λ=diag(λ1,λ2,…,λD), λ i \lambda_i λi 是特征值,按降序排列。
- V = [ v 1 , v 2 , … , v D ] V = [v_1, v_2, \ldots, v_D] V=[v1,v2,…,vD], v i v_i vi 是主成分向量。
- 取前 m m m 个主成分(论文中 m = 220 m = 220 m=220,解释 98% 方差),组成矩阵 B = [ v 1 , v 2 , … , v m ] B = [v_1, v_2, \ldots, v_m] B=[v1,v2,…,vm]。
- 对
C
C
C 进行特征分解(或直接用 SVD 结果):
-
形状表示
- 每个头部可表示为:
S = S ‾ + B α S = \overline{S} + B \alpha S=S+Bα- α ∈ R m \alpha \in \mathbb{R}^m α∈Rm 是系数向量, B ∈ R D × m B \in \mathbb{R}^{D \times m} B∈RD×m。
- 系数计算:
α = B T ( S − S ‾ ) \alpha = B^T (S - \overline{S}) α=BT(S−S)
因为 B B B 的列正交( B T B = I B^T B = I BTB=I),投影直接得出 α \alpha α。
- 每个头部可表示为:
3DCMM 的子模型
- 3DMFM(面部):顶点数 53,215,
D
f
=
159
,
645
D_f = 159,645
Df=159,645:
S f = S f ‾ + B f s h p α f S_f = \overline{S_f} + B_{fshp} \alpha_f Sf=Sf+Bfshpαf - 3DMSM(头皮):顶点数 24,729,
D
s
=
74
,
187
D_s = 74,187
Ds=74,187:
S s = S s ‾ + B s s h p α s S_s = \overline{S_s} + B_{sshp} \alpha_s Ss=Ss+Bsshpαs
3. 重建流程
步骤 1:面部重建
- 输入:2D 图像或 3D 扫描。
- 方法:
- 2D 图像通过 CNN(如 Deep3DFace)预测 α f \alpha_f αf。
- 3D 扫描通过 PointNet 编码为 α f \alpha_f αf。
- 输出: S f S_f Sf。
步骤 2:头皮预测与合并
-
转换矩阵计算
- 目标:从 α f \alpha_f αf 预测 α s \alpha_s αs。
- 数据:2528 对面部-头皮系数对,记为 M f ∈ R m f × N M_f \in \mathbb{R}^{m_f \times N} Mf∈Rmf×N(面部系数矩阵, m f = 220 m_f = 220 mf=220), M s ∈ R m s × N M_s \in \mathbb{R}^{m_s \times N} Ms∈Rms×N(头皮系数矩阵, m s = 220 m_s = 220 ms=220)。
- 多项式回归:
- 扩展 M f M_f Mf 为 [ M f , M f 2 , … , M f n ] [M_f, M_f^2, \ldots, M_f^n] [Mf,Mf2,…,Mfn],维度变为 ( m f ⋅ n ) × N (m_f \cdot n) \times N (mf⋅n)×N。
- 求转换矩阵
C
f
,
s
C_{f,s}
Cf,s:
C f , s = M s M f T ( M f M f T ) − 1 C_{f,s} = M_s M_f^T (M_f M_f^T)^{-1} Cf,s=MsMfT(MfMfT)−1-
M
f
M
f
T
∈
R
m
f
⋅
n
×
m
f
⋅
n
M_f M_f^T \in \mathbb{R}^{m_f \cdot n \times m_f \cdot n}
MfMfT∈Rmf⋅n×mf⋅n 是 Gram 矩阵,若不可逆,可加正则化项
ϵ
I
\epsilon I
ϵI:
C f , s = M s M f T ( M f M f T + ϵ I ) − 1 C_{f,s} = M_s M_f^T (M_f M_f^T + \epsilon I)^{-1} Cf,s=MsMfT(MfMfT+ϵI)−1 - 论文实验表明 n = 1 n = 1 n=1(线性回归)最佳。
-
M
f
M
f
T
∈
R
m
f
⋅
n
×
m
f
⋅
n
M_f M_f^T \in \mathbb{R}^{m_f \cdot n \times m_f \cdot n}
MfMfT∈Rmf⋅n×mf⋅n 是 Gram 矩阵,若不可逆,可加正则化项
ϵ
I
\epsilon I
ϵI:
- 预测头皮:
α s = C f , s [ α f , α f 2 , … , α f n ] \alpha_s = C_{f,s} [\alpha_f, \alpha_f^2, \ldots, \alpha_f^n] αs=Cf,s[αf,αf2,…,αfn]
S s = S s ‾ + B s s h p α s S_s = \overline{S_s} + B_{sshp} \alpha_s Ss=Ss+Bsshpαs
-
合并
- 使用权重分布图(鼻尖为坐标原点)平滑过渡:
S med i = ( 1 − W i ) S s i + W i ∑ k = 1 3 w i , k S f i , k S_{\text{med}}^i = (1 - W^i) S_s^i + W^i \sum_{k=1}^3 w^{i,k} S_f^{i,k} Smedi=(1−Wi)Ssi+Wik=1∑3wi,kSfi,k- W i W^i Wi 为顶点权重, w i , k w^{i,k} wi,k 为重心坐标权重。
- 使用权重分布图(鼻尖为坐标原点)平滑过渡:
实验结果
- 模型质量:3DMFM 重建误差 0.33 毫米,3DMSM 为 0.49 毫米,优于 BFM-2019(0.95 毫米)。
- 头皮预测:误差 2.04 毫米,优于拟合方法(3.23 毫米)。
- 应用:支持虚拟化身生成和头盔设计。
分析与展望
3DCMM 的优势在于真实数据支撑、独立头皮建模和参数化表示。其局限是数据集中于中国人群,未来可融入多种族样本(如 Headspace)提升普适性。
结语
3DCMM 通过 PCA 和回归,从面部重建到完整头部,提供了一种高效、精确的方法。其数学基础扎实,应用前景广阔,为后续研究奠定了基础。