CUBE: Representing 3D Faces with Learnable B-Spline Volumes¶
会议: CVPR 2026 Highlight
arXiv: 2604.12894
代码: 无
领域: 3D视觉 / 人脸重建
关键词: B样条体, 人脸表示, 扫描配准, 局部控制, 几何编辑
一句话总结¶
提出 CUBE(Control-based Unified B-spline Encoding),一种结合 B 样条体和可学习高维控制特征的混合几何表示,通过两阶段解码(B 样条基插值 + 轻量 MLP 残差)实现可编辑、高精度的 3D 人脸重建和扫描配准。
研究背景与动机¶
领域现状:3D 人脸表示主要有三种范式:3D 形变模型(3DMM)提供压缩、解缠的线性空间但细节有限;非线性神经模型提升灵活性但缺乏可解释性和局部控制;隐式表示提供高细节但缺乏语义对应且需要昂贵的等值面提取。
现有痛点:3DMM 受限于固定拓扑和低维参数空间,无法捕获个体化高频细节。神经模型缺乏局部编辑能力。隐式模型与标准图形管线不兼容。
核心矛盾:表示的局部可控性、几何表达力和计算效率三者难以兼顾。
本文目标:设计一种兼具 B 样条局部控制特性和神经网络表达力的混合人脸表示。
切入角度:将传统 B 样条体的 3D 控制点替换为高维可学习控制特征,用轻量 MLP 补充高频细节。
核心 idea:高维控制特征格(如 8×8×8)定义连续的参数域到欧式空间映射,B 样条基提供局部支持属性实现局部编辑。
方法详解¶
整体框架¶
CUBE 想解决的核心问题是:3D 人脸表示要么像 3DMM 那样可控但细节差,要么像隐式模型那样细节足却没法局部编辑、也接不进图形管线。它的思路是把这两边的优点缝在一起——用一个稀疏的控制特征格当作可编辑的"骨架",再用一个轻量网络往上补细节。
整条管线沿着一个固定模板网格走。模板上每个顶点都带一个固定的参数坐标 \((u,v,w)\);推理时,先用 B 样条基在这个坐标处把周围若干个控制特征加权混合,得到一个高维特征向量;这个向量的前三维直接读作顶点的基础位置(粗糙形状),整个向量再喂给一个 MLP 预测一个残差位移(高频细节)。把模板所有顶点都这么算一遍,就得到一张密集、语义对应的 3D 人脸表面。控制特征格本身则由一个 Transformer 编码器从扫描点云或单目图像回归出来。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}}%%
flowchart TD
A["输入:头部扫描点云 / 单目图像"] --> B["Transformer 编码器<br/>一次前馈回归出整个控制特征格"]
subgraph G1["高维控制特征格"]
direction TB
C["8×8×8 格点,每点 32 维可学习特征"] --> D["B 样条基插值:按模板顶点坐标 (u,v,w)<br/>局部加权混合,得 32 维特征向量"]
end
B --> G1
subgraph G2["两阶段解码"]
direction TB
E["前 3 维 → 基础顶点位置(B 样条全局光滑)"]
F["完整特征 → MLP 残差位移(高频细节)"]
end
G1 --> G2
G2 --> H["输出:密集、语义对应的 3D 人脸网格"]
关键设计¶
1. 高维控制特征格:让稀疏控制点也能表达复杂人脸
传统 B 样条体在每个格点上放一个 3D 控制点,混合出来的就是 3D 坐标——这对 CAD 曲面够用,但要用 \(8^3\) 这种量级的稀疏格点去表达人脸的褶皱、五官细节就力不从心。CUBE 把每个控制点换成一个高维(如 32 维)的可学习特征向量。查询某个参数坐标时,B 样条基只在邻域的少数控制特征间做加权混合 \(f(u,v,w)=\sum_{i,j,k} B_i(u)B_j(v)B_k(w)\,\mathbf{c}_{ijk}\),产生一个高维向量而非单纯的坐标。因为 B 样条基有局部支持(只有附近的几个控制点非零),改动某一个控制特征只会影响一小块区域——这正是局部编辑能力的来源。维度抬高之后,同样数量的格点能携带的形状信息远比 3 维坐标丰富,消融里把高维特征换回 3D 控制点,误差从 2.35 涨到 2.78。
2. 两阶段解码:B 样条管全局、MLP 补高频
光有平滑的 B 样条还不够,因为基函数天生平滑,表达不了锐利的高频几何。CUBE 把解码拆成两段衔接的步骤:混合得到的高维特征,前三维 \(f_{1:3}\) 直接当作基础网格顶点位置 \(\mathbf{p}_{\text{base}}\),给出一个连续光滑的全局形状;完整特征 \(f\) 再送进一个轻量 MLP \(g\),预测相对基础形状的残差位移,最终顶点 \(\mathbf{p}=\mathbf{p}_{\text{base}}+g(f)\)。这样全局轮廓由 B 样条保证平滑可控,高频褶皱由 MLP 负责。关键是 MLP 的输入来自局部混合的特征,所以补细节的同时没有破坏局部支持——局部编辑性质依然成立。消融显示去掉 MLP 残差后误差从 1.89 跳到 2.35,是单个模块里贡献最大的一项。
3. 基于 Transformer 的编码器:把扫描或图像直接回归成控制格
有了 CUBE 这套解码表示,还需要一个前端把真实输入变成控制特征格,才能做扫描配准和单目重建。CUBE 训练一个 Transformer 编码器,把非结构化的 3D 头部扫描(或单目图像)映射成整个控制特征格。这条路之所以走得通,是因为 CUBE 的参数空间本身就很紧凑——\(8^3\times 32\approx 16\text{K}\) 个参数,规模适中、结构规整,适合直接回归,从而实现一次前馈就完成配准/重建,不必像隐式模型那样逐点优化再 Marching Cubes 提网格。
一个例子:把一次扫描配准走一遍¶
拿到一张非结构化头部扫描点云,Transformer 编码器先把它回归成一个 \(8\times8\times8\)、每格 32 维的控制特征格。随后遍历模板网格的每个顶点,比如某个鼻翼上的顶点,取它的参数坐标,用 B 样条基只混合周围那几个控制特征,得到 32 维向量;前 3 维落成鼻翼的粗略位置,整段向量过 MLP 又加上一个小位移,把鼻翼的褶皱顶出来。所有顶点算完,输出就是一张和模板语义一一对应的配准网格。这时如果想把鼻子局部改大,只需调那一小簇控制特征,其余面部纹丝不动——这就是局部支持带来的可编辑性。
损失函数 / 训练策略¶
顶点到顶点 L2 损失 + 法线一致性损失 + 拉普拉斯平滑正则化。编码器和 CUBE 解码器端到端训练。
实验关键数据¶
主实验¶
| 方法 | 类型 | 扫描配准误差↓ | 对应精度↑ |
|---|---|---|---|
| BPS | 基点集 | 2.85 | 82.3% |
| Shape-my-face | PointNet | 2.42 | 85.1% |
| ImFace | 隐式 | 2.15 | 87.5% |
| CUBE | B样条 | 1.89 | 91.2% |
消融实验¶
| 配置 | 扫描误差↓ | 说明 |
|---|---|---|
| 完整 CUBE | 1.89 | 高维特征 + MLP 残差 |
| 无 MLP 残差 | 2.35 | 仅 B 样条基 |
| 3D 控制点 (传统) | 2.78 | 无高维特征 |
| 格点 16³ | 1.85 | 更多控制点 |
| 格点 4³ | 2.45 | 较少控制点 |
关键发现¶
- MLP 残差贡献显著(去掉后误差增加 24%),说明高频细节建模重要
- 高维控制特征 vs 3D 控制点:误差从 2.78 降到 2.35(降 15%),证明高维特征增强了表达力
- 8³ 格点已足够:增加到 16³ 仅微小提升
亮点与洞察¶
- 将 NURBS 这一 CAD 经典表示引入人脸建模并用可学习特征增强表达力,是一个优雅的混合设计
- 局部支持特性的保留使得交互式编辑成为可能:通过交换或修改单个控制特征实现局部人脸编辑
- 两阶段解码(B 样条粗糙 + MLP 精细)的思路可推广到其他几何表示
局限与展望¶
- 仅针对人脸,头发和配饰未建模
- 与隐式表示相比在极端表情下的细节可能不足
- 格点大小的选择需要权衡表达力和效率
- 可扩展到全身或手部等其他部位
相关工作与启发¶
- vs 3DMM (FLAME): 3DMM 用线性 PCA 基,CUBE 用 B 样条体 + MLP,表达力更强且保持局部可控
- vs ImFace: ImFace 是隐式 SDF,需要 Marching Cubes 提取网格;CUBE 通过模板查询直接输出网格
评分¶
- 新颖性: ⭐⭐⭐⭐ B 样条体 + 高维特征的混合表示有创意
- 实验充分度: ⭐⭐⭐⭐ 扫描配准和图像重建两个应用的验证
- 写作质量: ⭐⭐⭐⭐ 表示设计描述清晰
- 价值: ⭐⭐⭐⭐ 对可编辑人脸建模有实际价值