Diffusers documentation
ScoreSdeVeScheduler
ScoreSdeVeScheduler
ScoreSdeVeScheduler é um agendador de equação diferencial estocástica (SDE) com variância explosiva. Foi introduzido no artigo Score-Based Generative Modeling through Stochastic Differential Equations, de Yang Song, Jascha Sohl-Dickstein, Diederik P. Kingma, Abhishek Kumar, Stefano Ermon e Ben Poole.
O resumo do artigo é:
Criar ruído a partir de dados é fácil; criar dados a partir de ruído é modelagem generativa. Apresentamos uma equação diferencial estocástica (SDE) que transforma suavemente uma distribuição de dados complexa em uma distribuição a priori conhecida, injetando lentamente ruído, e uma SDE de tempo reverso correspondente que transforma a distribuição a priori de volta para a distribuição de dados, removendo lentamente o ruído. Crucialmente, a SDE de tempo reverso depende apenas do campo de gradiente dependente do tempo (também conhecido como score) da distribuição de dados perturbada. Aproveitando os avanços na modelagem generativa baseada em score, podemos estimar esses scores com precisão usando redes neurais e usar solucionadores numéricos de SDE para gerar amostras. Mostramos que esse framework encapsula abordagens anteriores em modelagem generativa baseada em score e modelagem probabilística de difusão, permitindo novos procedimentos de amostragem e novas capacidades de modelagem. Em particular, introduzimos um framework preditor-corretor para corrigir erros na evolução da SDE de tempo reverso discretizada. Também derivamos uma ODE neural equivalente que amostra da mesma distribuição que a SDE, mas que adicionalmente permite o cálculo exato de verossimilhança e uma eficiência de amostragem aprimorada. Além disso, fornecemos uma nova maneira de resolver problemas inversos com modelos baseados em score, como demonstrado com experimentos em geração condicional de classe, inpainting de imagem e colorização. Combinado com múltiplas melhorias arquiteturais, alcançamos desempenho recorde para geração incondicional de imagens em CIFAR-10 com um Inception score de 9.89 e FID de 2.20, uma verossimilhança competitiva de 2.99 bits/dim, e demonstramos pela primeira vez a geração de alta fidelidade de imagens de 1024 x 1024 a partir de um modelo generativo baseado em score.
ScoreSdeVeScheduler
classe diffusers.ScoreSdeVeScheduler
< source >( num_train_timesteps: int = 2000snr: float = 0.15sigma_min: float = 0.01sigma_max: float = 1348.0sampling_eps: float = 1e-05correct_steps: int = 1 )
Parâmetros
- num_train_timesteps (
int, padrão 2000) — O número de etapas de difusão para treinar o modelo. - snr (
float, padrão 0.15) — Um coeficiente que pondera o passo da amostra demodel_output(da rede) até o ruído aleatório. - sigma_min (
float, padrão 0.01) — A escala de ruído inicial para a sequência de sigma no procedimento de amostragem. O sigma mínimo deve espelhar a distribuição dos dados. - sigma_max (
float, padrão 1348.0) — O valor máximo usado para o intervalo de timesteps contínuos passados para o modelo. - sampling_eps (
float, padrão 1e-5) — O valor final da amostragem, onde os timesteps diminuem progressivamente de 1 para epsilon. - correct_steps (
int, padrão 1) — O número de etapas de correção executadas em uma amostra gerada.
ScoreSdeVeScheduler é um agendador de equação diferencial estocástica (SDE) com variância explosiva.
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
< source >( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
Parâmetros
- original_samples (
torch.Tensor) — As amostras originais às quais o ruído será adicionado. - noise (
torch.Tensor) — O tensor de ruído a ser adicionado às amostras originais. - timesteps (
torch.Tensor) — Os timesteps nos quais adicionar ruído, determinando o nível de ruído a partir do agendamento.
Retorna
torch.Tensor
As amostras ruidosas com ruído adicionado, escalado de acordo com a agenda de passos temporais.
Adicione ruído às amostras originais de acordo com o agendamento de ruído nos timesteps especificados. Este é o processo de difusão direta.
get_adjacent_sigma
< source >( timesteps: Tensort: Tensor ) → torch.Tensor
Retorna o valor de sigma correspondente ao índice do passo anterior. Quando o passo é zero (sem passo anterior), retorna zero.
scale_model_input
< source >( sample: Tensortimestep: int | None = None ) → torch.Tensor
Garante a intercambiabilidade com agendadores que precisam escalar a entrada do modelo de desruidamento dependendo do passo de tempo atual.
set_sigmas
< source >( num_inference_steps: intsigma_min: float | None = Nonesigma_max: float | None = Nonesampling_eps: float | None = None )
Parâmetros
- num_inference_steps (
int) — O número de etapas de difusão usadas ao gerar amostras com um modelo pré-treinado. - sigma_min (
float, opcional) — O valor inicial da escala de ruído (sobrepõe o valor fornecido durante a instanciação do agendador). - sigma_max (
float, opcional) — O valor final da escala de ruído (sobrepõe o valor fornecido durante a instanciação do agendador). - sampling_eps (
float, opcional) — O valor final do timestep (sobrepõe o valor fornecido durante a instanciação do scheduler).
Define as escalas de ruído usadas para a cadeia de difusão (a ser executada antes da inferência). Os sigmas controlam o peso dos componentes de drift e diffusion da atualização da amostra.
set_timesteps
< source >( num_inference_steps: intsampling_eps: float | None = Nonedevice: 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. - sampling_eps (
float, opcional) — O valor final do timestep (sobrepõe o valor fornecido durante a instanciação do scheduler). - device (
stroutorch.device, opcional) — O dispositivo para o qual os timesteps devem ser movidos. SeNone, os timesteps não são movidos.
Define os passos de tempo contínuos usados para a cadeia de difusão (a ser executado antes da inferência).
step_correct
< source >( model_output: Tensorsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SchedulerOutput or tuple
Parâmetros
- model_output (
torch.Tensor) — A saída direta do modelo de difusão aprendido. - sample (
torch.Tensor) — Uma instância atual de uma amostra criada pelo processo de difusão. - generator (
torch.Generator, opcional) — Um gerador de números aleatórios. - return_dict (
bool, opcional, padrãoTrue) — Se deve ou não retornar um SchedulerOutput outuple.
Retorna
SchedulerOutput ou tuple
If return_dict is True, SchedulerOutput is returned, otherwise a
tuple is returned where the first element is the sample tensor.
Corrija a amostra prevista com base no model_output da rede. Isso é frequentemente executado repetidamente após fazer a previsão para o timestep anterior.
step_pred
< source >( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SdeVeOutput or tuple
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. - generator (
torch.Generator, opcional) — Um gerador de números aleatórios. - return_dict (
bool, opcional, padrãoTrue) — Se deve ou não retornar um SdeVeOutput outuple.
Retorna
SdeVeOutput ou tuple
If return_dict is True, SdeVeOutput is returned, otherwise a tuple
is returned where the first element is the sample tensor.
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).
SdeVeOutput
classe diffusers.schedulers.scheduling_sde_ve.SdeVeOutput
< source >( prev_sample: Tensorprev_sample_mean: Tensor )
Parâmetros
- prev_sample (
torch.Tensorde forma(batch_size, num_channels, height, width)para imagens) — Amostra calculada(x_{t-1})do passo de tempo anterior.prev_sampledeve ser usado como entrada do modelo no loop de remoção de ruído. - prev_sample_mean (
torch.Tensorde forma(batch_size, num_channels, height, width)para imagens) — Média deprev_samplemédia sobre os timesteps anteriores.
Classe de saída para a saída da função step do agendador.