Diffusers documentation

DDIM

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

DDIM

Denoising Diffusion Implicit Models (DDIM), de Jiaming Song, Chenlin Meng e Stefano Ermon.

O resumo do artigo é:

Os modelos probabilísticos de difusão de desruidamento (DDPMs) alcançaram a geração de imagens de alta qualidade sem treinamento adversarial, mas exigem a simulação de uma cadeia de Markov por muitas etapas para produzir uma amostra. Para acelerar a amostragem, apresentamos os modelos implícitos de difusão de desruidamento (DDIMs), uma classe mais eficiente de modelos probabilísticos iterativos implícitos com o mesmo procedimento de treinamento que os DDPMs. Nos DDPMs, o processo generativo é definido como o inverso de um processo de difusão markoviano. Construímos uma classe de processos de difusão não markovianos que levam ao mesmo objetivo de treinamento, mas cujo processo inverso pode ser muito mais rápido para amostrar. Demonstramos empiricamente que os DDIMs podem produzir amostras de alta qualidade de 10× a 50× mais rápido em termos de tempo real em comparação com os DDPMs, permitem-nos equilibrar o custo computacional pela qualidade da amostra e podem realizar interpolação de imagens semanticamente significativa diretamente no espaço latente.

O código original pode ser encontrado em ermongroup/ddim.

DDIMPipeline

classe diffusers.DDIMPipeline

< >

( unet: UNet2DModelscheduler: DDIMScheduler )

Parâmetros

  • unet (UNet2DModel) — Um UNet2DModel para remover o ruído dos latentes da imagem codificada.
  • scheduler (SchedulerMixin) — Um scheduler a ser usado em combinação com unet para desruidar a imagem codificada. Pode ser um de DDPMScheduler ou DDIMScheduler.

Pipeline para geração de imagens.

Este modelo herda de DiffusionPipeline. Consulte a documentação da superclasse para os métodos genéricos implementados para todos os pipelines (download, salvamento, execução em um dispositivo específico, etc.).

__call__

< >

( batch_size: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneeta: float = 0.0num_inference_steps: int = 50use_clipped_model_output: bool | None = Noneoutput_type: str | None = 'pil'return_dict: bool = True ) → ImagePipelineOutput or tuple

Parâmetros

  • batch_size (int, opcional, padrão 1) — O número de imagens a serem geradas.
  • generator (torch.Generator, opcional) — Um torch.Generator para tornar a geração determinística.
  • eta (float, opcional, padrão 0.0) — Corresponde ao parâmetro eta (η) do paper DDIM. Aplica-se apenas ao DDIMScheduler e é ignorado em outros schedulers. Um valor de 0 corresponde a DDIM e 1 corresponde a DDPM.
  • num_inference_steps (int, opcional, padrão 50) — O número de etapas de desruidamento. Mais etapas de desruidamento geralmente resultam em uma imagem de maior qualidade, à custa de uma inferência mais lenta.
  • use_clipped_model_output (bool, opcional, padrão None) — Se True ou False, consulte a documentação de DDIMScheduler.step(). Se None, nada é passado para o scheduler a jusante (use None para schedulers que não suportam este argumento).
  • output_type (str, opcional, padrão "pil") — O formato de saída da imagem gerada. Escolha entre "pil" (PIL.Image), "np" (np.array) ou "pt" (torch.Tensor).
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um ImagePipelineOutput em vez de uma tupla simples.

Retorna

ImagePipelineOutput ou tuple

Se return_dict for True, ImagePipelineOutput é retornado; caso contrário, uma tuple é retornada, onde o primeiro elemento é uma lista com as imagens geradas

A função de chamada do pipeline para geração.

Exemplo:

>>> from diffusers import DDIMPipeline
>>> import PIL.Image
>>> import numpy as np

>>> # load model and scheduler
>>> pipe = DDIMPipeline.from_pretrained("fusing/ddim-lsun-bedroom")

>>> # run pipeline in inference (sample random noise and denoise)
>>> image = pipe(eta=0.0, num_inference_steps=50)

>>> # process image to PIL
>>> image_processed = image.cpu().permute(0, 2, 3, 1)
>>> image_processed = (image_processed + 1.0) * 127.5
>>> image_processed = image_processed.numpy().astype(np.uint8)
>>> image_pil = PIL.Image.fromarray(image_processed[0])

>>> # save image
>>> image_pil.save("test.png")

ImagePipelineOutput

classe diffusers.ImagePipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarray )

Parâmetros

  • images (List[PIL.Image.Image] ou np.ndarray) — Lista de imagens PIL desruidas de comprimento batch_size ou array NumPy de forma (batch_size, height, width, num_channels).

Classe de saída para pipelines de imagem.

Update on GitHub