一句话定位
One-2-3-45 是一种前向(feed-forward)单图到 3D 网格的方法:先用视角条件扩散模型 zero123 生成多视角图像,再用基于 SDF 的可泛化神经表面重建(改自 SparseNeuS)一次前馈把它们 lift 成完整 360° 带纹理网格——全程 45 秒、无需逐物体优化,在 GSO/Objaverse 上 F-Score 84.0/83.1(avg 83.5)全面第一(F-Score 超过同期所有零样本方法,含 3D native 的 Shap-E avg 82.3),同时比优化式方法(RealFusion ~90 分钟、Zero123+SD ~15 分钟)快两到三个数量级。
背景与定位
单图 3D 重建既要重建可见部分,又要”幻觉”出不可见区域,是经典的病态问题。2023 年的主流范式是 per-shape optimization(逐物体优化):用 2D 扩散模型 / CLIP 作先验,通过可微渲染(differentiable rendering)反复优化一个 NeRF/mesh,代表作有 DreamFusion(SDS)、Magic3D、RealFusion、3DFuse。这类方法有四大顽疾:
- 慢:每个形状要上万次迭代的全图体渲染 + 先验模型推理,通常几十分钟。
- 显存重:2D 先验需要整张图,高分辨率下体渲染吃显存。
- 3D 不一致:2D 先验每次只看一个视角并强迫每视角都像输入,易出 Janus problem(多面/双面)。
- 几何差:常用 density field,RGB 渲染好但抽出的 mesh 质量差。
另一条线是 3D native diffusion(OpenAI 的 Point-E、Shap-E),直接在数百万内部 3D 数据上训练;速度快(Shap-E 27s / Point-E 78s)但受限于公开 3D 数据规模,且对输入图的”忠实度”不够(论文举例 Shap-E 会丢背包肩带、鞋子变形、凳子腿数出错)。
One-2-3-45 的定位是第三条路:既不做逐物体优化,也不训练 3D native 扩散,而是把 2D 扩散先验(Zero123)+ 可泛化代价体(cost-volume)重建 拼接成一个纯前向管线。技术脉络上它继承自 zero123(视角条件扩散)与 SparseNeuS / MVSNeRF(可泛化神经表面重建),是”多视角合成 → 多视角重建”这一思路的开山级落地工作(NeurIPS 2023)。后续 One-2-3-45++、Zero123++、InstantMesh、LRM 系列均沿此脉络演进。
模型架构
整条管线由三个模块串联,唯一可训练部分是第三个重建模块(Zero123 全程冻结):
(a) 多视角合成 —— Zero123(冻结)。 Zero123 是在 stable-diffusion-1 上微调出的视角条件扩散模型,输入「单张 RGB + 相对相机变换」,输出该变换视角下的新图。相机用球面坐标 (θ, φ, r)(极角/方位角/半径)参数化,相对变换记为 (Δθ, Δφ, Δr);学习目标 f(x₁, Δθ, Δφ, Δr) 在感知上接近 x₂。本工作用两阶段采样:先在球面均匀取 n=8 个视角,再为每个视角生成 4 张”邻近视角”(彼此相隔 10°),共 8×4 = 32 张源视图。
(b) 位姿估计 —— 仰角(elevation)估计模块。 Zero123 的方位角 φ 与半径 r 可任意指定(只影响重建结果的旋转/缩放),但绝对仰角 θ 必须已知才能把所有相对位姿换算到统一 XYZ 系——θ 错会导致重建畸变。模块做法:用 Zero123 为输入图生成 4 张邻近视角 → 用 off-the-shelf 特征匹配 LoFTR 在 6 个图对间找对应关键点 → 以粗到细枚举所有候选仰角(粗阶段 10° 步长,细阶段在最优解 ±10° 内 1° 步长),对每个候选用三角化+重投影误差(类 SfM bundle adjustment)打分,取重投影误差最小的仰角。整模块 <1 秒。
(c) 3D 重建 —— 基于 SDF 的可泛化神经表面重建(改自 SparseNeuS / MVSNeRF)。 这是核心可训练模块。流程:m 张带位姿源图 → 2D 特征网络抽 m 张特征图 → 构建 3D 代价体(cost volume):每个 3D voxel 投影到 m 个 2D 特征平面、取跨视角特征的方差 → 稀疏 3D CNN 处理代价体得到几何编码体(geometry volume) → 一个 MLP 吃「3D 坐标 + 插值几何特征」预测 SDF;另一个 MLP 吃「投影位置的 2D 特征 + 几何特征 + 视线方向」预测各源视角的混合权重,颜色 = 投影颜色的加权和 → 在两个 MLP 上套 SDF-based 体渲染(NeuS 式)做 RGB/depth 渲染。最终用 marching cubes 从 SDF 抽 mesh,再按 NeuS 方式查询顶点颜色得到带纹理网格。用 SDF 表示(而非 density field)是其几何质量更好的关键。
关键架构取舍:选 cost-volume 路线而非直接 MLP/transformer 聚合,是因为代价体方法依赖很近的源视角找局部对应(local correspondence)——这正好契合”Zero123 在小相对位姿(如 10°)下预测最准最一致”的特性(见数据维 Figure 4),从而把”不一致的多视角预测”问题转化为”局部对应”问题。
数据
- 重建模块训练集:Objaverse 的 LVIS 子集,46k 个 3D 模型 / 1,156 个类别(均为 CC-BY 许可)。论文与代码均强调”不重度依赖大规模训练数据”——因为模块主要靠局部对应推几何,相对容易学且易泛化。
- 渲染:用 BlenderProc / Blender 把每个形状渲成 2D 的 GT RGB + depth 图。沿用 Zero123 的归一化(物体居中于原点)与球面相机模型。训练数据已公开在 HF
One-2-3-45/training_data(含One2345_training_pose.json、lvis_split_cc_by.json,渲染目录zero12345_narrow)。 - 训练时视图配置:每个形状先渲 n 张 GT 视图,再用 Zero123 为每张 GT 视图预测 4 张邻近视图,共 4×n 张喂入重建模块;从 n 张 GT RGB 中随机选 1 张作为 target view 监督。
- 输入预处理:带背景的真实图用 off-the-shelf 分割网络 SAM(Segment Anything) + bounding-box prompt 去背景、rescale、recenter。
- 评测数据:GSO(Google Scanned Objects)与 Objaverse 各随机选 20 个形状、每形状渲 1 张图作输入;仰角估计另渲 1,700 张随机位姿图量化评估。
- Zero123 自身的训练数据(其多视角先验来源):Objaverse 上合成的”成对图像 + 相对相机变换”,本工作直接复用其权重、未重训。
训练方法
只训练重建模块(Zero123 冻结),端到端用以下损失:
L = L_rgb + λ0·L_depth + λ1·L_eikonal + λ2·L_sparsity
λ0 = 1, λ1 = 0.1, λ2 = 0.02(λ2 线性 warm-up,沿用 SparseNeuS)
- L_rgb:渲染色与 GT 色的 L1,按累积权重之和加权。
- L_depth:渲染深度与 GT 深度的 L1(这是把 SparseNeuS 从”正面重建”扩展到”360° 重建”的关键监督之一)。
- L_eikonal / L_sparsity:Eikonal 与稀疏项,沿用 SparseNeuS。
三项关键训练策略(消融证明缺一不可):
- 两阶段源视图选择(2-stage source view selection):不在球面均匀取 32 个视角(那样相机间距太大、cost-volume 找不到局部对应),而是”8 个均匀视角 × 各 4 个 10° 邻近视角”。消融第一列显示:若直接喂 32 个均匀 Zero123 预测,重建完全失败;只喂 8 个无邻近视角则无法捕捉局部对应、细节几何崩。
- GT-预测混合训练(groundtruth-prediction mixed training):训练时第一阶段用 n 张 GT 渲染(以启用 depth loss 做强监督),第二阶段邻近视图用 Zero123 预测;推理时整体换成 Zero123 预测、无需 depth 输入。消融显示:若训练全用 8×4 GT 渲染(不含 Zero123 预测),推理时对 Zero123 预测泛化差、大量缺失区域;若训练把 n 张 GT 换成 Zero123 预测,又会因深度监督错误而崩溃。
- 深度监督(depth loss):去掉 L_depth 则细粒度几何学不出来(消融第三列)。
无任何蒸馏 / 一致性模型 / RL / 偏好对齐——这是一个纯监督前向重建网络,速度优势来自”前向”本身而非加速技巧。
Infra(训练 / 推理工程)
- 训练算力:重建模块在 2× A10 GPU 上训 300k 迭代,约 6 天。算力需求极低(作者特别强调不依赖大规模数据/算力)。
- 推理形态 / 端到端耗时:A100 上总计 ~45 秒——其中 3D 重建模块前向 ~5 秒,其余时间主要花在 Zero123 多视角预测(A100 上约 1 秒/图,32 张约 ~32s),仰角估计 <1 秒。
- 硬件门槛(开源代码):推理需 NVIDIA GPU 显存 ≥18GB(如 RTX 3090 / A10);A6000 上 ~40s/图;首次运行需较长编译时间。环境:CUDA 11.8 + PyTorch 2.0.1 + torchsparse v1.4.0 + inplace_abn,支持
--half_precision。 - 部署:提供 Gradio 交互 demo(HF Space,曾登 HF trending top 4、Spaces of the Week)、
run.py脚本、Jupyter notebook、以及 Gradio Client API(/generate_mesh、/estimate_elevation、/preprocess三个端点)。另提供 Docker 镜像(含权重 ~22.3G / 仅环境 ~7.3G)。 - 未披露:训练吞吐、混合精度训练细节、并行策略均未在论文报告(模型小、2 卡即可,无需分布式)。
评测 benchmark(把效果讲清楚)
主表(Table 1,GSO + Objaverse;F-Score 阈值 0.05,runtime 在 A100 上测):
| 方法 | 先验来源 | F-Score GSO / Obj. / avg | CLIP-Sim GSO / Obj. / avg | 耗时 |
|---|---|---|---|---|
| Point-E | 内部 3D 数据 | 81.0 / 81.0 / 81.0 | 74.3 / 78.5 / 76.4 | 78s |
| Shap-E | 内部 3D 数据 | 83.4 / 81.2 / 82.3 | 79.6 / 82.1 / 80.9 | 27s |
| Zero123+SD | 2D 扩散 | 75.1 / 69.9 / 72.5 | 71.0 / 72.7 / 71.9 | ~15min |
| RealFusion | 2D 扩散 | 66.7 / 59.3 / 63.0 | 69.3 / 69.5 / 69.4 | ~90min |
| 3DFuse | 2D 扩散 | 60.7 / 60.2 / 60.4 | 71.4 / 74.0 / 72.7 | ~30min |
| Ours (One-2-3-45) | 2D 扩散 | 84.0 / 83.1 / 83.5 | 76.4 / 79.7 / 78.1 | 45s |
要点:
- F-Score 全面第一(83.5 avg),超过 3D native 的 Shap-E(82.3)与所有优化式方法。
- CLIP 相似度 78.1,仅次于并发工作 Shap-E(80.9)。作者指出 CLIP-Sim 对颜色分布敏感、对局部几何变化(凳子腿数、杯子把手数)不够判别,不能完全反映几何忠实度。
- 速度:45s,比优化式快 20–120 倍,与 3D native 扩散同量级。
仰角估计(Figure 7):在 1,700 张随机位姿图上,预测仰角误差中位数 5.4°、平均 9.7°。
关键消融结论:
- Zero123 预测质量(Figure 4):相对位姿越小越准;整体 PSNR 不高(尤其大位姿/俯仰极端视角),但 mask IoU 多 >0.95、CLIP 相似度好——即轮廓/边界对、像素级外观可能不对。正是这种”轮廓一致但像素不一致”让传统 NeRF/SDF 优化(TensoRF、NeuS)在 32 张 Zero123 预测上直接失败、出现畸变与漂浮物(Figure 3),从而论证了”为何需要专门训练的可泛化重建模块”。
- 训练策略消融(Figure 8):两阶段选视图、深度监督、GT-预测混合训练三者缺一即崩(详见训练方法节)。
- 源视图数量:只要重建模块按对应设置重训,对视图数量不敏感。
- 360° 一次重建 vs. 多视角融合(Figure 9):逐视角推几何再融合的方案因 Zero123 预测不一致而难融合,证明”一次前向出 360° mesh”更优。
- 仰角错误(Figure 10):人为把仰角偏移 ±30° 会导致重建畸变,验证仰角估计模块的必要性。
额外能力:接 off-the-shelf 文生图(DALL-E 2,prompt 加 “3d model, long shot”)即可自然扩展为 text-to-3D,在细粒度属性(树洞、橙色凳配绿腿、菠萝形哈瓦那帽、摇马椅)上比 Stable DreamFusion / 3DFuse 更忠实。
创新点与影响
核心贡献:
- 提出**“视角条件 2D 扩散 + 可泛化代价体重建”的前向范式**,首次在不做任何逐物体优化的前提下,把单图变成 360° 带纹理网格,速度从”几十分钟”压到 45 秒。
- 把 SparseNeuS(原本只做正面重建)通过两阶段源视图选择 + GT-预测混合训练 + 深度监督扩展到 360° 重建,并使其能”消化”Zero123 固有的多视角不一致——核心洞察是”用很近的源视角把不一致问题降级为局部对应问题”。
- 提出免训练的仰角估计模块(LoFTR 匹配 + 粗到细枚举 + 重投影误差),解决 Zero123 canonical 坐标系下绝对仰角未知的难题,且作为独立 off-the-shelf 工具开放 API。
- 用 SDF 表示带来更好几何 + 更高输入忠实度(不靠 3D 空间幻觉,而是先生成高质量多视角再 lift),缓解 Janus problem。
影响:作为”多视角合成 → 前馈多视角重建”路线的奠基工作(NeurIPS 2023),直接催生 One-2-3-45++、Zero123++ 等后续;其”先生成多视角、再可泛化重建”的思路成为 2023–2024 image-to-3D 的主流模板之一,与后来的 LRM / InstantMesh 等大重建模型共同推动了”秒级前向 3D 生成”。
已知局限(作者自陈):
- 强依赖 Zero123:当输入信息不足(如狐狸背面看不到脸)或结构歧义/复杂(如香蕉的果肉与果皮)时,Zero123 预测不一致,导致重建几何出错(Figure 15)。
- 生成结果背面有轻微 artifact——作为早期将”视角条件扩散 + 可泛化重建”结合的工作,重建技术与正则化仍有很大改进空间。
原始链接
- arxiv_abs: https://arxiv.org/abs/2306.16928
- arxiv_pdf: https://arxiv.org/pdf/2306.16928
- project_page: https://one-2-3-45.github.io/ (官网 http://one-2-3-45.com)
- github: https://github.com/One-2-3-45/One-2-3-45
- hf_demo: https://huggingface.co/spaces/One-2-3-45/One-2-3-45
- hf_training_data: https://huggingface.co/datasets/One-2-3-45/training_data
一手源存档(sources/)
- arxiv-2306.16928.pdf (arXiv 原文 PDF,不入 git)
- project-page.md
- readme.md