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产业管线中。

创新点

  1. 提出形状条件艺术家创建网格生成新范式:首次将网格提取视为生成问题,目标是学习条件分布 $$p(\mathcal{M}|\mathcal{S})$$,其中 $$\mathcal{M}$$ 是AM,$$\mathcal{S}$$ 是表示目标形状的条件(如点云)。这避免了同时学习复杂3D形状分布和AM拓扑分布的困难,使模型更易训练,且能与各种3D生产管线(重建、生成、扫描)结合,提升其产业应用价值。
  2. 设计域对齐的形状条件策略:为训练准备配对数据(AM和形状条件 $$\mathcal{S}$$ )时,没有直接从AM表面采样高质量点云,而是先通过Marching Cubes从AM提取一个粗糙网格,再从中采样点云作为 $$\mathcal{S}$$ 。这缩小了训练(来自高质量AM)与推理(来自自动生成的不完美3D资产)之间形状条件的域差距,提升了模型泛化能力。
  3. 引入抗噪声解码器:观察到VQ-VAE解码器仅在编码器生成的完美token序列上训练,与Transformer可能生成的不完美token序列存在域差距。因此,在VQ-VAE训练后,将形状条件作为辅助信息注入解码器,并用添加了随机Gumbel噪声的token序列对解码器进行微调,使其对低质量token序列具有鲁棒性,从而提升最终网格生成质量。
  4. 基于纯Transformer的VQ-VAE编码器-解码器:与MeshGPT使用图卷积网络和ResNet不同,MeshAnything的VQ-VAE编码器和解码器均采用结构相同的Transformer,增强了模型的处理能力。
  5. 利用多模态大语言模型思想注入形状条件:受MLLM启发,使用预训练点云编码器将形状条件(点云)编码为特征,并投影到网格token空间,作为前缀token序列输入给仅解码器Transformer,实现有效的形状条件控制。

网络架构

MeshAnything 的整体框架包含两个核心组件:

  1. VQ-VAE(含抗噪声解码器):用于学习网格的离散词汇表。它将输入的三角网格序列编码为特征,量化后通过解码器重建网格。在第二阶段,解码器被微调为抗噪声解码器,接收形状条件以提升鲁棒性。
  2. 形状条件自回归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)少数百倍,更接近人工建模的简洁风格。论文中的可视化结果显示,其网格在保持形状精度的同时,具有更清晰、更合理的拓扑结构。论文未强调生成带纹理贴图的网格,输出主要是几何网格。

三维模型生成步骤

  1. 形状条件准备:从任意3D表示(如NeRF、Gaussian、体素场)通过Marching Cubes提取粗糙网格或直接采样,得到点云(带法向)作为形状条件 $$\mathcal{S}$$。
  2. 形状条件编码:点云 $$\mathcal{S}$$ 通过预训练的点云编码器 $$\mathcal{P}$$ 编码为形状token序列。
  3. 自回归网格生成:形状token序列被输入形状条件自回归Transformer。Transformer以自回归方式生成后续的网格token序列 $$\hat{\mathcal{T}}$$。
  4. 网格解码:生成的网格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构成。

数据集

  • 训练集:从 ObjaverseShapeNet 中筛选出的高质量艺术家创建网格(AMs)。筛选标准包括面数少于800,并手动去除低质量网格。最终数据集包含51k(Objaverse)+ 5k(ShapeNet)= 56k个网格。随机选取90%用于训练。
    • 训练输入:从每个AM通过“粗糙化”流程得到的点云(带法向)作为形状条件 $$\mathcal{S}$$。
    • 训练输出:对应的AM网格 $$\mathcal{M}$$,被处理为有序的面序列。
  • 测试集:剩余10%的数据作为评估数据集。
    • 测试输入:从测试集网格通过相同“粗糙化”流程得到的点云,或从其他3D生成/重建方法结果中采样的点云。
    • 测试输出:MeshAnything生成的网格。评估时与原始AM(或生成目标)的网格进行比较。

消融实验

  1. 抗噪声解码器的有效性
    • 实验设置:对比使用普通VQ-VAE解码器(W/O NR)和使用抗噪声解码器(W/ NR)在面临不同噪声水平(0.0, 0.1, 0.5, 1.0)的token序列时的网格重建性能(CD, ECD, NC)。
    • 结果:抗噪声解码器在所有噪声水平下都取得了更好的重建指标(表3)。在推理时(使用Transformer生成token),抗噪声解码器也带来了更好的形状对齐质量(表4)。
  2. 形状条件策略的有效性
    • 通过比较无条件图像条件形状条件三种设置下Transformer训练和验证的困惑度(PPL),证明形状条件设置的学习负担最低,避免了学习复杂3D形状分布(图3)。
    • 通过用户研究对比重新训练的MeshGPT(无条件)和MeshAnything(形状条件),后者在形状和拓扑质量上获得更多投票(表1左),证明形状条件设定的优势。
  3. 输入点云质量的鲁棒性
    • 实验设置:在输入点云坐标和法向上添加不同尺度的高斯噪声(0.005, 0.02, 0.05),以及使用生成模型(Rodin)产生的点云作为输入,测试MeshAnything的生成质量。
    • 结果:在低到中等噪声水平下,性能下降不显著;只有在较大噪声下才有明显下降。模型能够很好地处理来自生成模型的点云,展示了与3D生成管线集成的能力(表6)。