Diffusers documentation

RePaintScheduler

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

RePaintScheduler

RePaintScheduler é um agendador de inpainting baseado em DDPM para inpainting não supervisionado com máscaras extremas. Ele foi projetado para ser usado com o RePaintPipeline e é baseado no artigo RePaint: Inpainting using Denoising Diffusion Probabilistic Models, de Andreas Lugmayr et al.

O resumo do artigo é:

O inpainting livre é a tarefa de adicionar novo conteúdo a uma imagem nas regiões especificadas por uma máscara binária arbitrária. A maioria das abordagens existentes é treinada para uma certa distribuição de máscaras, o que limita sua capacidade de generalização para tipos de máscara não vistos. Além disso, o treinamento com perdas por pixel e perdas perceptivas frequentemente leva a extensões texturais simples em direção às áreas ausentes, em vez de uma geração semanticamente significativa. Neste trabalho, propomos o RePaint: uma abordagem de inpainting baseada em um Modelo Probabilístico de Difusão com Denoising (DDPM) que é aplicável até mesmo a máscaras extremas. Utilizamos um DDPM incondicional pré-treinado como o prior generativo. Para condicionar o processo de geração, alteramos apenas as iterações de difusão reversa, amostrando as regiões não mascaradas usando as informações da imagem dada. Como essa técnica não modifica nem condiciona a própria rede DDPM original, o modelo produz imagens de saída de alta qualidade e diversas para qualquer forma de inpainting. Validamos nosso método para inpainting de rostos e de imagens de uso geral, usando máscaras padrão e extremas. O RePaint supera as abordagens Autoregressive e GAN do estado da arte para pelo menos cinco das seis distribuições de máscaras. Repositório no GitHub: este URL http.

A implementação original pode ser encontrada em andreas128/RePaint.

RePaintScheduler

classe diffusers.RePaintScheduler

< >

( num_train_timesteps: int = 1000beta_start: float = 0.0001beta_end: float = 0.02beta_schedule: str = 'linear'eta: float = 0.0trained_betas: numpy.ndarray | None = Noneclip_sample: bool = True )

Parâmetros

  • num_train_timesteps (int, padrão 1000) — O número de etapas de difusão para treinar o modelo.
  • beta_start (float, padrão 0.0001) — O valor inicial de beta para a inferência.
  • beta_end (float, padrão 0.02) — O valor final de beta.
  • beta_schedule (str, padrão "linear") — O agendamento de beta, um mapeamento de um intervalo de beta para uma sequência de betas para o passo do modelo. Escolha entre linear, scaled_linear, squaredcos_cap_v2 ou sigmoid.
  • eta (float, padrão 0.0) — O peso do ruído adicionado durante um passo de difusão. Um valor de 0.0 corresponde ao DDIM e um valor de 1.0 corresponde ao DDPM.
  • trained_betas (np.ndarray, opcional) — Passe um array de betas diretamente para o construtor para ignorar beta_start e beta_end.
  • clip_sample (bool, padrão True) — Recorta a amostra prevista entre -1 e 1 para estabilidade numérica.

RePaintScheduler é um agendador para inpainting de DDPM dentro de uma máscara definida.

Este modelo herda de SchedulerMixin e ConfigMixin. Consulte a documentação da superclasse para os métodos genéricos que a biblioteca implementa para todos os agendadores, como carregamento e salvamento.

add_noise

< >

( original_samples: Tensornoise: Tensortimesteps: IntTensor )

Parâmetros

  • original_samples (torch.Tensor) — As amostras originais às quais o ruído seria adicionado.
  • noise (torch.Tensor) — O ruído que seria adicionado às amostras.
  • timesteps (torch.IntTensor) — Os timesteps que determinariam o nível de ruído para cada amostra.

Exceções

NotImplementedError

Indique que a adição de ruído para o treinamento do RePaint não é suportada por este agendador.

scale_model_input

< >

( sample: Tensortimestep: int | None = None ) → torch.Tensor

Parâmetros

  • sample (torch.Tensor) — A amostra de entrada.
  • timestep (int, opcional) — O timestep atual na cadeia de difusão.

Retorna

torch.Tensor

Uma amostra de entrada escalada.

Garante a intercambiabilidade com agendadores que precisam escalar a entrada do modelo de desruidamento dependendo do passo de tempo atual.

set_timesteps

< >

( num_inference_steps: intjump_length: int = 10jump_n_sample: int = 10device: typing.Union[str, torch.device, NoneType] = None )

Parâmetros

  • num_inference_steps (int) — O número de etapas de difusão usadas ao gerar amostras com um modelo pré-treinado.
  • jump_length (int, padrão 10) — O número de passos avançados no tempo antes de voltar no tempo para um único salto (“j” no artigo RePaint). Veja as Figuras 9 e 10 do artigo.
  • jump_n_sample (int, padrão 10) — O número de vezes que um salto no tempo para frente deve ser realizado para uma amostra de tempo escolhida. Consulte as Figuras 9 e 10 do artigo.
  • device (str ou torch.device, opcional) — O dispositivo para o qual os timesteps devem ser movidos. Se None, os timesteps não são movidos.

Define os passos discretos usados para a cadeia de difusão (a ser executado antes da inferência).

etapa

< >

( model_output: Tensortimestep: intsample: Tensororiginal_image: Tensormask: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → RePaintSchedulerOutput or tuple[torch.Tensor, torch.Tensor]

Parâmetros

  • model_output (torch.Tensor) — A saída direta do modelo de difusão aprendido.
  • timestep (int) — O timestep discreto atual na cadeia de difusão.
  • sample (torch.Tensor) — Uma instância atual de uma amostra criada pelo processo de difusão.
  • original_image (torch.Tensor) — A imagem original na qual será realizado o inpainting.
  • mask (torch.Tensor) — A máscara em que um valor de 0.0 indica qual parte da imagem original deve ser preenchida.
  • generator (torch.Generator, opcional) — Um gerador de números aleatórios.
  • return_dict (bool, padrão True) — Se deve ou não retornar um RePaintSchedulerOutput em vez de uma tupla.

Retorna

RePaintSchedulerOutput ou tuple[torch.Tensor, torch.Tensor]

Se return_dict for True, RePaintSchedulerOutput é retornado; caso contrário, uma tupla é retornada, em que o primeiro elemento é a amostra anterior e o segundo é a amostra original prevista.

Preveja a amostra do passo de tempo anterior revertendo o SDE. Esta função propaga o processo de difusão a partir das saídas do modelo aprendido (na maioria das vezes, o ruído previsto).

undo_step

< >

( sample: Tensortimestep: intgenerator: typing.Optional[torch.Generator] = None ) → torch.Tensor

Parâmetros

  • sample (torch.Tensor) — A amostra à qual o ruído é adicionado.
  • timestep (int) — O timestep discreto atual na cadeia de difusão.
  • generator (torch.Generator, opcional) — Um gerador de números aleatórios.

Retorna

torch.Tensor

A amostra no próximo passo de tempo na cadeia de difusão.

Adicione ruído a uma amostra para avançá-la em um passo de difusão.

RePaintSchedulerOutput

classe diffusers.schedulers.scheduling_repaint.RePaintSchedulerOutput

< >

( prev_sample: Tensorpred_original_sample: Tensor )

Parâmetros

  • prev_sample (torch.Tensor de forma (batch_size, num_channels, height, width) para imagens) — Amostra calculada (x_{t-1}) do passo de tempo anterior. prev_sample deve ser usado como entrada do próximo modelo no loop de remoção de ruído.
  • pred_original_sample (torch.Tensor de forma (batch_size, num_channels, height, width) para imagens) — A amostra desrujida prevista (x_{0}) com base na saída do modelo do timestep atual. pred_original_sample pode ser usado para visualizar o progresso ou para orientação.

Classe de saída para a saída da função de passo do agendador.

Update on GitHub