LRM、Instant3D等方法需要在128卡A100(40G)上训练3天,渲染图片分辨率为128 x 128。本文认为瓶颈在于这些方法中使用的Triplane-NeRF渲染速度慢。因此,提出使用3DGS替代Triplane-NeRF。最终实现32卡A100(80G)上训练4天,渲染图片分辨率为512 x 512。
方法
如下图所示,LGM的pipeline包含三个部分:1)Multi-view Generation:将输入图像转换为多视角图片;2)Gaussian Generation:根据多视角图片重建对应3D目标;3)Meshing:将高斯转换为Mesh。
Gaussian Generation
下图展示了LGM中的Gaussian Generation部分。
- Input。输入是包含图像像素和像素对应射线的9维向量,射线通过普吕克坐标(Plucker coordinates)建模:
,其中c表示颜色,o表示射线原点,d表示射线方向。
- Asymmetric U-Net。通常U-Net的输入维度和输出维度相同,LGM使用6个down block,1个middile block和5个up block的非对称U-Net,使得输入为256 x 256时,输出为128 x 128。
- Multi-view Gaussian Features。参考CVPR-24的Splatter Image,Asymmetric U-Net输出的是特征维度为14的高斯特征图,高斯特征图上的每一个像素表示一个3D高斯点。因此,4个视角128分辨率的高斯特征图,对应4 x 128 x 128 = 65536个高斯点。
- Fuased Gausssians。将4个视角生成的3D高斯点合并在一起。
Meshing
在生成3D目标后,LGM也可以将其转换为mesh:
- 通过3DGS渲染多视角图片,通过多视角图片渲染新NeRF(Instant-NGP),
- 使用类似ICCV-23的NeRF2Mesh方法将NeRF转换为Mesh。
训练
- 数据集:Objaverse
- Cap3D获取3D标注,去除包含:类似、碎片等词的3D模型
- 去除白色渲染的3D模型
- 最终得到80K 3D模型
- 数据增强
- 训练时输入图像来自Objaverse渲染图像,推理时输入图像来自Multi-view Diffusion,存在不一致性。为缓解不一致,引入两种数据增强:
- 网格失真:增强font view
- 相机抖动:增强剩余3个视角
- 训练损失:重建损失
实验
消融实验