DreamFusion and Optimization-Based 3D
DreamFusion は、pretrained text-to-image diffusion model だけを使って、3D データなしで text-to-3D を実現した先駆的な研究です。Score Distillation Sampling (SDS) を 3D NeRF に適用することで、3D dataset への依存を取り除きました。
全体構成
- NeRF をランダム視点から render する
- Render 画像に noise を加える
- Diffusion model で score を計算する
- SDS gradient で NeRF parameter を更新する
これを多数 view で繰り返すことで、prompt に合った 3D NeRF が形成されます。
なぜ 3D データを必要としないのか
DreamFusion 以前の 3D generation は、ShapeNet のような 3D dataset で学習する必要がありました。DreamFusion は「2D diffusion が知っている世界の事前知識」を、SDS を通して 3D に蒸留することで、3D dataset への依存を切りました。
これは「foundation 2D model から foundation 3D へ」という流れを生み、その後の text-to-3D 爆発のきっかけになりました。
発展
| Model | 主な改良 |
|---|---|
| Magic3D | Coarse NeRF → fine mesh の 2-stage 最適化 |
| ProlificDreamer | Variational Score Distillation で品質と多様性を改善 |
| Fantasia3D | Geometry と appearance の disentanglement |
| Latent-NeRF | Latent diffusion 空間での SDS |
| Gaussian Dreamer / DreamGaussian | 3D 表現を 3DGS に置き換えて高速化 |
弱点
- Per-asset で最適化が必要なため遅い
- Janus problem (多方向に顔ができる)
- 細部の geometry が崩れがち
- 物理的整合性の保証はない
- 評価指標が定まりにくい
これらの問題が、後述の feed-forward な Large Reconstruction Models や Multi-View Diffusion を生む動機になりました。
数式で見る Score Distillation Sampling
DreamFusion 系では、3D representation の parameter を とし、camera view から render した画像を とします。Text-to-image diffusion model の noise prediction を とすると、SDS の勾配は概念的に次のように書けます。
ここで、 は render 画像 に noise を加えたもの、 は text prompt、 は timestep ごとの重みです。この式の気持ちは、「diffusion model がこの画像を prompt らしくするにはどちらへ denoise したいかを読み取り、その方向へ 3D 表現を動かす」というものです。
SDS は text-to-image prior を 3D optimization に持ち込める強力な方法ですが、view ごとの整合性を diffusion model が直接保証するわけではありません。そのため、Janus 問題、過飽和、過度に smooth な geometry などが起こりやすくなります。
関連ページ
- Score Distillation Sampling
- Multi-View Diffusion for 3D
- Large Reconstruction Models
- Neural 3D Reconstruction
主なソース
- DreamFusion: https://arxiv.org/abs/2209.14988
- Magic3D: https://arxiv.org/abs/2211.10440
- ProlificDreamer: https://arxiv.org/abs/2305.16213
- DreamGaussian: https://arxiv.org/abs/2309.16653