论文阅读_DInstantMesh
InstantMesh: Efficient 3D Mesh Generation from a Single Image with Sparse-view Large Reconstruction Models
基本信息
| 项目 | 内容 |
|---|---|
| 论文标题 | InstantMesh: Efficient 3D Mesh Generation from a Single Image with Sparse-view Large Reconstruction Models |
| 作者 | Jiale Xu, Weihao Cheng, Yiming Gao, Xintao Wang, Shenghua Gao, Ying Shan |
| 作者单位 | 1. ARC Lab, Tencent PCG; 2. ShanghaiTech University |
| 时间 | 2024 (ICLR 2024) |
| 发表会议/期刊 | International Conference on Learning Representations (ICLR) 2024 |
方法概览
| 特点 | 文章性质 |
|---|---|
| 输入 | 单张RGB图像 |
| 输出 | 带纹理的三角网格 (Textured Triangle Mesh) |
| 所属领域 | 图像到三维生成 (Image-to-3D Generation) |
摘要
InstantMesh 是一个前馈框架,能够在约10秒内从单张图像高效生成高质量的3D网格。它通过结合一个现成的多视角扩散模型和一个基于 LRM 架构的稀疏视角大重建模型来实现。该工作的核心创新在于集成了一个可微的等值面提取模块(FlexiCubes),从而能够直接在网格表示上进行优化,并利用深度、法向等几何信息进行监督,显著提升了训练效率和生成质量。
引言:出发点与动机
从单视图图像创建3D资产对于VR、工业设计、游戏等领域至关重要。以大规模扩散模型为代表的2D生成取得了巨大成功,但将其复制到3D领域面临挑战,主要原因是3D数据的规模有限且标注质量差。为规避3D数据不足,先前工作探索了通过逐场景优化将2D扩散先验提取到3D表示中(如DreamFusion的SDS方法),但这种方法耗时且存在多面(“Janus”)问题。
随着大规模3D数据集的出现,大重建模型(LRM)展示了将图像直接映射到3D表示(如triplanes)的能力,为快速创建高质量3D资产指明了方向。然而,基于triplane的方法需要内存密集型的体渲染过程,阻碍了训练规模和利用高分辨率几何信息进行监督。一些工作转而使用Gaussians表示以提升渲染效率,但它们在几何建模方面存在不足。另一些工作选择直接在网格表示上进行优化,但采用了基于CNN的架构,限制了处理可变输入视角的灵活性和在未来更大数据集上的训练可扩展性。
因此,InstantMesh 的出发点在于:结合多视角扩散模型的前沿生成能力和基于Transformer的稀疏视角重建模型的可扩展性优势,同时通过引入可微的网格表示和优化,来解决现有方法在训练效率、几何监督利用和模型可扩展性方面的瓶颈,从而实现快速、高质量且易于训练的3D生成。
创新点
InstantMesh 的主要创新点可以概括为以下几个方面:
- 可微等值面提取与网格监督训练:这是核心创新。通过集成可微等值面提取模块 FlexiCubes,模型能够直接在网格表示上进行训练和优化。这使得模型可以高效地利用高分辨率的RGB图像以及深度(Depth)和法向(Normal)等几何信息进行监督,而无需进行昂贵的体渲染或patch裁剪,从而显著提升了训练效率和生成网格的质量与平滑度。
- 基于Transformer的稀疏视角重建模型:模型架构基于大重建模型(LRM)的Transformer骨干网络进行改进,使其能够处理多个稀疏视角(如6个)作为输入。相比基于CNN的架构,这种纯Transformer架构在处理可变输入视角和未来更大规模数据集训练方面具有更优的灵活性和可扩展性。
- 两阶段训练策略:
- 第一阶段:在熟悉的 Triplane NeRF 表示上进行预训练,复用 OpenLRM 的先验知识,使模型快速学习3D几何。
- 第二阶段:切换到网格表示,集成 FlexiCubes,并施加额外的深度和法向监督,以精细化几何和外观。
- 针对性的数据准备与模型微调:
- 白背景微调:对多视角扩散模型 Zero123++ 进行微调,使其生成具有一致白背景的多视图图像,消除了不一致背景导致的漂浮伪影,提升了后续重建的稳定性。
- 高质量数据集筛选:从大规模的 Objaverse 数据集中,根据纹理、物体占比、物体分离度、描述信息等标准,严格筛选出约27万个高质量3D资产用于训练,提升了训练数据的纯净度。
- 相机增强与扰动:为了提升模型对物体尺度和方向的鲁棒性,在训练时对输入的多视角相机姿态进行随机旋转和缩放。同时,考虑到扩散模型生成视图的相机姿态可能存在噪声,在将姿态输入图像编码器前也添加了随机噪声,增强了模型的容错能力。
网络架构
InstantMesh 的整体框架由两个主要组件构成:
- 多视角扩散模型 :采用经过白背景微调的 Zero123++。给定一张输入图像 ,该模型生成6个具有3D一致性的、白背景的新视角图像。
- 稀疏视角大重建模型 :基于 Instant3D 的架构进行改进。它以 生成的6张多视角图像及其对应的相机姿态作为输入,直接预测出一个高质量的3D网格。
整个流程是前馈的,无需逐场景优化,耗时约10秒。
特征提取
- 图像特征提取:使用 ViT 图像编码器来处理输入的多视角图像,提取图像 token。
- 姿态感知编码:在 ViT 编码器中加入了 AdaLN 相机姿态调制层,使得输出的图像 token 具有姿态感知能力。
- 3D特征生成:重建模型的核心是一个基于 Transformer 的架构,它将多视角的图像 token 映射到一种称为 triplane 的隐式3D表示(一个包含几何和外观信息的3D特征体积)。在第二阶段,这个 triplane 特征被输入到 FlexiCubes 模块以提取显式网格。
三维模型细节
InstantMesh 生成带纹理的三角网格。得益于高分辨率(512x512)的监督信号(尤其是第二阶段增加的深度和法向监督),以及直接在网格上进行优化,生成的网格具有更平滑的表面和更清晰的纹理细节。论文中的可视化结果显示,其网格质量(包括几何完整性和纹理保真度)显著优于基线方法。
三维模型生成步骤
- 多视角生成:输入单张图像 到微调后的 Zero123++ 模型 ,合成6个固定相机姿态下的、白背景的新视角图像。
- 特征重建与映射:将这6张图像及其相机姿态输入稀疏视角重建模型 。模型首先通过 ViT 编码器和 Transformer 解码器,将多视角信息融合并映射到 triplane 隐式3D特征场。
- 网格提取与精炼:
- 在推理时(或在训练的第二阶段),triplane 特征被送入集成的 FlexiCubes 模块。
- FlexiCubes 从一个 Signed Distance Field (SDF) 中可微地提取出三角网格的表面。
- 模型通过附加的MLP预测 SDF 值以及 FlexiCubes 所需的变形和权重参数,从而生成最终的带纹理网格。
相关工作与比较
- 基于的工作/参考:
- Instant3D:框架设计的主要参考,结合了多视角扩散和稀疏视角LRM。
- LRM (Large Reconstruction Model):重建模型的基础架构。
- Zero123/Zero123++:作为多视角生成的基础模型。
- FlexiCubes:集成的可微等值面提取模块。
- 比较的基线方法:
- TripoSR:当前性能最好的开源单视图LRM。
- LGM:基于UNet的 Large Gaussian Model,从生成的多视角图重建Gaussians。
- CRM:基于UNet的 Convolutional Reconstruction Model,从生成的多视角图重建网格。
- SV3D:基于图像生成轨道视频的扩散模型(仅用于新视角合成任务比较)。
- 评价指标:
- 2D视觉质量:在新视角渲染图像上计算 PSNR (峰值信噪比), SSIM (结构相似性), LPIPS (学习感知图像块相似度)。
- 3D几何质量:在生成的网格与真实网格之间计算 Chamfer Distance (倒角距离) 和 F-Score。
Loss 函数
训练分为两个阶段,对应不同的损失函数。
第一阶段(NeRF训练)损失 :
在Triplane NeRF表示上训练,损失包含图像重建损失、感知损失和掩码损失。
\mathcal{L}_{1} = \sum_{i} \left\| \hat{I}_{i}-I^{gt}_{i} ight\|_{2}^{2} + \lambda_{ ext{pips}} \sum_{i} \mathcal{L}_{ ext{pips}} \left( \hat{I}_{i}, I^{gt}_{i} ight) + \lambda_{ ext{mask}} \sum_{i} \left\| \hat{M}_{i} - M^{gt}_{i} ight\|_{2}^{2}
其中,, , , 分别是第 个视角的渲染图像、真实图像、渲染掩码、真实掩码。。
第二阶段(Mesh训练)损失 :
在Mesh表示上训练,在 基础上增加了深度和法向的监督,以及网格正则化项。
\mathcal{L}_{2} = \mathcal{L}_{1} + \lambda_{ ext{depth}} \sum_{i} M^{gt} \otimes \left\| \hat{D}_{i} - D_{i}^{gt} ight\|_{1} + \lambda_{ ext{normal}} \sum_{i} M^{gt} \otimes \left( 1 - \hat{N}_{i}


