Hash3D: Training-free Acceleration for 3D Generation¶
会议: CVPR 2025
arXiv: 2404.06091
代码: https://github.com/Adamdad/hash3D (有)
领域: 3D视觉
关键词: 3D生成加速, Score Distillation, 特征复用, 哈希表, 扩散模型
一句话总结¶
Hash3D 发现 SDS 优化过程中扩散模型对相邻相机位姿和时间步的特征高度冗余,通过自适应网格哈希表缓存和复用中间特征,在无需训练的情况下将多种text-to-3D和image-to-3D方法加速1.3~4倍,同时还提升了多视角一致性。
研究背景与动机¶
-
领域现状:基于2D扩散模型的3D生成(SDS)已成为主流方法,通过在不同视角和去噪时间步上采样score function来蒸馏3D模型。
-
现有痛点:SDS需要数千到数万次迭代,每次都需要一次完整的扩散模型前向推理,单个物体生成可能需要数小时,严重限制了实际应用。
-
核心矛盾:现有的三类加速方案(训练推理模型、改进3D表示、直接生成稀疏视图)要么需要大量训练资源,要么需要对每种表示做特殊设计,要么受限于视角一致性。问题的根源——扩散模型推理次数过多——没有被直接解决。
-
本文目标 能否减少SDS中扩散模型的实际推理次数?
-
切入角度:通过实验发现,在相邻相机位姿(±10°以内)和相邻时间步上,扩散模型提取的特征(U-Net最后上采样层输入)的余弦相似度极高(>0.8)。这意味着大量推理的输出是冗余的。
-
核心 idea:用网格哈希表缓存扩散模型的中间特征,对相邻视角/时间步的新请求直接复用已有特征,避免重复推理。
方法详解¶
整体框架¶
Hash3D 是一个即插即用的模块,嵌入到任意SDS优化流程中。维护一个哈希表存储扩散模型的中间特征。每次采样新的相机位姿和时间步时,先查表:命中则复用特征跳过大部分推理,未命中则正常推理并更新表。使用自适应网格大小来平衡特征复用的准确性和效率。
关键设计¶
-
网格哈希与特征缓存:
- 功能:高效索引和复用相邻视角/时间步的扩散模型中间特征
- 核心思路:哈希键由4维构成:方位角 \(\theta\)、仰角 \(\phi\)、距离 \(\rho\) 和时间步 \(t\)。网格大小为 \(\Delta\theta, \Delta\phi, \Delta\rho, \Delta t\),通过取整运算将连续空间离散化为网格单元。哈希函数为 \(\text{idx} = (i + N_1 \cdot j + N_2 \cdot k + N_3 \cdot l) \mod n\),其中 \(N_1, N_2, N_3\) 为大素数。每个桶维护一个最大长度为3的队列存储特征。检索时用距离加权平均融合队列中的特征:\(\mathbf{v} = \sum W_i \mathbf{v}_i\),权重为 \(e^{-\|\mathbf{x}-\mathbf{x}_i\|_2^2}\) 的softmax。
- 设计动机:网格哈希天然保持了空间-时间的邻近性,相近的位姿被映射到同一桶中。队列设计保证存储的是最新数据,适应不断优化的3D表示。
-
特征复用位置选择:
- 功能:确定在U-Net的哪个位置截断推理并注入缓存特征
- 核心思路:提取U-Net最后上采样层的输入特征 \(\mathbf{v}_{l-1}^{(U)}\)。命中时,只需运行U-Net的最后一个上采样层(最浅层)来生成最终预测,跳过前面所有层的计算。哈希概率 \(\eta=0.1\) 控制检索/更新的平衡——以90%概率检索特征,10%概率正常推理并更新表。
- 设计动机:最后上采样层的输入特征融合了高层语义(来自更深层)和低层细节(来自skip连接),复用这一层的特征可以在保持输出质量的同时减少最多的计算量。
-
自适应网格大小:
- 功能:动态选择最优的网格粒度,适应不同物体和不同视角的差异
- 核心思路:同时维护 \(M=3\) 套不同网格大小的哈希表(\(\Delta\theta, \Delta\phi, \Delta t \in \{10°, 20°, 30°\}\))。每次更新时计算新特征与已有特征的余弦相似度,用指数移动平均维护每个桶的平均相似度 \(s_{\text{idx}^{(m)}} \leftarrow \gamma s + (1-\gamma)\text{cos}(\mathbf{v}_{new}, \mathbf{v}_i)\)。检索时选择平均相似度最高的网格大小。
- 设计动机:实验发现最优窗口大小因物体而异(如鬼魂适合5°但水豚不适合),固定网格大小无法兼顾所有情况。虽然维护多套哈希表看似开销大,但哈希操作本身极轻量,只存引用不存数据副本。
损失函数 / 训练策略¶
Hash3D是training-free的,不引入新的损失函数。它直接嵌入到已有SDS框架的优化循环中,只修改扩散模型的推理方式。
实验关键数据¶
主实验¶
| 方法 | 原始时间 | +Hash3D时间 | 加速比 | PSNR | CLIP-G/14 |
|---|---|---|---|---|---|
| DreamGaussian | 2min | 30s | 4.0× | 16.36(+0.15) | 0.694 |
| Zero-123(NeRF) | 20min | 7min | 3.3× | 17.96(+0.19) | 0.665 |
| Zero-123(GS) | 6min | 3min | 2.0× | 18.62(+0.21) | 0.632 |
| Magic123 | 120min | 90min | 1.3× | 18.63(-0.09) | 0.715 |
| GaussianDreamer | 15min | 10min | 1.5× | - | 0.412 |
消融实验¶
| 配置 | 加速比 | CLIP Score | 说明 |
|---|---|---|---|
| Hash3D (η=0.1, M=3) | 3.3× | 0.665 | 默认配置 |
| 固定网格 (Δ=10°) | ~2.5× | 略低 | 无自适应,较保守 |
| 固定网格 (Δ=30°) | ~4× | 明显降低 | 窗口太大产生伪影 |
| η=0.5 (50%复用) | ~2× | 0.665 | 复用率低,加速少 |
| η=0.01 (99%复用) | ~4× | 略降 | 过度复用,质量下降 |
关键发现¶
- Hash3D不仅加速,还轻微提升了渲染质量(PSNR/SSIM普遍有小幅提升),原因是特征共享增强了多视角一致性
- 特征相似度在±10°以内高于0.8,这个发现是方法成立的基础
- 与3DGS结合效果最佳:text-to-3D约10分钟,image-to-3D约30秒
- 用户研究(44人)显示Hash3D生成的3D物体视觉质量与原始方法相当甚至略优
- 理论MACs减少约8%(168.78G→154.76G),但实际加速因跳过整层推理而更大
亮点与洞察¶
- 观察驱动的设计:先发现特征冗余现象,再设计缓存策略——这种"先观察后设计"的思路比盲目优化更优雅
- 加速=提质的意外发现:特征共享无意中充当了跨视角的一致性正则化,这解释了为什么加速方法反而提高了质量
- 极强的通用性:完全即插即用,在8种不同3D生成方法上都有效,说明SDS中的特征冗余是一个普遍现象
局限与展望¶
- 对于渲染本身就很快的方法(如DreamGaussian已只需2分钟),加速的绝对时间节省有限
- 自适应网格使用暴力搜索3种预设大小,可以探索更精细的学习策略
- 仅缓存U-Net最后上采样层的输入,如果扩展到多层缓存可能获得更大加速
- 对于DiT架构的扩散模型(如Stable Diffusion 3),需要研究类似的特征冗余是否存在
相关工作与启发¶
- vs DeepCache/FORA: 2D扩散模型的特征缓存方法,Hash3D将此思路扩展到3D SDS的多视角场景
- vs DreamGaussian: DreamGaussian通过改进3D表示加速,Hash3D从扩散模型推理端加速,二者正交可叠加
- vs Instant-NGP哈希: 同样使用多分辨率哈希,但场景不同——NGP哈希空间坐标,Hash3D哈希相机位姿+时间步
评分¶
- 新颖性: ⭐⭐⭐⭐ 将特征缓存与SDS优化结合的思路新颖且直觉清晰
- 实验充分度: ⭐⭐⭐⭐⭐ 覆盖8种方法的全面验证,含用户研究和消融
- 写作质量: ⭐⭐⭐⭐ 结构清晰,实验详实
- 价值: ⭐⭐⭐⭐ 高度通用的即插即用加速方案,实践价值高
相关论文¶
- [CVPR 2026] Fast3Dcache: Training-free 3D Geometry Synthesis Acceleration
- [CVPR 2025] SfM-Free 3D Gaussian Splatting via Hierarchical Training
- [CVPR 2025] SelfSplat: Pose-Free and 3D Prior-Free Generalizable 3D Gaussian Splatting
- [CVPR 2025] CADDreamer: CAD Object Generation from Single-view Images
- [CVPR 2025] A Unified Image-Dense Annotation Generation Model for Underwater Scenes