Zero123(论文名 Zero-1-to-3)出自哥伦比亚大学 CVLab 与丰田研究院,Ruoshi Liu、Rundi Wu、Basile Van Hoorick、Carl Vondrick 等人是作者,代码在 github.com/cvlab-columbia/zero123,MIT 许可。它干的事情听起来很朴素:给一张物体照片,再给一组相对相机位姿 (R, T),直接扩散出这个物体在新视角下长什么样。技术底子是 Lambda Labs 那版图像条件 Stable Diffusion,然后在 Objaverse 渲染数据(views_release.tar.gz,ODC-By 1.0)上微调 —— 官方放出四个权重 105000.ckpt、165000.ckpt、230000.ckpt、300000.ckpt,对应不同微调步数,最长的一支烧掉约 6000 个 A100 小时。
麻烦在于「Zero123」现在指四样不同的东西,而且不是同一批人做的。原版 Zero123 是哥大那支;Zero123-XL 是同一条线换到千万级的 Objaverse-XL 数据上重训;Stable Zero123 是 Stability AI 重做渲染流程和仰角条件之后的版本,权重叫 stable_zero123.ckpt,走 Stability 非商用研究许可(另有一个 Stable Zero123C 走 Community License 可商用);而 Zero123++ 完全是另一队人 —— Ruoxi Shi、Hao Su 等人的 SUDO-AI,仓库 github.com/SUDO-AI-3D/zero123plus,代码 Apache 2.0、权重 CC-BY-NC 4.0。四条线的显存需求从 5GB 到 22GB 不等,许可证从 MIT 到禁止商用都有,下载前先看清楚。
更实在的一句话:如果你今天要的是「单图进、能用的 3D 网格出」,原版 Zero123 已经是一份参考实现而不是生产方案 —— 它一次只出一张新视角,视角之间不保证一致,要拼成 3D 还得套 threestudio 的 SDS 逐物体优化,一个物体动辄几十分钟起。真正还在被大量调用的是 Zero123++ v1.2(0.9B,一次直接出 3×2 六视图网格),它是 InstantMesh、FreeSplatter 这些前馈重建管线的多视图后端。而端到端那一段,已经被 TRELLIS(微软,MIT,arXiv 2412.01506)和 Hunyuan3D 2.x(0.6B 到 3.0B,形状生成约 6GB、加贴图约 16GB)这类原生 3D 隐空间模型接管了。这不是坏消息 —— 它意味着你的显存预算可以下调,同样一张 RTX 3090 就能把 Zero123++ 主线跑得很舒服。
01 —
Zero123 家族的四条线:别下错权重,也别买错卡
同名不同队,显存差四倍多,许可证也各不相同
| 版本 | 参数量 | 显存 | 上下文 | 说明 |
|---|---|---|---|---|
| Zero123 · 105000.ckpt(官方默认) | SD 图像变体基座,单个 ckpt 文件 15.5GB | fp32 gradio 演示 ~22GB | 单图 + 相对位姿 (R, T) → 单张新视角 | README 点名可在 RTX 3090 / 4090(Ti) 上跑。代码 MIT,是整条线的参考实现,也是复现论文数字时该用的那一支。 |
| Zero123 · 165000 / 230000 / 300000.ckpt | 同架构,仅 Objaverse 微调步数不同 | 同为 ~22GB 级别 | 同上,wget cv.cs.columbia.edu/zero123/assets/$iteration.ckpt | 最长的一支约 6000 A100 小时训成。步数更多不等于你这批数据上效果一定更好,官方默认仍是 105000,务必自己对比。 |
| Zero123-XL | 同架构,训练数据换成 Objaverse-XL | 与原版同级 ~22GB | 单图 + 相对位姿 → 单张新视角 | 从十万级 Objaverse 换到千万级 Objaverse-XL 重训,对真实拍摄照片的泛化明显更稳,是原版之后第一次数据层面的大升级。 |
| Stable Zero123 / Stable Zero123C | stable_zero123.ckpt,Stability AI 出品 | threestudio SDS 粗阶段 ~12GB,精修 ~10GB | 必须喂 RGBA 去背景图(文件名带 _rgba.png 后缀) | 重做渲染数据与仰角条件,官方称优于原版 Zero123 与 Zero123-XL。普通版是非商用研究许可,只有 C 版走 Community License 才能商用 —— 这一条最容易踩。 |
| Zero123++ v1.1 | 0.9B | fp16 ~5GB | 单图 → 3×2 六视图网格,仰角 30° / -20° | SUDO-AI 的第一版,靠 diffusers 的 custom_pipeline 加载。配套 controlnet-zp11-depth-v1 做深度控制时约 5.7GB。 |
| Zero123++ v1.2(推荐主线) | 0.9B,safetensors | fp16 ~5GB;挂 ControlNet ~5.7GB | 六视图固定方位角 30/90/150/210/270/330°,仰角 20° / -10°,统一 30° FOV | 相机内参处理更规范、物体尺寸归一化,是今天真正被大量调用的一支:InstantMesh 用它的定制版 UNet 出白底多视图,FreeSplatter 等也接它。权重 CC-BY-NC 4.0,商用要另谈。 |
02 —
按场景挑卡:显存对得上,钱才不白花
以下均为 NexGPU 列表价,按秒计费,随时销毁
Zero123++ v1.2 推理,单图出六视图(fp16 约 5GB)
RTX 3090 24GB$0.193/卡·时
0.9B 的 UNet 在 24GB 上宽裕到可以同时挂 ControlNet 和 rembg,这是整个列表里跑 Zero123++ 性价比最高的一张。
原版 Zero123 权重跑 gradio_new.py(官方标注约 22GB)
RTX 5090 32GB$0.723/卡·时
22GB 塞进 24GB 卡只剩 2GB 余量,稍微加个 batch 或开个可视化就 OOM;32GB 让你有空间不必反复重启。
threestudio + stable-zero123 逐物体 SDS 优化
RTX 4090 24GB$0.540/卡·时
SDS 粗阶段只要约 12GB,显存不是瓶颈 —— 这是小时级的优化任务,算力快一档直接等于账单短一截。
Zero123++ 微调(configs/zero123plus-finetune.yaml)或 InstantMesh 批量出网格
RTX A6000 48GB$0.817/卡·时
微调要同时装下权重、梯度和优化器状态,48GB 能开到有意义的 batch size;InstantMesh 官方那套「双卡省显存」的模式在这张卡上也可以直接单卡跑完。
03 —
从零到出图:四步跑通
以 Zero123++ v1.2 为主线,原版权重与 SDS 路线各留一条岔路
- 01
开实例,装依赖
在 NexGPU 控制台选一张 RTX 3090 24GB,直接用预置的 PyTorch 镜像开机,SSH 或 Jupyter 进去。Zero123++ 走 diffusers 生态,依赖很轻;rembg 用来把输入图抠成 RGBA —— 这一步不是可选的,整个 Zero123 家族喂进去的都必须是干净去背景的物体图,带背景的照片出来的新视角会糊成一团。
pip install -U diffusers transformers accelerate rembg && python -c "import torch; print(torch.cuda.get_device_name(0))" - 02
跑 Zero123++ v1.2,一次拿到六视图
注意两个容易漏的细节:一是必须指定 custom_pipeline="sudo-ai/zero123plus-pipeline",直接 from_pretrained 是加载不起来的;二是调度器要换成 EulerAncestralDiscreteScheduler 且 timestep_spacing="trailing",这个参数写错出图质量会明显掉。输入建议至少 320×320 且接近正方形,步数在 28 到 100 之间,复杂物体往高了给。输出是一张 3×2 的网格图,六个视角方位角固定在 30/90/150/210/270/330°。
pipe = DiffusionPipeline.from_pretrained("sudo-ai/zero123plus-v1.2", custom_pipeline="sudo-ai/zero123plus-pipeline", torch_dtype=torch.float16).to("cuda:0") pipe.scheduler = EulerAncestralDiscreteScheduler.from_config(pipe.scheduler.config, timestep_spacing="trailing") pipe(Image.open("input_rgba.png"), num_inference_steps=75).images[0].save("six_views.png") - 03
岔路:要复现论文就上原版权重
原版仓库锁在 Python 3.9,而且 taming-transformers 和 CLIP 都得从源码装,pip 一把梭是装不上的。权重单个文件 15.5GB,先看好盘够不够。这条路只推荐两种人走:复现论文数字的,和要在 Zero123 架构上改结构的。纯粹想要多视图,回第二步。
conda create -n zero123 python=3.9 -y && conda activate zero123 pip install -r requirements.txt git clone https://github.com/CompVis/taming-transformers.git && pip install -e taming-transformers/ git clone https://github.com/openai/CLIP.git && pip install -e CLIP/ wget https://cv.cs.columbia.edu/zero123/assets/105000.ckpt python gradio_new.py - 04
接下游:从六视图到真正的 3D
两条路。前馈路线用 InstantMesh(Apache 2.0,需 CUDA≥12.1、PyTorch 2.1+),它内部就是一个定制过的 Zero123++ UNet 出白底多视图,再用 LRM/Instant3D 那套稀疏视图重建直出网格,秒级到分钟级,配置有 instant-mesh-large 和 instant-nerf-large 等四档,加 --export_texmap 可以导出带贴图的网格。优化路线用 threestudio 的 stable-zero123 做 SDS,质量上限更高但一个物体要跑小时级 —— 记得图必须是 _rgba.png 后缀的去背景图。
python launch.py --config configs/stable-zero123.yaml --train --gpu 0 data.image_path=./load/images/hamburger_rgba.png
一天把三条路线全验证一遍,要花多少钱
按 NexGPU 列表价老老实实算一笔。第一条线,Zero123++ v1.2 推理,fp16 约 5GB,RTX 3090 24GB 每卡时 $0.193 —— 装环境、拉 0.9B 权重、跑几十张输入图,占用 40 分钟,$0.193 × 40 ÷ 60 = $0.13。第二条线,原版 105000.ckpt 单文件 15.5GB,下载加 gradio 调参占 2 小时,为了给官方那 22GB 留出余量走 RTX 5090 32GB,$0.723 × 2 = $1.45。第三条最贵,threestudio 的 stable-zero123 是逐物体 SDS 优化,一个物体在 RTX 4090 上跑满 1 小时,一天跑 12 个,$0.540 × 12 = $6.48。三条加起来 $8.06 —— 不到九美元,你就知道自己这批数据该走哪条路,而不是先花几万块买卡再来后悔。存储另算:把 105000.ckpt 和 Zero123++ 权重一起留在盘上约 20GB,按 $0.414/GB·月 是 $8.28 一个月,所以验证完记得删掉不要的权重。这里有个计费细节值得记牢:实例一停算力就不再计费,但盘不销毁会一直计。出网量几乎可以忽略 —— 导出 200 个网格和预览视频约 2GB,$0.0081 × 2 ≈ 不到两美分。
04 —
