❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
大家好,我是蚝油菜花,今天跟大家分享一下 DiffSplat 这个由北京大学和字节跳动联合推出的 3D 建模生成框架。
🚀 快速阅读
DiffSplat 是一个高效的 3D 生成框架,能够在 1-2 秒内从文本或图像生成高质量的 3D 高斯点阵。
- 核心功能:支持文本和图像条件输入,生成 3D 高斯点阵并确保多视图一致性。
- 技术原理:基于大规模预训练的文本到图像扩散模型,结合 3D 渲染损失,确保生成内容在任意视图下的 3D 一致性。
DiffSplat 是什么
DiffSplat 是由北京大学和字节跳动联合推出的一个新型 3D 生成方法。它能够从文本提示和单视图图像快速生成 3D 高斯点阵(Gaussian Splats),并确保生成的内容在多视图下保持一致性。通过微调预训练的文本到图像扩散模型,DiffSplat 基于强大的 2D 先验知识,引入 3D 渲染损失来确保生成的 3D 内容在任意视图下的一致性。
DiffSplat 的核心优势在于其高效性和灵活性,能够在 1-2 秒内生成高质量的 3D 对象。此外,轻量级的重建模型用于构建结构化的高斯表示,为训练提供了高质量的数据支持。
DiffSplat 的主要功能
- 从文本或图像生成 3D 高斯点阵:DiffSplat 能直接从文本提示或单视图图像生成 3D 高斯点阵(Gaussian Splats),保持 3D 一致性。
- 高效利用 2D 先验知识:通过微调大规模文本到图像扩散模型,DiffSplat 有效基于网络规模的 2D 先验知识,同时引入 3D 渲染损失确保生成内容在任意视图下的 3D 一致性。
- 支持多种条件输入:DiffSplat 支持文本条件、图像条件或两者的组合输入,用户可以根据需要选择合适的条件。
- 可控生成能力:DiffSplat 可以与 ControlNet 等技术结合,实现基于文本提示和多种格式(如法线图、深度图、Canny 边缘图)的可控 3D 生成。
DiffSplat 的技术原理
- 基于大规模预训练的文本到图像扩散模型:DiffSplat 通过微调这些模型,直接生成 3D 高斯点阵(Gaussian Splats),有效基于网络规模的 2D 先验知识。
- 轻量级重建模型:为了启动训练,DiffSplat 提出轻量级的重建模型,能快速生成多视图高斯点阵网格,用于可扩展的数据集构建。
- 3D 渲染损失:DiffSplat 引入了 3D 渲染损失,确保生成的 3D 内容在任意视图下都能保持一致性。
如何运行 DiffSplat
1. 安装环境
首先,克隆仓库并安装依赖项:
git clone https://github.com/chenguolin/DiffSplat.git
cd DiffSplat
bash settings/setup.sh
2. 下载预训练模型
下载预训练模型并存储在 ./out
目录中。其他预训练模型将自动下载并存储在 HuggingFace 缓存目录中。
python3 download_ckpt.py --model_type [MODEL_TYPE] [--image_cond]
例如,下载 text-cond SD1.5-based DiffSplat
模型:
python3 download_ckpt.py --model_type sd15
3. 文本条件 3D 对象生成
使用以下命令进行文本条件 3D 对象生成:
bash scripts/infer.sh src/infer_gsdiff_sd.py configs/gsdiff_sd15.yaml gsdiff_gobj83k_sd15__render \
--prompt a_toy_robot --output_video_type gif \
--gpu_id 0 --seed 0
4. 图像条件 3D 对象生成
使用以下命令进行图像条件 3D 对象生成:
bash scripts/infer.sh src/infer_gsdiff_sd.py configs/gsdiff_sd15.yaml gsdiff_gobj83k_sd15_image__render \
--rembg_and_center --triangle_cfg_scaling --output_video_type gif --guidance_scale 2 \
--image_path assets/grm/frog.png --elevation 20 --prompt a_frog
5. 使用 ControlNet 进行 3D 对象生成
使用以下命令进行基于 ControlNet 的 3D 对象生成:
bash scripts/infer.sh src/infer_gsdiff_sd.py configs/gsdiff_sd15.yaml gsdiff_gobj83k_sd15__render \
--load_pretrained_controlnet gsdiff_gobj83k_sd15__render__depth \
--output_video_type gif --image_path assets/diffsplat/controlnet/toy_depth.png \
--prompt teddy_bear --elevation 10
资源
- 项目官网:https://chenguolin.github.io/projects/DiffSplat/
- GitHub 仓库:https://github.com/chenguolin/DiffSplat
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 微信公众号|搜一搜:蚝油菜花 🥦