论文阅读_MeshAnything
MeshAnything: Artist-Created Mesh Generation with Autoregressive Transformers
基本信息
| 项目 | 内容 |
|---|---|
| 论文标题 | MeshAnything: Artist-Created Mesh Generation with Autoregressive Transformers |
| 作者 | Yiwen Chen, Tong He, Di Huang, Weteai Ye, Sijin Chen, Jiaxiang Tang, Xin Chen, Zhongang Cai, Lei Yang, Gang Yu, Guosheng Lin, Chi Zhang |
| 作者单位 | 1. S-Lab, Nanyang Technological University; 2. Shanghai AI Lab; 3. Fudan University; 4. Peking University; 5. University of Chinese Academy of Sciences; 6. SenseTime Research; 7. Stepfun; 8. Westlake University |
| 时间 | 2024 |
| 发表会议/期刊 | arXiv preprint |
方法概览
| 特点 | 文章性质 |
|---|---|
| 输入 | 点云(从任何3D表示转换而来,如NeRF、Gaussian Splatting、体素等) |
| 输出 | 艺术家创建的三角网格(Artist-Created Mesh,几何结构高效,面数少) |
| 所属领域 | 3D形状条件生成、网格生成 |
摘要
MeshAnything 旨在解决当前自动生成的3D资产无法替代人工创建资产的一个关键原因:现有方法无法将这些3D资产转换为艺术家创建的网格(Artist-Created Meshes, AMs)。现有网格提取方法(如Marching Cubes)以重建方式生成密集网格,忽略了几何特征,导致效率低下、后处理复杂且表示质量低。MeshAnything 首次将网格提取视为一个生成问题,提出了形状条件AM生成的新范式。模型基于VQ-VAE和仅解码器Transformer构建,能够从任意3D表示生成与指定形状对齐的、面数少数百倍的AMs,显著提升了存储、渲染和模拟效率,同时达到与先前方法相当的精度。
引言:出发点与动机
近年来,3D重建、生成和扫描技术可以自动生成质量媲美手工制作的3D资产,有望替代3D产业(游戏、电影、元宇宙)中的人工建模,大幅降低时间和人力成本。然而,这一潜力并未实现,因为当前3D产业主要依赖基于网格的管线(效率高、可控性好),而自动生成3D资产的方法通常使用其他3D表示(如NeRF、Gaussian Splatting)以达到最佳效果。因此,需要将其他3D表示转换为网格。
传统的网格提取方法(如Marching Cubes)以重建方式提取网格,依赖密集的面片来逼近形状,完全忽略了物体的几何特征。这导致三个主要问题:1) 转换后的网格面片数量比AMs多几个数量级,导致存储、渲染和模拟效率低下;2) 混乱低效的拓扑结构使得后处理和下游任务复杂化,增加了艺术家优化的难度;3) 无法有效表示锐利边缘和平坦表面,导致过平滑和凹凸伪影。
因此,MeshAnything 的出发点在于:改变思路,将网格提取从重建问题转变为生成问题,即教会模型根据给定的3D形状,生成在形状和拓扑质量上都模仿人类艺术家的AMs。这种形状条件AM生成的新范式,从根本上避免了上述问题,使生成结果能够无缝集成到3D产业管线中。
创新点
- 提出形状条件艺术家创建网格生成新范式:首次将网格提取视为生成问题,目标是学习条件分布 $$p(\mathcal{M}|\mathcal{S})$$,其中 $$\mathcal{M}$$ 是AM,$$\mathcal{S}$$ 是表示目标形状的条件(如点云)。这避免了同时学习复杂3D形状分布和AM拓扑分布的困难,使模型更易训练,且能与各种3D生产管线(重建、生成、扫描)结合,提升其产业应用价值。
- 设计域对齐的形状条件策略:为训练准备配对数据(AM和形状条件 $$\mathcal{S}$$ )时,没有直接从AM表面采样高质量点云,而是先通过Marching Cubes从AM提取一个粗糙网格,再从中采样点云作为 $$\mathcal{S}$$ 。这缩小了训练(来自高质量AM)与推理(来自自动生成的不完美3D资产)之间形状条件的域差距,提升了模型泛化能力。
- 引入抗噪声解码器:观察到VQ-VAE解码器仅在编码器生成的完美token序列上训练,与Transformer可能生成的不完美token序列存在域差距。因此,在VQ-VAE训练后,将形状条件作为辅助信息注入解码器,并用添加了随机Gumbel噪声的token序列对解码器进行微调,使其对低质量token序列具有鲁棒性,从而提升最终网格生成质量。
- 基于纯Transformer的VQ-VAE编码器-解码器:与MeshGPT使用图卷积网络和ResNet不同,MeshAnything的VQ-VAE编码器和解码器均采用结构相同的Transformer,增强了模型的处理能力。
- 利用多模态大语言模型思想注入形状条件:受MLLM启发,使用预训练点云编码器将形状条件(点云)编码为特征,并投影到网格token空间,作为前缀token序列输入给仅解码器Transformer,实现有效的形状条件控制。
网络架构
MeshAnything 的整体框架包含两个核心组件:
- VQ-VAE(含抗噪声解码器):用于学习网格的离散词汇表。它将输入的三角网格序列编码为特征,量化后通过解码器重建网格。在第二阶段,解码器被微调为抗噪声解码器,接收形状条件以提升鲁棒性。
- 形状条件自回归Transformer:一个仅解码器的Transformer模型。它将点云编码器提取的形状条件token序列与VQ-VAE编码的网格token序列拼接,以自回归方式预测下一个网格token,实现形状条件的网格生成。
特征提取
- 形状条件特征提取:使用一个预训练的点云编码器(来自Zhao et al., 2024)处理输入的点云(及其法向),输出一个固定长度的token序列(257个token),其中包含形状信息和语义信息。通过一个线性投影层将其投影到与网格token相同的潜在空间。
- 网格特征提取与重建:VQ-VAE的编码器(Transformer结构)将输入的网格面序列(每个面由三个顶点坐标表示)编码为特征向量序列,然后通过残差向量量化映射到码本中的离散token。解码器(同样是Transformer结构)根据这些token(或Transformer生成的token)预测每个顶点的坐标对数,从而重建网格。
三维模型细节
MeshAnything 生成几何三角网格,重点关注拓扑结构的高效性和几何特征的保真度(如锐利边缘、平坦表面)。生成的网格面数通常比传统方法(如Marching Cubes)少数百倍,更接近人工建模的简洁风格。论文中的可视化结果显示,其网格在保持形状精度的同时,具有更清晰、更合理的拓扑结构。论文未强调生成带纹理贴图的网格,输出主要是几何网格。
三维模型生成步骤
- 形状条件准备:从任意3D表示(如NeRF、Gaussian、体素场)通过Marching Cubes提取粗糙网格或直接采样,得到点云(带法向)作为形状条件 $$\mathcal{S}$$。
- 形状条件编码:点云 $$\mathcal{S}$$ 通过预训练的点云编码器 $$\mathcal{P}$$ 编码为形状token序列。
- 自回归网格生成:形状token序列被输入形状条件自回归Transformer。Transformer以自回归方式生成后续的网格token序列 $$\hat{\mathcal{T}}$$。
- 网格解码:生成的网格token序列 $$\hat{\mathcal{T}}$$ 输入到抗噪声VQ-VAE解码器 $$D$$ 中,解码器结合形状条件信息,重建出最终的艺术家创建网格 $$\hat{\mathcal{M}}$$。
相关工作与比较
- 基于的工作/参考:
- MeshGPT:整体架构参考,使用VQ-VAE和自回归Transformer进行无条件网格生成。
- 多模态大语言模型:形状条件注入方式的灵感来源。
- 传统网格提取方法:如Marching Cubes,作为问题背景和对比基线。
- 比较的基线方法:
- 网格生成方法:PolyGen(无条件),MeshGPT(无条件)。为了公平,在相同数据集上重新训练。
- 网格提取方法:Marching Cubes,FlexiCubes(当前最优),Shape as Points(点云到网格)。
- 结合重新网格化:将上述网格提取结果用Blender Remesh进行拓扑简化后比较。
- 评价指标:
- 用户研究:人工从形状质量和拓扑质量两方面投票。
- 网格生成质量:COV(覆盖率)、MMD(最小匹配距离)、1-NNA(1-最近邻准确率)、FID(Fréchet Inception距离)、KID(核Inception距离)。
- 网格提取/形状对齐质量:CD(倒角距离)、ECD(边缘倒角距离)、NC(法向一致性)、顶点数(#V)、面数(#F)及其与真值的比率。
Loss 函数
- VQ-VAE训练损失:使用标准的VQ-VAE损失,包括对解码器预测的顶点坐标对数的交叉熵损失,以及量化过程的承诺损失。
- 抗噪声解码器微调损失:在微调阶段,解码器使用相同的顶点坐标交叉熵损失,但输入的是添加了Gumbel噪声的token序列,并且解码器额外接收形状条件作为输入。
- 自回归Transformer训练损失:使用标准的下一个token预测的交叉熵损失。序列由形状条件token、< bos > token、网格token和< eos > token构成。
数据集
- 训练集:从 Objaverse 和 ShapeNet 中筛选出的高质量艺术家创建网格(AMs)。筛选标准包括面数少于800,并手动去除低质量网格。最终数据集包含51k(Objaverse)+ 5k(ShapeNet)= 56k个网格。随机选取90%用于训练。
- 训练输入:从每个AM通过“粗糙化”流程得到的点云(带法向)作为形状条件 $$\mathcal{S}$$。
- 训练输出:对应的AM网格 $$\mathcal{M}$$,被处理为有序的面序列。
- 测试集:剩余10%的数据作为评估数据集。
- 测试输入:从测试集网格通过相同“粗糙化”流程得到的点云,或从其他3D生成/重建方法结果中采样的点云。
- 测试输出:MeshAnything生成的网格。评估时与原始AM(或生成目标)的网格进行比较。
消融实验
- 抗噪声解码器的有效性:
- 实验设置:对比使用普通VQ-VAE解码器(W/O NR)和使用抗噪声解码器(W/ NR)在面临不同噪声水平(0.0, 0.1, 0.5, 1.0)的token序列时的网格重建性能(CD, ECD, NC)。
- 结果:抗噪声解码器在所有噪声水平下都取得了更好的重建指标(表3)。在推理时(使用Transformer生成token),抗噪声解码器也带来了更好的形状对齐质量(表4)。
- 形状条件策略的有效性:
- 通过比较无条件、图像条件和形状条件三种设置下Transformer训练和验证的困惑度(PPL),证明形状条件设置的学习负担最低,避免了学习复杂3D形状分布(图3)。
- 通过用户研究对比重新训练的MeshGPT(无条件)和MeshAnything(形状条件),后者在形状和拓扑质量上获得更多投票(表1左),证明形状条件设定的优势。
- 输入点云质量的鲁棒性:
- 实验设置:在输入点云坐标和法向上添加不同尺度的高斯噪声(0.005, 0.02, 0.05),以及使用生成模型(Rodin)产生的点云作为输入,测试MeshAnything的生成质量。
- 结果:在低到中等噪声水平下,性能下降不显著;只有在较大噪声下才有明显下降。模型能够很好地处理来自生成模型的点云,展示了与3D生成管线集成的能力(表6)。


