sjc

GitHub
524 14 较难 1 次阅读 4天前NOASSERTION图像其他
AI 解读 由 AI 自动生成,仅供参考

sjc(Score Jacobian Chaining)是一项源自 CVPR 2023 的开源技术,旨在利用现有的 2D 扩散模型(如 Stable Diffusion)直接生成高质量的 3D 内容。它主要解决了传统方法难以将强大的 2D 图像生成能力有效迁移到 3D 领域,以及在此过程中出现的分布不匹配难题。

其核心亮点在于独特的“分数雅可比链式法则”:通过可微渲染器的雅可比矩阵,将 2D 扩散模型学到的梯度反向传播至 3D 体素辐射场。这种方法能够聚合多个相机视角下的 2D 评分,从而构建出一致的 3D 评分函数,无需从头训练庞大的 3D 数据集即可实现“文生 3D"。此外,项目还集成了亚像素渲染脚本,显著提升了最终输出的视觉质量并减少了画面抖动。

sjc 非常适合 AI 研究人员、计算机图形学开发者以及希望探索前沿 3D 生成流程的设计师使用。目前,该技术已集成至 threestudio 框架,并提供了 Colab 笔记本和 Hugging Face 在线演示,降低了实验门槛。需要注意的是,由于基于 Stable Diffusion,使用时需遵循 OpenRAIL 许可协议。对于想要快速验证 2D 先验知识在 3D 生成中潜力的专业人士而言,sjc 是一个极具参考价值的工具。

使用场景

一家独立游戏工作室的美术设计师需要快速为原型关卡生成风格统一的 3D 道具资产,但团队缺乏专业的 3D 建模师和昂贵的扫描设备。

没有 sjc 时

  • 高昂的时间成本:设计师必须手动在 Blender 中从零建模、展 UV 并绘制贴图,单个复杂道具耗时数天。
  • 风格难以统一:不同成员制作的资产画风割裂,难以完美匹配概念图中由 Stable Diffusion 生成的独特 2D 艺术风格。
  • 多视角一致性差:尝试用传统方法从单张概念图推断 3D 结构时,常出现背面扭曲、纹理模糊或几何结构崩坏的问题。
  • 技术门槛过高:若要利用最新的扩散模型技术,需自行推导复杂的梯度反向传播算法,普通美术人员无法上手。

使用 sjc 后

  • 自动化生成流程:只需输入一句文本提示或一张参考图,sjc 即可利用预训练的 2D 扩散模型自动“生长”出完整的 3D 体素辐射场。
  • 完美风格迁移:通过链式法则将 2D 模型的审美能力直接注入 3D 生成过程,确保产出资产与概念图的艺术风格高度一致。
  • 高质量多视角合成:sjc 特有的分数雅可比链式机制能有效聚合多个相机视角的 2D 评分,解决了分布不匹配难题,生成几何结构合理且无伪影的 3D 模型。
  • 开箱即用的集成:直接调用集成在 threestudio 中的 sjc 模块或 Hugging Face 演示,无需深究底层数学原理,几分钟即可获得可旋转查看的高清 3D 资产。

sjc 的核心价值在于打破了 2D 生成式 AI 与 3D 内容创作之间的壁垒,让开发者能以极低的成本将海量预训练 2D 模型的知识直接转化为高质量的 3D 资产。

运行环境要求

操作系统
  • Linux
GPU
  • 必需 NVIDIA GPU
  • 示例中提到在单张 A5000 (24GB 显存) 上运行,优化过程需约 10GB 显存,高分辨率可视化需约 11GB 显存
  • 安装说明中示例命令指向 CUDA 11.6 (cu116)
内存

未说明

依赖
notes1. 需手动克隆并安装 'taming-transformers' 库。2. 需下载约 12GB 的模型检查点文件(包含 Stable Diffusion v1.5 等),并配置 env.json 指向该路径。3. 建议在独立的实验目录(如 exp/)下运行,以避免日志文件污染代码库。4. 默认种子硬编码为 0。5. 若使用 DreamBooth 微调模型,建议降低 guidance scale (如 50.0) 以避免多脸问题。
python未说明
torch
torchvision
torchaudio
taming-transformers
sjc hero image

快速开始

分数雅可比链:将预训练的2D扩散模型提升用于3D生成

Haochen Wang*Xiaodan Du*Jiahao Li*Raymond A. Yeh†Greg Shakhnarovich (* 表示共同第一作者)

TTI-芝加哥,†普渡大学

摘要:扩散模型学习预测梯度场。我们提出对学习到的梯度应用链式法则,并通过可微渲染器的雅可比矩阵反向传播扩散模型的分数,这里我们将该渲染器实例化为体素辐射场。这种设置可以将多个相机视角下的2D分数聚合为3D分数,从而重新利用预训练的2D模型进行3D数据生成。我们识别出在这种应用中出现的分布不匹配这一技术挑战,并提出了一种新颖的估计机制来解决它。我们在几款现成的扩散图像生成模型上运行了我们的算法,其中包括最近发布的、基于大规模LAION数据集训练的Stable Diffusion。

非常感谢dvschultz提供的Colab笔记本,以及AmanKishore提供的Hugging Face演示。

SJC现在也已集成到threestudio中。

更新

  • 我们添加了用于最终高质量可视化的亚像素渲染脚本。您之前可能看到的抖动视频现在应该会好很多。请在训练完成后,在实验文件夹中运行python /path/to/sjc/highres_final_vis.py。脚本中有一些可调节的选项,但默认设置即可。在A5000显卡上大约需要5分钟和11GB显存,额外的时间主要来自SD解码器。
  • 如果您使用DreamBooth微调后的模型运行SJC:该模型的输出分布已经显著收窄。此时可以尝试使用较低的引导尺度,例如--sd.scale 50.0。强烈的模式寻找是导致多脸问题的原因之一。我们内部尝试过结合视图相关提示进行DreamBooth微调,但总体而言,DreamBooth的集成尚未成熟。

待办事项

  • 使种子可配置。目前所有种子都硬编码为0。
  • 添加脚本以复现图4中的2D实验。一旦与种子绑定,这张图可能需要调整。需要注意的是,对于人脸这样简单的对齐领域,仅使用单一σ=1.5的简单调度就能生成一些不错的图像。但对于卧室场景则不然;其多样性太大,似乎仍然需要退火过程。
  • 主论文中的图片未使用亚像素渲染;附录中的图片则使用了。应替换主论文中的图片,使其保持一致。

许可证

由于我们使用了Stable Diffusion,因此我们根据其OpenRAIL许可证发布。除此之外,我们并未发现任何组件或上游代码带有限制性许可要求。

结构

除了SJC之外,该仓库还包含Karras采样器的实现,以及一个定制的简单体素NeRF。我们提供了基于Karras等人工作的抽象父类,并在此包含了若干种扩散模型的实现。详情请参见adapt.py。

安装

根据您的CUDA版本安装PyTorch,例如:

pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116

使用pip install -r requirements.txt安装其他依赖项。

手动安装taming-transformers

git clone --depth 1 git@github.com:CompVis/taming-transformers.git && pip install -e taming-transformers

下载检查点

我们已将您需要下载的最小集合(SD v1.5检查点、LSUN和FFHQ的gddpm检查点)打包在一个tar文件中,并在我们的下载服务器这里提供下载。这是一个12GB的单个文件,您可以使用wget或curl下载。

请务必__更新__env.json,使其指向您解压文件后的新检查点根目录。

使用方法

创建一个新的目录来运行实验(该脚本会生成大量日志文件。请勿在代码仓库的根目录下运行,以免污染。)

mkdir exp
cd exp

运行以下命令以生成一个新的3D资产。在单个A5000显卡上,优化10000步大约需要25分钟和10GB显存。

python /path/to/sjc/run_sjc.py \
--sd.prompt "天坛的高分辨率远景照片" \
--n_steps 10000 \
--lr 0.05 \
--sd.scale 100.0 \
--emptiness_weight 10000 \
--emptiness_step 0.5 \
--emptiness_multiplier 20.0 \
--depth_weight 0 \
--var_red False

sd.prompt是传递给稳定扩散模型的提示词

n_steps是梯度迭代次数

lr是优化器的基础学习率

sd.scale是稳定扩散的引导尺度

emptiness_weight是空洞损失的权重因子

emptiness_step表示在经过emptiness_step * n_steps次更新后,emptiness_weight将乘以emptiness_multiplier

emptiness_multipler如上所述

depth_weight是中心深度损失的权重因子

var_red表示是否使用公式16还是公式15。对于某些提示词,比如奥巴马,我们实际上发现使用公式15的效果更好。

可视化结果存储在当前目录中。在名为test_*的目录下,分别存放不同迭代步骤生成的图像(位于view文件夹)和视频(位于view_seq文件夹)。

复现论文中的结果

首先为您的实验创建一个干净的目录,然后从该目录运行以下脚本之一:

特朗普

python /path/to/sjc/run_sjc.py --sd.prompt "特朗普雕像" --n_steps 30000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0

奥巴马

python /path/to/sjc/run_sjc.py --sd.prompt "奥巴马人物" --n_steps 30000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0 --var_red False

拜登

python /path/to/sjc/run_sjc.py --sd.prompt "拜登人物" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0

天坛

python /path/to/sjc/run_sjc.py --sd.prompt "天坛的高画质远景照片" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0

汉堡

python /path/to/sjc/run_sjc.py --sd.prompt "美味汉堡的高画质照片" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0

冰淇淋

python /path/to/sjc/run_sjc.py --sd.prompt "巧克力冰淇淋甜筒的高画质照片" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 10

榕树

python /path/to/sjc/run_sjc.py --sd.prompt "盆栽榕树" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 100

城堡

python /path/to/sjc/run_sjc.py --sd.prompt "小型城堡的远景照片" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 50

悉尼歌剧院

python /path/to/sjc/run_sjc.py --sd.prompt "悉尼歌剧院的高画质远景照片" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0

玫瑰

python /path/to/sjc/run_sjc.py --sd.prompt "单反相机拍摄的玫瑰照片" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 50

校车

python /path/to/sjc/run_sjc.py --sd.prompt "黄色校车的高画质照片" --n_steps 30000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0 --var_red False

火箭

python /path/to/sjc/run_sjc.py --sd.prompt "从远处拍摄的土星五号火箭广角远景照片" --n_steps 30000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0 --var_red False

薯条

python /path/to/sjc/run_sjc.py --sd.prompt "麦当劳薯条的高画质照片" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 10

摩托车

python /path/to/sjc/run_sjc.py --sd.prompt "玩具摩托车的高画质照片" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0

汽车

python /path/to/sjc/run_sjc.py --sd.prompt "经典银色肌肉车的高画质照片" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0

坦克

python /path/to/sjc/run_sjc.py --sd.prompt "玩具坦克的产品照片" --n_steps 20000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0

椅子

python /path/to/sjc/run_sjc.py --sd.prompt "维多利亚风格木制天鹅绒软垫椅的高画质照片" --n_steps 50000 --lr 0.01 --sd.scale 100.0 --emptiness_weight 7000

鸭子

python /path/to/sjc/run_sjc.py --sd.prompt "单反相机拍摄的黄鸭照片" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 10

python /path/to/sjc/run_sjc.py --sd.prompt "一匹马在行走的照片" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0

长颈鹿

python /path/to/sjc/run_sjc.py --sd.prompt "长颈鹿的广角远景照片" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 50

斑马

python /path/to/sjc/run_sjc.py --sd.prompt "斑马在行走的照片" --n_steps 10000 --lr 0.02 --sd.scale 100.0 --emptiness_weight 30000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0 --var_red False

打印机

python /path/to/sjc/run_sjc.py --sd.prompt "佳能家用打印机的产品照片" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0 --var_red False

塞尔达·林克

python /path/to/sjc/run_sjc.py --sd.prompt "塞尔达·林克" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0 --var_red False

python /path/to/sjc/run_sjc.py --sd.prompt "一头猪" --n_steps 10000 --lr 0.05 --sd.scale 100.0 --emptiness_weight 10000 --emptiness_step 0.5 --emptiness_multiplier 20.0 --depth_weight 0

测试体素NeRF

python /path/to/sjc/run_nerf.py

我们的压缩包中包含乐高推土机数据集的tar文件。解压后即可使用。

使用Karras采样器生成2D图像

python /path/to/sjc/run_img_sampling.py

使用-h选项查看可用参数。详细信息将在后续补充。

参考文献

@article{sjc,
      title={Score Jacobian Chaining: Lifting Pretrained 2D Diffusion Models for 3D Generation},
      author={Wang, Haochen and Du, Xiaodan and Li, Jiahao and Yeh, Raymond A. and Shakhnarovich, Greg},
      journal={arXiv preprint arXiv:2212.00774},
      year={2022},
}

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|5天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|6天前
插件Agent图像

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|1周前
语言模型图像Agent

Deep-Live-Cam

Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。

88.9k|★★★☆☆|1周前
开发框架图像Agent