Buckets:

mishig's picture
|
download
raw
6.2 kB

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[[diffusers.DDIMPipeline]]

diffusers.DDIMPipeline[[diffusers.DDIMPipeline]]

diffusers.DDIMPipeline(unet: UNet2DModel, scheduler: DDIMScheduler)

Fonte

Parâmetros:

unet (UNet2DModel) : Um UNet2DModel para remover o ruído dos latentes da imagem codificada.

scheduler (SchedulerMixin) : Um scheduler para 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[[diffusers.DDIMPipeline.call]]

__call__(batch_size: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, eta: float = 0.0, num_inference_steps: int = 50, use_clipped_model_output: bool | None = None, output_type: str | None = 'pil', return_dict: bool = True)

Fonte

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 artigo DDIM. Aplica-se apenas ao DDIMScheduler e é ignorado em outros agendadores. 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, em detrimento 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 agendador a jusante (use None para agendadores 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, em que 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[[diffusers.ImagePipelineOutput]]

diffusers.ImagePipelineOutput[[diffusers.ImagePipelineOutput]]

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

Fonte

Parâmetros:

images (List[PIL.Image.Image] ou np.ndarray) : Lista de imagens PIL desruídas de comprimento batch_size ou array NumPy de forma (batch_size, height, width, num_channels).

Classe de saída para pipelines de imagem.

Xet Storage Details

Size:
6.2 kB
·
Xet hash:
fa9eb8b3357362f9687a3a61eb10b417370355da47bc6b0f094ac10cd3324bf1

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.