SuperAPI AI 工具集

stable-dreamfusion

stable-dreamfusion 是一个基于 PyTorch 的文本到 3D(Text-to-3D)与图像到 3D(Image-to-3D)生成项目,并支持网格导出。它是对 DreamFusion 论文的开源复现,使用 Stable Diffusion 作为文本到 2D 的扩散模型,并结合 NeRF(神经辐射场)与多分辨率网格编码器实现 3D 内容生成。项目支持使用 Perp-Neg 缓解 Text-to-3D 中的多面(多头部)问题,同时适用于 Stable Diffusion 和 DeepFloyd-IF。该项目为进行中的工作,生成质量与原论文存在差距,部分提示词仍会失败。

访问官网

工具介绍

Stable-Dreamfusion 是一个基于 PyTorch 的文本到 3D 与图像到 3D 生成实现,核心思路来自 DreamFusion 论文,并使用 Stable Diffusion 作为文本到 2D 的扩散模型。项目通过 NeRF 与扩散模型结合,支持网格导出。

主要能力:

  • 文本到 3D(Text-to-3D)生成。
  • 图像到 3D(Image-to-3D)生成。
  • 网格导出(Mesh Exportation)。
  • 支持 Perp-Neg,用于缓解 Text-to-3D 中的多头部问题(multi-head problem),适用于 Stable Diffusion 和 DeepFloyd-IF。
  • 提供 Instant-NGP 骨干(-O)和 Vanilla NeRF 骨干(-O2)的 Colab notebooks。

实现与论文差异:

  • 由于 Imagen 模型未公开,项目使用 Stable Diffusion 替代(实现来自 diffusers)。Stable Diffusion 是 latent diffusion 模型,在潜在空间扩散,因此需要损失从 VAE 编码器部分反向传播,带来额外训练时间成本。
  • 使用多分辨率网格编码器实现 NeRF 骨干(来自 torch-ngp),渲染速度更快(800x800 下约 10FPS)。
  • 默认使用 Adan 优化器。

使用方式:

  • 可选:创建 python 虚拟环境(推荐使用 conda 或 venv 避免包冲突)。
  • 使用 pip 安装。
  • 下载预训练模型:
    • 图像条件 3D 生成需要下载 Zero-1-to-3 的 zero123-xl.ckpt,路径硬编码在 guidance/zero123_utils.py。
    • 深度和法线预测需要 Omnidata 的 omnidata_dpt_depth_v2.ckpt 与 omnidata_dpt_normal_v2.ckpt,路径硬编码在 preprocess_image.py。
    • 使用 DeepFloyd-IF 需接受 Hugging Face 使用条件并 huggingface-cli login。
    • DMTet 提供预生成的 32/64/128 分辨率四面体网格,256 分辨率需另行获取。
  • 构建扩展(可选):默认在运行时构建,也提供 setup.py。
  • Taichi 后端(可选):用于 Instant-NGP,无需 CUDA 构建,性能与 CUDA 实现相当。

适用场景:

  • 文本或图像驱动的 3D 内容生成研究与实验。
  • 对 DreamFusion 复现与改进的探索。

限制与注意事项:

  • 项目为进行中工作,与论文存在许多差异,当前生成质量无法匹配原论文,许多提示词仍会失败。
  • 首次运行需编译 CUDA 扩展,耗时较长。
  • 已知问题包括 OpenGL 安装问题(eglInitialize 失败)、扩展版本不兼容(TypeError: xxx_forward(): incompatible function arguments)。
  • 测试环境:Ubuntu 22,torch 1.12 & CUDA 11.6,V100。
  • 提供脚本(scripts)与高级技巧(Advanced Tips)文档。
  • 支持复现论文 CLIP R-precision 评估。

项目还致谢了 DreamFusion、Magic3D、Zero-1-to-3、Perp-Neg、RealFusion、Fantasia3D、Make-It-3D、Stable Diffusion 与 diffusers 等研究。GUI 使用 DearPyGui 开发。