FACE: A Face-based Autoregressive Representation for High-Fidelity and Efficient Mesh Generation¶
日期: 2026-03-02
arXiv: 2603.01515
代码: 即将开源
领域: 3D视觉 / 网格生成
关键词: mesh generation, autoregressive, face-level tokenization, VecSet encoder, latent diffusion
一句话总结¶
FACE 提出"一面一token"的自回归网格生成范式,将三角面片(而非顶点坐标)作为基本生成单元,序列长度缩短 9 倍、压缩比达到 0.11(较 SOTA 减半),同时在重建质量和单图生成mesh上达到最优。
研究背景与动机¶
- 领域现状:自回归模型在 3D mesh 生成中表现出色(MeshGPT、MeshXL),但它们将网格展平成顶点坐标序列来建模。一个三角面由 3 个顶点 × 3 个坐标 = 9 个 token 表示,一个几千面的 mesh 序列长度可达数万。
- 现有痛点 — 序列过长:自回归模型的计算量随序列长度平方增长,这导致:(a) 高精度 mesh(>4000 面)生成极其缓慢;(b) 训练困难:长序列带来梯度消失和注意力稀释;(c) 无法扩展到复杂几何
- 核心矛盾:现有方法在"错误的语义层级"上操作——顶点坐标是 mesh 的最低级元素,用 9 个 token 表示一个面片既冗余又破坏了面片内部三个顶点的整体关联性
- 切入角度:三角面片是 mesh 的基本构建单元(不是顶点),应该把每个面整体当作一个 token
- 核心 idea:"一面一token"——用 Autoregressive Autoencoder (ARAE) 将每个三角面片编码为一个 latent token,序列长度降 9 倍、压缩比 0.11
方法详解¶
整体框架¶
FACE 是一个两阶段框架:(1) 训练一个 Autoregressive Autoencoder (ARAE) 学习面级别的离散表示;(2) 在学到的 latent 空间上训练 latent diffusion model 做条件生成。
输入:3D mesh(三角面集合)→ 编码器压缩为 latent 序列(每面一个 token)→ 自回归解码器逐 token 预测重建 mesh。
关键设计¶
-
一面一Token 策略(One-Face-One-Token)
- 做什么:将每个三角面的 9 个数值(3 顶点 × 3 坐标)统一编码为单个离散 token
- 核心思路:面片先排序(按某种空间顺序),每个面的 9 维向量通过向量量化映射到码本中的一个 token。解码器接收 token 序列,自回归地预测下一个面 token,输出面的 9 维坐标
- 设计动机:直接操作在 mesh 的自然语义单元上。一个面就是一个几何"词",9 倍压缩是数学必然结果
-
VecSet 编码器
- 做什么:将面片集合编码为紧凑的 latent 表示,最大化重建质量
- 核心思路:利用集合编码器(不依赖顶点排列顺序)提取面片的全局几何特征,每个面产生一个 latent 向量,再做向量量化生成离散 token
- 设计动机:面片之间有复杂的拓扑关系(相邻面共享顶点/边),VecSet 编码器能捕捉这些关系
-
Latent Diffusion Model(用于条件生成)
- 做什么:在 ARAE 学到的 latent 空间中训练扩散模型,实现单图→mesh 生成
- 核心思路:编码器将训练 mesh 压缩为 latent 序列,扩散模型学习生成这些 latent,再由解码器重建为 mesh
- 设计动机:分离表示学习和生成建模,latent 空间更紧凑、扩散更高效
序列排列与量化¶
- 面片需要排序才能自回归建模。FACE 使用空间填充曲线(如 Z-order/Hilbert curve)将 3D 面片映射为 1D 序列
- 向量量化使用 codebook 将连续面向量离散化,压缩比 0.11 是所有面级因素(9 倍 token 压缩 × 量化信息压缩)的综合结果
实验关键数据¶
主实验 — Mesh 重建质量¶
| 方法 | 压缩比 | 重建保真度 | 序列长度(相对) |
|---|---|---|---|
| MeshGPT | ~1.0 | 中等 | 9× |
| MeshXL | ~0.22 | 较好 | 约 2× |
| FACE | 0.11 | 最优 | 1× |
FACE 的压缩比 0.11 是此前最优(0.22)的一半,且重建质量不降反升。
消融实验¶
| 配置 | 效果 | 说明 |
|---|---|---|
| 顶点级 token(baseline) | 序列长 9× | 计算量巨大 |
| 面级 token + 简单编码器 | 序列短但重建差 | 需要强编码器搭配 |
| 面级 token + VecSet 编码器 | 最优 | FACE 完整方案 |
| 不同码本大小 | 码本过小重建差 | 需足够表达力 |
关键发现¶
- 压缩比从 0.22 降到 0.11(降半),序列长度直接减少 9 倍,使得生成 4000+ 面的 mesh 变得可行
- 面级建模保持了面片内部三个顶点的整体性,避免了顶点级建模中可能出现的"孤立顶点"或"非流形"问题
- VecSet 编码器是质量保证的关键——简单 MLP 编码面向量无法达到同等重建精度
- Latent diffusion 生成的 mesh 在几何保真度上接近直接自回归生成,但推理更快
亮点与洞察¶
- 语义层级的正确选择:不是在顶点或体素层面建模,而是选择面片——这是 mesh 的自然语义单元。这个观察简单但强大,9 倍压缩是免费午餐
- ARAE 框架的通用性:将"压缩表示学习"与"自回归序列建模"解耦的思路可推广到其他结构化数据(如分子、电路)
- 极简设计哲学:没有复杂的多阶段训练或辅助任务,核心创新就是"改变 token 定义"
局限性 / 可改进方向¶
- 面片排序策略(空间填充曲线)可能不是最优的——某些拓扑结构下相邻面可能在序列中距离很远
- 当前只处理三角面片,未扩展到四边面或多边形网格
- 生成 mesh 的拓扑质量(流形性、水密性)未充分讨论
- 对超高面数 mesh(>10K 面)的扩展性有待验证
相关工作与启发¶
- vs MeshGPT: MeshGPT 在顶点级做自回归,序列是 FACE 的 9 倍。FACE 的面级策略是对 MeshGPT 的直接改进
- vs MeshXL: MeshXL 通过更好的量化将压缩比做到 0.22,FACE 进一步从表示层面(面 vs 顶点)将压缩比推到 0.11
- vs 3D 扩散模型: 纯 3D 扩散(如 DiffMesh)不依赖序列化,但输出非结构化点云/隐式表面,无法直接生成 mesh
评分¶
- 新颖性: ⭐⭐⭐⭐ "一面一token"是巧妙的 representation 设计,但思想不复杂
- 实验充分度: ⭐⭐⭐⭐ 重建+生成+消融都有,但缺少用户研究和更多 baseline 对比
- 写作质量: ⭐⭐⭐⭐ 动机讲得清楚,"wrong semantic level"的论述有说服力
- 价值: ⭐⭐⭐⭐ 9 倍压缩对 3D 生成领域有实际工程价值,降低了高质量 mesh 生成的门槛