关键想法:提出 Score Distillation Sampling (SDS)——优化一个 NeRF,让它随机视角的渲染图看起来像扩散先验的高概率样本,且不需要反传穿过 U-Net。给渲染图 加噪,问冻结的 "往哪改更像文字 ":
加的噪声 充当控制变量被减掉,剩下的就是"指向更像文字"的方向。
这是攻 痛点 (a) 数据稀缺 的第一条路:一行 3D 数据都不用, 把一个冻结的 2D 扩散模型当"评委",逐个资产优化一个 NeRF/3DGS。 四波演进:DreamFusion 开山 → VSD 修锐度 → DreamGaussian 把它搬上 3D 高斯提速 → MVDream 治 Janus。
关键想法:提出 Score Distillation Sampling (SDS)——优化一个 NeRF,让它随机视角的渲染图看起来像扩散先验的高概率样本,且不需要反传穿过 U-Net。给渲染图 加噪,问冻结的 "往哪改更像文字 ":
加的噪声 充当控制变量被减掉,剩下的就是"指向更像文字"的方向。
几乎同时,SJC(Score Jacobian Chaining, TTIC, 2212.00774)从"分数场"的视角独立推出了等价物—— 把 2D 分数沿渲染 Jacobian 链式传成 3D 分数。两篇一起钉死了这套范式的数学。
SDS 有两个臭名昭著的毛病,下面这个 demo 帮你建立直觉,后面三节都是在修它们: 过饱和/过平滑(要拿可用信号得用巨大的 guidance,把结果推向单一 mode); Janus 多面(每个视角被一个没有 3D 一致性的 2D 模型独立打分,于是每个角度都想长成正脸)。
中间是一个 3D 物体的转台视角。独立 2D 先验下,每个视角的梯度(细线)都指向"画一张正脸", 于是背面、侧面也长出了脸——这就是 Janus。 切到 多视图一致先验:只有真正的正面是脸,几何正确。这正是 §3.5 的核心修复。
SDS 减的是随机噪声 → mode-seeking → 必须用很大的 CFG → 过饱和、过平滑、缺多样性。修法的分水岭是 VSD:
关键想法:Variational Score Distillation (VSD)——把 3D 场景当成一个粒子分布,最小化它与先验的 KL。梯度里减的不再是随机噪声,而是当前渲染分布的学习到的分数 (用一个在线 LoRA 微调的扩散副本估计):
因为 跟踪"场景实际长什么样"(而非纯噪声),VSD 在正常 CFG(~7.5)下就能恢复锐利细节和多样性。SDS = VSD 退化到单粒子的特例。
同一波 loss-fix 还有一串,思路都是"把 SDS 梯度里那个有害项拆掉或改掉": NFSD(Noise-Free SD,2310.17590,去掉强迫大 CFG 的噪声项)、 CSD(Classifier SD,2310.19415,发现只留 CFG 隐式分类器项就够)、 HiFA(latent+图像双空间分数 + 时间步退火)、 DreamTime(2306.12422,单调递减的时间步调度:先大 定结构、后小 补细节)、 Consistent3D / SteinDreamer / ESD(确定性 ODE 目标 / Stein 控制变量降方差 / 补回熵项治 mode collapse)。
loss 修了,还是慢——NeRF 的 SDS 优化要几小时(痛点 d)。突破来自换表示:
关键想法:把 SDS 跑在 3D 高斯上——渐进式致密化比 NeRF 的占据剪枝收敛快得多,再抽出 mesh、在 UV 里 refine 纹理。~2 分钟出带纹理网格(~10× 提速)。
跟进的一串 text→3DGS:GSGEN(Point-E 3D 先验初始化 + 2D SDS)、 GaussianDreamer(2310.08529,Shap-E 初始化 + 2D SDS,~15 min)、 LucidDreamer(2311.11284,Interval Score Matching (ISM)——用确定性 DDIM 反演轨迹、按区间匹配分数,去掉 SDS 的平滑偏置)。 注意这是个既换表示又修 loss 的混血。
把任务从"文字→3D"换成"单图→3D":在参考视角上加重建 loss,新视角上用 SDS 幻想。 RealFusion(2302.10663,textual inversion 把先验锁到该物体)、 Make-It-3D(2303.14184,粗 NeRF → 带纹理点云)、 Magic123(2306.17843,同时用 2D 先验 Stable Diffusion + 3D 先验 Zero-1-to-3,一个旋钮平衡"想象 vs 保真")。
Janus 的病根(Demo 4):每个视角被一个没有 3D 约束的 2D 先验独立打分。三类解药,最后一类最彻底——它直接催生了下一部:
关键想法:Perp-Neg 把负向 prompt 的去噪方向投影成与主方向垂直,干净地抹掉串味的"正面"内容;Debiased-SDS 截断异常大的梯度分数 + 用 LM 消解视角 token 与 prompt 的冲突。
关键想法:把扩散模型微调成一次联合吐 4 张相互一致的视图(4 视图之间做 3D self-attention),再当 SDS 先验用。一致性烤进先验本身,Janus 从结构上被根治。ImageDream 是它的图像条件版。