Diffusers BOINC AI docs
  • 🌍GET STARTED
    • Diffusers
    • Quicktour
    • Effective and efficient diffusion
    • Installation
  • 🌍TUTORIALS
    • Overview
    • Understanding models and schedulers
    • AutoPipeline
    • Train a diffusion model
  • 🌍USING DIFFUSERS
    • 🌍LOADING & HUB
      • Overview
      • Load pipelines, models, and schedulers
      • Load and compare different schedulers
      • Load community pipelines
      • Load safetensors
      • Load different Stable Diffusion formats
      • Push files to the Hub
    • 🌍TASKS
      • Unconditional image generation
      • Text-to-image
      • Image-to-image
      • Inpainting
      • Depth-to-image
    • 🌍TECHNIQUES
      • Textual inversion
      • Distributed inference with multiple GPUs
      • Improve image quality with deterministic generation
      • Control image brightness
      • Prompt weighting
    • 🌍PIPELINES FOR INFERENCE
      • Overview
      • Stable Diffusion XL
      • ControlNet
      • Shap-E
      • DiffEdit
      • Distilled Stable Diffusion inference
      • Create reproducible pipelines
      • Community pipelines
      • How to contribute a community pipeline
    • 🌍TRAINING
      • Overview
      • Create a dataset for training
      • Adapt a model to a new task
      • Unconditional image generation
      • Textual Inversion
      • DreamBooth
      • Text-to-image
      • Low-Rank Adaptation of Large Language Models (LoRA)
      • ControlNet
      • InstructPix2Pix Training
      • Custom Diffusion
      • T2I-Adapters
    • 🌍TAKING DIFFUSERS BEYOND IMAGES
      • Other Modalities
  • 🌍OPTIMIZATION/SPECIAL HARDWARE
    • Overview
    • Memory and Speed
    • Torch2.0 support
    • Stable Diffusion in JAX/Flax
    • xFormers
    • ONNX
    • OpenVINO
    • Core ML
    • MPS
    • Habana Gaudi
    • Token Merging
  • 🌍CONCEPTUAL GUIDES
    • Philosophy
    • Controlled generation
    • How to contribute?
    • Diffusers' Ethical Guidelines
    • Evaluating Diffusion Models
  • 🌍API
    • 🌍MAIN CLASSES
      • Attention Processor
      • Diffusion Pipeline
      • Logging
      • Configuration
      • Outputs
      • Loaders
      • Utilities
      • VAE Image Processor
    • 🌍MODELS
      • Overview
      • UNet1DModel
      • UNet2DModel
      • UNet2DConditionModel
      • UNet3DConditionModel
      • VQModel
      • AutoencoderKL
      • AsymmetricAutoencoderKL
      • Tiny AutoEncoder
      • Transformer2D
      • Transformer Temporal
      • Prior Transformer
      • ControlNet
    • 🌍PIPELINES
      • Overview
      • AltDiffusion
      • Attend-and-Excite
      • Audio Diffusion
      • AudioLDM
      • AudioLDM 2
      • AutoPipeline
      • Consistency Models
      • ControlNet
      • ControlNet with Stable Diffusion XL
      • Cycle Diffusion
      • Dance Diffusion
      • DDIM
      • DDPM
      • DeepFloyd IF
      • DiffEdit
      • DiT
      • IF
      • PaInstructPix2Pix
      • Kandinsky
      • Kandinsky 2.2
      • Latent Diffusionge
      • MultiDiffusion
      • MusicLDM
      • PaintByExample
      • Parallel Sampling of Diffusion Models
      • Pix2Pix Zero
      • PNDM
      • RePaint
      • Score SDE VE
      • Self-Attention Guidance
      • Semantic Guidance
      • Shap-E
      • Spectrogram Diffusion
      • 🌍STABLE DIFFUSION
        • Overview
        • Text-to-image
        • Image-to-image
        • Inpainting
        • Depth-to-image
        • Image variation
        • Safe Stable Diffusion
        • Stable Diffusion 2
        • Stable Diffusion XL
        • Latent upscaler
        • Super-resolution
        • LDM3D Text-to-(RGB, Depth)
        • Stable Diffusion T2I-adapter
        • GLIGEN (Grounded Language-to-Image Generation)
      • Stable unCLIP
      • Stochastic Karras VE
      • Text-to-image model editing
      • Text-to-video
      • Text2Video-Zero
      • UnCLIP
      • Unconditional Latent Diffusion
      • UniDiffuser
      • Value-guided sampling
      • Versatile Diffusion
      • VQ Diffusion
      • Wuerstchen
    • 🌍SCHEDULERS
      • Overview
      • CMStochasticIterativeScheduler
      • DDIMInverseScheduler
      • DDIMScheduler
      • DDPMScheduler
      • DEISMultistepScheduler
      • DPMSolverMultistepInverse
      • DPMSolverMultistepScheduler
      • DPMSolverSDEScheduler
      • DPMSolverSinglestepScheduler
      • EulerAncestralDiscreteScheduler
      • EulerDiscreteScheduler
      • HeunDiscreteScheduler
      • IPNDMScheduler
      • KarrasVeScheduler
      • KDPM2AncestralDiscreteScheduler
      • KDPM2DiscreteScheduler
      • LMSDiscreteScheduler
      • PNDMScheduler
      • RePaintScheduler
      • ScoreSdeVeScheduler
      • ScoreSdeVpScheduler
      • UniPCMultistepScheduler
      • VQDiffusionScheduler
Powered by GitBook
On this page
  • Depth-to-image
  • StableDiffusionDepth2ImgPipeline
  • StableDiffusionPipelineOutput
  1. API
  2. PIPELINES
  3. STABLE DIFFUSION

Depth-to-image

PreviousInpaintingNextImage variation

Last updated 1 year ago

Depth-to-image

The Stable Diffusion model can also infer depth based on an image using . This allows you to pass a text prompt and an initial image to condition the generation of new images as well as a depth_map to preserve the image structure.

Make sure to check out the Stable Diffusion section to learn how to explore the tradeoff between scheduler speed and quality, and how to reuse pipeline components efficiently!

If you’re interested in using one of the official checkpoints for a task, explore the , , and Hub organizations!

StableDiffusionDepth2ImgPipeline

class diffusers.StableDiffusionDepth2ImgPipeline

( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersdepth_estimator: DPTForDepthEstimationfeature_extractor: DPTFeatureExtractor )

Parameters

  • vae () β€” Variational Auto-Encoder (VAE) model to encode and decode images to and from latent representations.

  • text_encoder (CLIPTextModel) β€” Frozen text-encoder ().

  • tokenizer (CLIPTokenizer) β€” A CLIPTokenizer to tokenize text.

  • unet () β€” A UNet2DConditionModel to denoise the encoded image latents.

  • scheduler () β€” A scheduler to be used in combination with unet to denoise the encoded image latents. Can be one of , , or .

Pipeline for text-guided depth-based image-to-image generation using Stable Diffusion.

The pipeline also inherits the following loading methods:

__call__

Parameters

  • prompt (str or List[str], optional) β€” The prompt or prompts to guide image generation. If not defined, you need to pass prompt_embeds.

  • image (torch.FloatTensor, PIL.Image.Image, np.ndarray, List[torch.FloatTensor], List[PIL.Image.Image], or List[np.ndarray]) β€” Image or tensor representing an image batch to be used as the starting point. Can accept image latents as image only if depth_map is not None.

  • depth_map (torch.FloatTensor, optional) β€” Depth prediction to be used as additional conditioning for the image generation process. If not defined, it automatically predicts the depth with self.depth_estimator.

  • strength (float, optional, defaults to 0.8) β€” Indicates extent to transform the reference image. Must be between 0 and 1. image is used as a starting point and more noise is added the higher the strength. The number of denoising steps depends on the amount of noise initially added. When strength is 1, added noise is maximum and the denoising process runs for the full number of iterations specified in num_inference_steps. A value of 1 essentially ignores image.

  • num_inference_steps (int, optional, defaults to 50) β€” The number of denoising steps. More denoising steps usually lead to a higher quality image at the expense of slower inference. This parameter is modulated by strength.

  • guidance_scale (float, optional, defaults to 7.5) β€” A higher guidance scale value encourages the model to generate images closely linked to the text prompt at the expense of lower image quality. Guidance scale is enabled when guidance_scale > 1.

  • negative_prompt (str or List[str], optional) β€” The prompt or prompts to guide what to not include in image generation. If not defined, you need to pass negative_prompt_embeds instead. Ignored when not using guidance (guidance_scale < 1).

  • num_images_per_prompt (int, optional, defaults to 1) β€” The number of images to generate per prompt.

  • prompt_embeds (torch.FloatTensor, optional) β€” Pre-generated text embeddings. Can be used to easily tweak text inputs (prompt weighting). If not provided, text embeddings are generated from the prompt input argument.

  • negative_prompt_embeds (torch.FloatTensor, optional) β€” Pre-generated negative text embeddings. Can be used to easily tweak text inputs (prompt weighting). If not provided, negative_prompt_embeds are generated from the negative_prompt input argument.

  • output_type (str, optional, defaults to "pil") β€” The output format of the generated image. Choose between PIL.Image or np.array.

  • callback (Callable, optional) β€” A function that calls every callback_steps steps during inference. The function is called with the following arguments: callback(step: int, timestep: int, latents: torch.FloatTensor).

  • callback_steps (int, optional, defaults to 1) β€” The frequency at which the callback function is called. If not specified, the callback is called at every step.

Returns

The call function to the pipeline for generation.

Examples:

Copied

>>> import torch
>>> import requests
>>> from PIL import Image

>>> from diffusers import StableDiffusionDepth2ImgPipeline

>>> pipe = StableDiffusionDepth2ImgPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-2-depth",
...     torch_dtype=torch.float16,
... )
>>> pipe.to("cuda")


>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> init_image = Image.open(requests.get(url, stream=True).raw)
>>> prompt = "two tigers"
>>> n_propmt = "bad, deformed, ugly, bad anotomy"
>>> image = pipe(prompt=prompt, image=init_image, negative_prompt=n_propmt, strength=0.7).images[0]

enable_attention_slicing

( slice_size: typing.Union[str, int, NoneType] = 'auto' )

Parameters

  • slice_size (str or int, optional, defaults to "auto") β€” When "auto", halves the input to the attention heads, so attention will be computed in two steps. If "max", maximum amount of memory will be saved by running only one slice at a time. If a number is provided, uses as many slices as attention_head_dim // slice_size. In this case, attention_head_dim must be a multiple of slice_size.

Enable sliced attention computation. When this option is enabled, the attention module splits the input tensor in slices to compute attention in several steps. For more than one attention head, the computation is performed sequentially over each head. This is useful to save some memory in exchange for a small speed decrease.

⚠️ Don’t enable attention slicing if you’re already using scaled_dot_product_attention (SDPA) from PyTorch 2.0 or xFormers. These attention computations are already very memory efficient so you won’t need to enable this function. If you enable attention slicing with SDPA or xFormers, it can lead to serious slow downs!

Examples:

Copied

>>> import torch
>>> from diffusers import StableDiffusionPipeline

>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "runwayml/stable-diffusion-v1-5",
...     torch_dtype=torch.float16,
...     use_safetensors=True,
... )

>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]

disable_attention_slicing

( )

Disable sliced attention computation. If enable_attention_slicing was previously called, attention is computed in one step.

enable_xformers_memory_efficient_attention

( attention_op: typing.Optional[typing.Callable] = None )

Parameters

⚠️ When memory efficient attention and sliced attention are both enabled, memory efficient attention takes precedent.

Examples:

Copied

>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp

>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", torch_dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)

disable_xformers_memory_efficient_attention

( )

load_textual_inversion

( pretrained_model_name_or_path: typing.Union[str, typing.List[str], typing.Dict[str, torch.Tensor], typing.List[typing.Dict[str, torch.Tensor]]]token: typing.Union[str, typing.List[str], NoneType] = Nonetokenizer: typing.Optional[transformers.tokenization_utils.PreTrainedTokenizer] = Nonetext_encoder: typing.Optional[transformers.modeling_utils.PreTrainedModel] = None**kwargs )

Parameters

  • pretrained_model_name_or_path (str or os.PathLike or List[str or os.PathLike] or Dict or List[Dict]) β€” Can be either one of the following or a list of them:

    • A string, the model id (for example sd-concepts-library/low-poly-hd-logos-icons) of a pretrained model hosted on the Hub.

    • A path to a directory (for example ./my_text_inversion_directory/) containing the textual inversion weights.

    • A path to a file (for example ./my_text_inversions.pt) containing textual inversion weights.

  • token (str or List[str], optional) β€” Override the token to use for the textual inversion weights. If pretrained_model_name_or_path is a list, then token must also be a list of equal length.

  • tokenizer (CLIPTokenizer, optional) β€” A CLIPTokenizer to tokenize text. If not specified, function will take self.tokenizer.

  • weight_name (str, optional) β€” Name of a custom weight file. This should be used when:

    • The saved textual inversion file is in 🌍 Diffusers format, but was saved under a specific weight name such as text_inv.bin.

    • The saved textual inversion file is in the Automatic1111 format.

  • cache_dir (Union[str, os.PathLike], optional) β€” Path to a directory where a downloaded pretrained model configuration is cached if the standard cache is not used.

  • force_download (bool, optional, defaults to False) β€” Whether or not to force the (re-)download of the model weights and configuration files, overriding the cached versions if they exist.

  • resume_download (bool, optional, defaults to False) β€” Whether or not to resume downloading the model weights and configuration files. If set to False, any incompletely downloaded files are deleted.

  • proxies (Dict[str, str], optional) β€” A dictionary of proxy servers to use by protocol or endpoint, for example, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. The proxies are used on each request.

  • local_files_only (bool, optional, defaults to False) β€” Whether to only load local model weights and configuration files or not. If set to True, the model won’t be downloaded from the Hub.

  • use_auth_token (str or bool, optional) β€” The token to use as HTTP bearer authorization for remote files. If True, the token generated from diffusers-cli login (stored in ~/.boincai) is used.

  • revision (str, optional, defaults to "main") β€” The specific model version to use. It can be a branch name, a tag name, a commit id, or any identifier allowed by Git.

  • subfolder (str, optional, defaults to "") β€” The subfolder location of a model file within a larger model repository on the Hub or locally.

  • mirror (str, optional) β€” Mirror source to resolve accessibility issues if you’re downloading a model in China. We do not guarantee the timeliness or safety of the source, and you should refer to the mirror site for more information.

Example:

To load a textual inversion embedding vector in 🌍 Diffusers format:

Copied

from diffusers import StableDiffusionPipeline
import torch

model_id = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")

pipe.load_textual_inversion("sd-concepts-library/cat-toy")

prompt = "A <cat-toy> backpack"

image = pipe(prompt, num_inference_steps=50).images[0]
image.save("cat-backpack.png")

locally:

Copied

from diffusers import StableDiffusionPipeline
import torch

model_id = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")

pipe.load_textual_inversion("./charturnerv2.pt", token="charturnerv2")

prompt = "charturnerv2, multiple views of the same character in the same outfit, a character turnaround of a woman wearing a black jacket and red shirt, best quality, intricate details."

image = pipe(prompt, num_inference_steps=50).images[0]
image.save("character.png")

load_lora_weights

( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]]**kwargs )

Parameters

Load LoRA weights specified in pretrained_model_name_or_path_or_dict into self.unet and self.text_encoder.

All kwargs are forwarded to self.lora_state_dict.

save_lora_weights

( save_directory: typing.Union[str, os.PathLike]unet_lora_layers: typing.Dict[str, typing.Union[torch.nn.modules.module.Module, torch.Tensor]] = Nonetext_encoder_lora_layers: typing.Dict[str, torch.nn.modules.module.Module] = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = True )

Parameters

  • save_directory (str or os.PathLike) β€” Directory to save LoRA parameters to. Will be created if it doesn’t exist.

  • unet_lora_layers (Dict[str, torch.nn.Module] or Dict[str, torch.Tensor]) β€” State dict of the LoRA layers corresponding to the unet.

  • text_encoder_lora_layers (Dict[str, torch.nn.Module] or Dict[str, torch.Tensor]) β€” State dict of the LoRA layers corresponding to the text_encoder. Must explicitly pass the text encoder LoRA state dict because it comes from 🌍 Transformers.

  • is_main_process (bool, optional, defaults to True) β€” Whether the process calling this is the main process or not. Useful during distributed training and you need to call this function on all processes. In this case, set is_main_process=True only on the main process to avoid race conditions.

  • save_function (Callable) β€” The function to use to save the state dictionary. Useful during distributed training when you need to replace torch.save with another method. Can be configured with the environment variable DIFFUSERS_SAVE_MODE.

  • safe_serialization (bool, optional, defaults to True) β€” Whether to save the model using safetensors or the traditional PyTorch way with pickle.

Save the LoRA parameters corresponding to the UNet and text encoder.

encode_prompt

( promptdevicenum_images_per_promptdo_classifier_free_guidancenegative_prompt = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Nonelora_scale: typing.Optional[float] = None )

Parameters

  • prompt (str or List[str], optional) β€” prompt to be encoded device β€” (torch.device): torch device

  • num_images_per_prompt (int) β€” number of images that should be generated per prompt

  • do_classifier_free_guidance (bool) β€” whether to use classifier free guidance or not

  • negative_prompt (str or List[str], optional) β€” The prompt or prompts not to guide the image generation. If not defined, one has to pass negative_prompt_embeds instead. Ignored when not using guidance (i.e., ignored if guidance_scale is less than 1).

  • prompt_embeds (torch.FloatTensor, optional) β€” Pre-generated text embeddings. Can be used to easily tweak text inputs, e.g. prompt weighting. If not provided, text embeddings will be generated from prompt input argument.

  • negative_prompt_embeds (torch.FloatTensor, optional) β€” Pre-generated negative text embeddings. Can be used to easily tweak text inputs, e.g. prompt weighting. If not provided, negative_prompt_embeds will be generated from negative_prompt input argument.

  • lora_scale (float, optional) β€” A lora scale that will be applied to all LoRA layers of the text encoder if LoRA layers are loaded.

Encodes the prompt into text encoder hidden states.

StableDiffusionPipelineOutput

class diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput

( images: typing.Union[typing.List[PIL.Image.Image], numpy.ndarray]nsfw_content_detected: typing.Optional[typing.List[bool]] )

Parameters

  • images (List[PIL.Image.Image] or np.ndarray) β€” List of denoised PIL images of length batch_size or NumPy array of shape (batch_size, height, width, num_channels).

  • nsfw_content_detected (List[bool]) β€” List indicating whether the corresponding generated image contains β€œnot-safe-for-work” (nsfw) content or None if safety checking could not be performed.

Output class for Stable Diffusion pipelines.

This model inherits from . Check the superclass documentation for the generic methods implemented for all pipelines (downloading, saving, running on a particular device, etc.).

for loading textual inversion embeddings

for loading LoRA weights

for saving LoRA weights

( prompt: typing.Union[str, typing.List[str]] = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.FloatTensor, typing.List[PIL.Image.Image], typing.List[numpy.ndarray], typing.List[torch.FloatTensor]] = Nonedepth_map: typing.Optional[torch.FloatTensor] = Nonestrength: float = 0.8num_inference_steps: typing.Optional[int] = 50guidance_scale: typing.Optional[float] = 7.5negative_prompt: typing.Union[str, typing.List[str], NoneType] = Nonenum_images_per_prompt: typing.Optional[int] = 1eta: typing.Optional[float] = 0.0generator: typing.Union[torch._C.Generator, typing.List[torch._C.Generator], NoneType] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneoutput_type: typing.Optional[str] = 'pil'return_dict: bool = Truecallback: typing.Union[typing.Callable[[int, int, torch.FloatTensor], NoneType], NoneType] = Nonecallback_steps: int = 1cross_attention_kwargs: typing.Union[typing.Dict[str, typing.Any], NoneType] = None ) β†’ or tuple

eta (float, optional, defaults to 0.0) β€” Corresponds to parameter eta (Ξ·) from the paper. Only applies to the , and is ignored in other schedulers.

generator (torch.Generator or List[torch.Generator], optional) β€” A to make generation deterministic.

return_dict (bool, optional, defaults to True) β€” Whether or not to return a instead of a plain tuple.

cross_attention_kwargs (dict, optional) β€” A kwargs dictionary that if specified is passed along to the AttentionProcessor as defined in .

or tuple

If return_dict is True, is returned, otherwise a tuple is returned where the first element is a list with the generated images.

attention_op (Callable, optional) β€” Override the default None operator for use as op argument to the function of xFormers.

Enable memory efficient attention from . When this option is enabled, you should observe lower GPU memory usage and a potential speed up during inference. Speed up during training is not guaranteed.

Disable memory efficient attention from .

A .

text_encoder (CLIPTextModel, optional) β€” Frozen text-encoder (). If not specified, function will take self.tokenizer.

Load textual inversion embeddings into the text encoder of (both 🌍 Diffusers and Automatic1111 formats are supported).

To load a textual inversion embedding vector in Automatic1111 format, make sure to download the vector first (for example from ) and then load the vector

pretrained_model_name_or_path_or_dict (str or os.PathLike or dict) β€” See .

kwargs (dict, optional) β€” See .

See for more details on how the state dict is loaded.

See for more details on how the state dict is loaded into self.unet.

See for more details on how the state dict is loaded into self.text_encoder.

🌍
🌍
🌍
MiDas
Tips
CompVis
Runway
Stability AI
<source>
AutoencoderKL
clip-vit-large-patch14
UNet2DConditionModel
SchedulerMixin
DDIMScheduler
LMSDiscreteScheduler
PNDMScheduler
DiffusionPipeline
load_textual_inversion()
load_lora_weights()
save_lora_weights()
<source>
StableDiffusionPipelineOutput
DDIM
DDIMScheduler
torch.Generator
StableDiffusionPipelineOutput
self.processor
StableDiffusionPipelineOutput
StableDiffusionPipelineOutput
<source>
<source>
<source>
memory_efficient_attention()
xFormers
<source>
xFormers
<source>
torch state dict
clip-vit-large-patch14
StableDiffusionPipeline
civitAI
<source>
lora_state_dict()
lora_state_dict()
lora_state_dict()
load_lora_into_unet()
load_lora_into_text_encoder()
<source>
<source>
<source>