DreamFusion: Text-to-3D using 2D Diffusion

Ben Poole
Google Research
Ajay Jain
UC Berkeley
Jonathan T. Barron
Google Research
Ben Mildenhall
Google Research
Paper Project Gallery

Abstract

Recent breakthroughs in text-to-image synthesis have been driven by diffusion models trained on billions of image-text pairs. Adapting this approach to 3D synthesis would require large-scale datasets of labeled 3D assets and efficient architectures for denoising 3D data, neither of which currently exist. In this work, we circumvent these limitations by using a pretrained 2D text-to-image diffusion model to perform text-to-3D synthesis. We introduce a loss based on probability density distillation that enables the use of a 2D diffusion model as a prior for optimization of a parametric image generator. Using this loss in a DeepDream-like procedure, we optimize a randomly-initialized 3D model (a Neural Radiance Field, or NeRF) via gradient descent such that its 2D renderings from random angles achieve a low loss. The resulting 3D model of the given text can be viewed from any angle, relit by arbitrary illumination, or composited into any 3D environment. Our approach requires no 3D training data and no modifications to the image diffusion model, demonstrating the effectiveness of pretrained image diffusion models as priors.

Given a caption, DreamFusion generates relightable 3D objects with high-fidelity appearance, depth, and normals. Objects are represented as a Neural Radiance Field and leverage a pretrained text-to-image diffusion prior such as Imagen.

Generate 3D from text yourself!

a DSLR photo of a squirrelan intricate wooden carving of a squirrela highly detailed metal sculpture of a squirrel

[...]wearing a kimonowearing a medieval suit of armorwearing a purple hoodiewearing an elegant ballgown

[...]reading a bookriding a motorcycleplaying the saxophonechopping vegetablessitting at a pottery wheel shaping a clay bowlriding a skateboardwielding a katanaeating a hamburgerdancing


Example generated objects

DreamFusion generates objects and scenes from diverse captions. Search through hundreds of generated assets in our full gallery.

Coffee cup with many holes
[...] a squirrel in samurai armor wielding a katana
a capybara wearing a top hat, low poly

Composing objects into a scene


Mesh exports

Our generated NeRF models can be exported to meshes using the marching cubes algorithm for easy integration into 3D renderers or modeling software.

[...] frog wearing a sweater

[...] eggshell broken in two with an adorable chick standing next to it

[...] ghost eating a hamburger

a pig wearing a backpack

a bald eagle carved out of wood

a crab, low poly

a lemur taking notes in a journal

a plush toy of a corgi nurse


How does DreamFusion work?

Given a caption, DreamFusion uses a text-to-image generative model called Imagen to optimize a 3D scene. We propose Score Distillation Sampling (SDS), a way to generate samples from a diffusion model by optimizing a loss function. SDS allows us to optimize samples in an arbitrary parameter space, such as a 3D space, as long as we can map back to images differentiably. We use a 3D scene parameterization similar to Neural Radiance Fields, or NeRFs, to define this differentiable mapping. SDS alone produces reasonable scene appearance, but DreamFusion adds additional regularizers and optimization strategies to improve geometry. The resulting trained NeRFs are coherent, with high-quality normals, surface geometry and depth, and are relightable with a Lambertian shading model.


Citation

@article{poole2022dreamfusion,
  author = {Poole, Ben and Jain, Ajay and Barron, Jonathan T. and Mildenhall, Ben},
  title = {DreamFusion: Text-to-3D using 2D Diffusion},
  journal = {arXiv},
  year = {2022},
}