论文阅读_LRM
LRM: Large Reconstruction Model for Single Image to 3D
基本信息
| 项目 | 内容 |
|---|---|
| 论文标题 | LRM: Large Reconstruction Model for Single Image to 3D |
| 作者 | Yicong Hong, Kai Zhang, Jiuxiang Gu, Sai Bi, Yang Zhou, Difan Liu, Feng Liu, Kalyan Sunkavalli, Trung Bui, Hao Tan |
| 第一作者单位 | Adobe Research (Yicong Hong 同时隶属 Australian National University) |
| 时间 | 2024 (根据引用文献推断,应为 CVPR 2024) |
| 发表会议/期刊 | 预计为 CVPR 2024 |
方法概览
| 特点 | 描述 |
|---|---|
| 输入 | 单张 RGB 图像 (背景已移除) |
| 输出 | 3D 形状 (以 NeRF / Triplane 形式呈现,可快速提取为 Mesh) |
| 核心目标 | 从单张图像快速 (5秒内) 重建高质量、高泛化性的 3D 物体模型 |
| 所属领域 | 单视图三维重建 |
摘要精简
本文提出了首个大规模重建模型 (LRM),能够仅用5秒时间从单张输入图像预测物体的3D模型。与以往依赖小规模数据集或特定类别的方法不同,LRM采用了一个具有5亿可学习参数、高度可扩展的基于Transformer的架构,直接从图像预测神经辐射场 (NeRF)。模型在包含约100万个物体的大规模多视图数据(包括 Objaverse 的合成渲染和 MVImgNet 的真实捕捉视频)上进行端到端训练。高容量模型与大规模训练数据的结合使其具有高度的泛化能力,能够从各种真实世界图像和生成模型创建的图像中产生高质量的3D重建结果。
引言与出发点
从单张任意物体的图像即时创建3D形状,在工业设计、动画、AR/VR等领域有广泛应用前景。然而,单视图下3D几何存在固有的模糊性。早期基于学习的方法通常依赖特定类别的数据先验,泛化能力有限。近期工作(如 Zero-1-to-3, Make-It-3D)尝试利用2D扩散模型的强大泛化能力来提供多视角监督,但它们的结果受限于预训练的2D生成模型,且常需要精细的参数调整。
受自然语言处理(如GPT系列)和图像处理领域大模型成功的启发,作者认为成功关键在于:1) 使用高度可扩展的网络(如Transformer);2) 海量数据集;3) 鼓励模型发现数据底层结构的自监督式训练目标。基于此,作者提出核心问题:给定足够的3D数据和大规模训练框架,能否学习到一个通用的3D先验,用于从单张图像重建物体? LRM便是对此问题的肯定回答。
| 对比方法 | 核心问题指出 |
|---|---|
| 类别特定重建方法(如 Mesh R-CNN) | 1. 仅适用于特定类别,泛化性差;2. 依赖类别先验,无法处理任意物体;3. 细节重建不足 |
| 扩散引导方法(如 Zero-1-to-3、One-2-3-45) | 1. 依赖预训练 2D 扩散模型,结果受限于扩散模型;2. 需生成多视图图像再重建,流程复杂;3. 细节模糊、一致性不足 |
| per-shape 优化方法(如 NeRF 微调) | 1. 每个物体需单独优化,耗时久(分钟级);2. 泛化性差,依赖初始化和正则;3. 难以处理未见物体 |
| 3D 扩散模型(如 Point-E、Shap-E) | 1. 3D 数据稀缺,模型容量有限;2. 表示效率低(点云 token 数量多);3. 重建质量和细节不足 |
| GINA-3D(图像到 triplane) | 1. 模型规模小,训练数据量有限;2. 聚焦类别特定生成,重建泛化性差;3. 无相机特征调制 |
创新点
- 首个大规模3D重建模型:参数量巨大(5亿),训练数据规模空前(约100万个物体),旨在学习通用的、跨类别的3D先验。
- 完全基于Transformer的端到端流水线:采用了高度可扩展的Transformer编码器-解码器架构,直接从单张图像回归出3D表示,无需逐形状优化。
- 高效且表达力强的3D表示:采用 Triplane-NeRF 作为3D表示。相比体素网格 () 和点云,Triplane 具有计算友好性 ();相比 Shap-E 等将NeRF权重token化的方法,Triplane 与图像输入具有更好的局部性对应关系。
- 数据驱动且训练目标简洁:不依赖任何预训练的视觉-语言对比模型或生成模型的引导,仅通过最小化新视角渲染图像与真实图像之间的差异进行训练,无需复杂的3D感知正则化。
- 3D作为新模态的跨模态映射:将3D Triplane 视为一种新的模态,通过交叉注意力 (Cross-Attention) 直接将2D图像特征映射到3D空间,让模型自行学习2D到3D的对应关系。
网络架构构成
LRM是一个完全可微分的、基于Transformer的编码器-解码器框架(如图1所示),主要由三部分组成由图像编码器、image-to-triplane 解码器、triplane-NeRF 解码器三部分组成:
- 图像编码器 (Image Encoder):使用预训练的视觉Transformer (DINO ViT-B/16) 将输入图像编码为一系列图像块特征token 。
- 图像到Triplane解码器 (Image-to-Triplane Decoder):一个大型Transformer解码器。它以可学习的空间位置嵌入和相机特征为条件,通过交叉注意力将图像特征投影到3D空间,并通过自注意力建模Triplane token间的关系,最终输出上采样后形成Triplane特征图 。
- 架构:16 层 transformer,隐藏维度 1024,含 cross-attention、self-attention、MLP 子层;
- 输入:初始化的 triplane 位置嵌入(3×32×32×1024)、图像特征 token、相机特征嵌入;
- 核心操作:
- 相机调制:通过ModLNc(fj)=LN(fj)⋅(1+γ)+β(γ,β由相机特征 MLP 输出)调制各子层输入;
- cross-attention:triplane token 关注图像特征 token,建立 2D-3D 映射;
- self-attention:建模 triplane 内部空间关系;
- 输出:3×32×32×1024 特征,经反卷积上采样至 3×64×64×80,得到最终 triplane。
- Triplane-NeRF渲染器:一个共享的MLP ()。对于3D空间中的任意点,通过双线性插值从Triplane的三个平面上查询其特征,拼接后输入该MLP,预测该点的颜色 (RGB) 和密度 (),最后通过体积渲染公式合成任意视角的图像。
- 架构:10 层 MLP,隐藏维度 64,ReLU 激活;
- 输入:3D 点在 triplane 查询的特征(3×80 维度);
- 输出:RGB 颜色(3 维)和体密度σ(1 维),用于体渲染。
体积渲染公式如下,其中对于射线 上的点 :
\mathbf{c}(\mathbf{r}) = \sum_i T_i (1 - xp(-\sigma_i \delta_i)) \mathbf{c}_i, \quad T_i = xp(-\sum_{j=1}^{i-1} \sigma_j \delta_j)
特征提取
- 图像特征:使用自蒸馏训练的 DINO 模型作为图像编码器。DINO 能学习到图像中显著内容的结构和纹理的可解释注意力,这种详细的结构和纹理信息对3D几何和颜色重建至关重要。作者不仅使用了ViT预定义的[CLS] token,还利用了整个图像块特征序列 ,以更好地保留这些信息。
- 相机特征:构造一个20维的相机特征向量 ,包含外参矩阵(经过归一化)、焦距和主点。通过一个MLP将其映射为高维相机嵌入 $ ilde{\mathbf{c}}$,用于调制解码器。相机外参矩阵(4×4)、焦距、主点拼接为 20 维特征,经 MLP 映射为高维嵌入;嵌入特征通过 ModLN 调制 transformer 各层输入,让模型感知相机姿态,辅助 2D-3D 映射。
三维物体生成步骤
-
输入与编码:输入一张去除背景、中心化的RGB图像。DINO编码器提取其图像块特征序列 。
-
图像编码:预处理后的图像输入 DINO ViT,输出 1025 个特征 token,保留图像细节和全局信息;
-
Triplane解码:图像特征 和相机嵌入 $ ilde{\mathbf{c}}$ 被送入图像到Triplane解码器。解码器通过交叉注意力将图像信息“绘制”到初始的、可学习的空间位置嵌入上,再通过自注意力完善Triplane内部的空间结构关系,最终输出一个低分辨率的Triplane特征。
- 初始化 triplane 位置嵌入,结合相机特征嵌入输入 transformer 解码器;
- 经 16 层 transformer 的 cross-attention(融合图像特征)和 self-attention(优化空间关系),输出 3×32×32 特征;
- 反卷积上采样至 3×64×64×80,得到最终 triplane 表示。
-
特征上采样:通过可学习的反卷积层将解码器输出的Triplane特征上采样至目标分辨率(如 个特征向量)。
-
3D点查询与属性预测:对于需要渲染的3D空间点,将其投影到Triplane的三个特征平面上,通过双线性插值获取对应的特征,拼接后输入 ,得到该点的颜色和密度。
- 对 3D 空间 [−1,1]³ 内的点,从 triplane 查询特征并输入 MLP,预测颜色和密度;
- 体渲染计算像素颜色:u®=∑iTi(1−exp(−σiδi))ui(Ti=exp(−∑j=1i−1σjδj));
-
渲染与网格提取:通过体积渲染公式,沿相机光线积分,合成任意新视角的RGB图像和深度图。在推理时,可通过在规则网格上查询密度并使用 Marching Cubes 算法,在约2秒内提取出3D网格。
查询 384×384×384 分辨率的 3D 点密度,通过 Marching Cubes 算法提取 3D 网格,完成生成。
训练与测试数据及对比结果
- 训练数据:
- 合成数据:从 Objaverse 数据集中选取约73万个3D资产,对每个资产进行归一化后,随机渲染32个视角的图像(分辨率 )。
- 真实数据:从 MVImgNet 数据集中选取约22万个视频,提取帧,利用预测的物体掩码进行裁剪和居中处理。
- 总计使用约100万个对象进行训练。
- 测试数据:Objaverse 和 MVImgNet 的未见过的图像、ImageNet、Google Scanned Objects、Amazon Berkeley Objects、真实世界拍摄的照片、Adobe Firefly生成的图像。
- 对比方法与结果:与同期state-of-the-art方法进行对比(在Google Scanned Objects的100个物体上评估):
| 模型 | FID | CLIP相似性 | PSNR | LPIPS | Chamfer距离 |
| :------------- | :--------------- | :-------------------- | :-------------- | :----------------- | :----------------------- |
| Point-E | 123.70 | 0.741 | 15.60 | 0.308 | 0.099 |
| Shap-E | 97.05 | 0.805 | 14.36 | 0.289 | 0.085 |
| One-2-3-45 | 139.24 | 0.713 | 12.42 | 0.448 | 0.123 |
| LRM (Ours) | 31.44 | 0.902 | 19.60 | 0.163 | 0.053 |
LRM在所有评估指标上均显著优于对比方法。视觉对比也显示LRM能产生细节更清晰、表面更一致的重建结果。
消融实验分析
论文在缩小版模型上进行了广泛的消融实验,验证了各个设计选择的有效性:
- 合成 vs. 真实数据:同时使用合成和真实数据训练效果最好,优于仅使用任何一种,表明真实数据的多样性(光照、目标尺寸、相机位姿)对学习泛化先验至关重要。
- 训练视图数量:每个形状使用更多不同的训练视图(如16个)能带来更好的重建质量,因为模型能更好地关联同一形状不同部分的外观和几何。
- 模型超参数:
- 解码器深度:增加交叉注意力层数(从6到24层)能略微提升性能,尤其是语义和感知相似性指标。
- NeRF MLP层数:2到4层是一个“甜点”,过多的层数并无必要,表明形状信息主要由Triplane编码。
- Triplane分辨率:通过反卷积上采样提高输出Triplane分辨率,能提升图像质量。
- 相机姿态归一化:在训练时将输入图像的相机外参归一化到统一视角,极大地促进了模型收敛并提升了泛化性能。不归一化或随机化相机姿态会导致结果变差。
- 监督侧视图数量:在训练时,对每个样本使用更多的侧视图(1到4个)进行监督,能提高重建质量。
- 训练渲染分辨率:使用更高的图像分辨率(如 )进行训练,鼓励模型学习更多高频细节,显著改善结果。
- LPIPS损失:使用LPIPS感知损失对提升重建图像的视觉质量至关重要,移除会导致各项指标大幅下降。
其他关键技术点
- 相机特征调制 (Modulation):借鉴 DiT 的思想,通过自适应层归一化将相机信息注入解码器的每一层。调制公式如下:
\gamma, eta = MLP^{mod}( ilde{c})



