Buckets:
| # VQDiffusionScheduler | |
| `VQDiffusionScheduler` converte a saída do modelo transformer em uma amostra para a imagem sem ruído no passo de difusão anterior. Foi introduzido em [Vector Quantized Diffusion Model for Text-to-Image Synthesis](https://huggingface.co/papers/2111.14822), de Shuyang Gu, Dong Chen, Jianmin Bao, Fang Wen, Bo Zhang, Dongdong Chen, Lu Yuan e Baining Guo. | |
| O resumo do artigo é: | |
| *Apresentamos o modelo de difusão com quantização vetorial (VQ-Diffusion) para geração de imagens a partir de texto. Este método é baseado em um autoencoder variacional com quantização vetorial (VQ-VAE) cujo espaço latente é modelado por uma variante condicional do Modelo Probabilístico de Difusão de Desruído (DDPM) desenvolvido recentemente. Verificamos que este método de espaço latente é adequado para tarefas de geração de imagens a partir de texto, pois não apenas elimina o viés unidirecional dos métodos existentes, mas também nos permite incorporar uma estratégia de difusão de máscara e substituição para evitar o acúmulo de erros, um problema sério nos métodos existentes. Nossos experimentos mostram que o VQ-Diffusion produz resultados significativamente melhores na geração de imagens a partir de texto quando comparado a modelos autoregressivos (AR) convencionais com números de parâmetros semelhantes. Em comparação com métodos anteriores baseados em GAN para geração de imagens a partir de texto, nosso VQ-Diffusion pode lidar com cenas mais complexas e melhorar a qualidade das imagens sintetizadas em grande margem. Finalmente, mostramos que o cálculo de geração de imagens em nosso método pode ser altamente eficiente por meio de reparametrização. Com os métodos AR tradicionais, o tempo de geração de imagens a partir de texto aumenta linearmente com a resolução da imagem de saída e, portanto, é bastante demorado mesmo para imagens de tamanho normal. O VQ-Diffusion nos permite alcançar um melhor equilíbrio entre qualidade e velocidade. Nossos experimentos indicam que o modelo VQ-Diffusion com reparametrização é quinze vezes mais rápido que os métodos AR tradicionais, ao mesmo tempo em que atinge uma melhor qualidade de imagem.* | |
| ## VQDiffusionScheduler[[diffusers.VQDiffusionScheduler]] | |
| #### diffusers.VQDiffusionScheduler[[diffusers.VQDiffusionScheduler]] | |
| ```python | |
| diffusers.VQDiffusionScheduler(num_vec_classes: int, num_train_timesteps: int = 100, alpha_cum_start: float = 0.99999, alpha_cum_end: float = 9e-06, gamma_cum_start: float = 9e-06, gamma_cum_end: float = 0.99999) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L142) | |
| **Parâmetros:** | |
| num_vec_classes (`int`) : O número de classes dos embeddings vetoriais dos pixels latentes. Inclui a classe para o pixel latente mascarado. | |
| num_train_timesteps (`int`, padrão `100`) : O número de etapas de difusão para treinar o modelo. | |
| alpha_cum_start (`float`, padrão `0.99999`) : O valor inicial de alfa cumulativo. | |
| alpha_cum_end (`float`, padrão `0.000009`) : O valor final cumulativo de alpha. | |
| gamma_cum_start (`float`, padrão `0.000009`) : O valor inicial de gamma cumulativo. | |
| gamma_cum_end (`float`, padrão `0.99999`) : O valor final de gamma cumulativo. | |
| Um agendador para difusão com quantização vetorial. | |
| Este modelo herda de [SchedulerMixin](/docs/diffusers/main/pt/api/schedulers/overview#diffusers.SchedulerMixin) e [ConfigMixin](/docs/diffusers/main/pt/api/configuration#diffusers.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. | |
| #### apply_cumulative_transitions[[diffusers.VQDiffusionScheduler.apply_cumulative_transitions]] | |
| ```python | |
| apply_cumulative_transitions(q: Tensor, t: typing.Union[int, torch.Tensor]) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L491) | |
| **Parâmetros:** | |
| q (`torch.Tensor` de forma `(batch size, num classes - 1, num latent pixels)`) : As probabilidades logarítmicas sobre as classes de pixels latentes não mascarados. | |
| t (`int` ou `torch.Tensor`) : O timestep que determina qual matriz de transição cumulativa é utilizada. | |
| **Retorna:** `torch.Tensor` de forma `(batch size, num classes, num latent pixels)` | |
| As probabilidades de log transicionadas com as probabilidades de classe da máscara anexadas. | |
| Aplique a matriz de transição cumulativa em um passo de tempo às probabilidades logarítmicas sobre as classes não mascaradas. | |
| #### log_Q_t_transitioning_to_known_class[[diffusers.VQDiffusionScheduler.log_Q_t_transitioning_to_known_class]] | |
| ```python | |
| log_Q_t_transitioning_to_known_class(t: typing.Union[int, torch.Tensor], x_t: LongTensor, log_onehot_x_t: Tensor, cumulative: bool) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L392) | |
| **Parâmetros:** | |
| t (`int` ou `torch.Tensor`) : O timestep que determina qual matriz de transição é utilizada. | |
| x_t (`torch.LongTensor` de forma `(batch size, num latent pixels)`) : As classes de cada pixel latente no tempo `t`. | |
| log_onehot_x_t (`torch.Tensor` de forma `(batch size, num classes, num latent pixels)`) : Os vetores log one-hot de `x_t`. | |
| cumulative (`bool`) : Se cumulative for `False`, a matriz de transição de etapa única `t-1`->`t` é usada. Se cumulative for `True`, a matriz de transição cumulativa `0`->`t` é usada. | |
| **Retorna:** `torch.Tensor` | |
| Cada _coluna_ da matriz retornada é uma _linha_ de log probabilidades da matriz completa de transição de probabilidades. O tensor tem forma `(batch size, num classes - 1, num latent pixels)` quando `cumulative` é `True` e forma `(batch size, num classes, num latent pixels)` caso contrário. | |
| Quando cumulativo, o tensor tem uma linha a menos porque o pixel latente inicial não pode ser mascarado. | |
| Onde: | |
| - `q_n` é a distribuição de probabilidade do processo de propagação do pixel latente de ordem `n`. | |
| - C_0 é uma classe de um embedding latente de pixels | |
| - C_k é a classe do pixel latente mascarado | |
| resultado não cumulativo (omitindo logaritmos): | |
| ``` | |
| q_0(x_t | x_{t-1} = C_0) ... q_n(x_t | x_{t-1} = C_0) | |
| . . . | |
| . . . | |
| . . . | |
| q_0(x_t | x_{t-1} = C_k) ... q_n(x_t | x_{t-1} = C_k) | |
| ``` | |
| resultado cumulativo (omitindo logaritmos): | |
| ``` | |
| q_0_cumulative(x_t | x_0 = C_0) ... q_n_cumulative(x_t | x_0 = C_0) | |
| . . . | |
| . . . | |
| . . . | |
| q_0_cumulative(x_t | x_0 = C_{k-1}) ... q_n_cumulative(x_t | x_0 = C_{k-1}) | |
| ``` | |
| Calcula as probabilidades logarítmicas das linhas da matriz de transição (cumulativa ou não cumulativa) para cada pixel latente em `x_t`. | |
| #### q_posterior[[diffusers.VQDiffusionScheduler.q_posterior]] | |
| ```python | |
| q_posterior(log_p_x_0: Tensor, x_t: LongTensor, t: typing.Union[int, torch.Tensor]) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L281) | |
| **Parâmetros:** | |
| log_p_x_0 (`torch.Tensor` de forma `(batch size, num classes - 1, num latent pixels)`) : As probabilidades logarítmicas para as classes previstas dos pixels latentes iniciais. Não inclui uma previsão para a classe mascarada, pois a imagem inicial sem ruído não pode ser mascarada. | |
| x_t (`torch.LongTensor` de forma `(batch size, num latent pixels)`) : As classes de cada pixel latente no tempo `t`. | |
| t (`int` ou `torch.Tensor`) : O timestep que determina qual matriz de transição é utilizada. | |
| **Retorna:** `torch.Tensor` de forma `(batch size, num classes, num latent pixels)` | |
| As probabilidades de log para as classes previstas da imagem no passo de tempo `t-1`. | |
| Calcula as probabilidades logarítmicas para as classes previstas da imagem no passo de tempo `t-1`: | |
| ``` | |
| p(x_{t-1} | x_t) = sum( q(x_t | x_{t-1}) * q(x_{t-1} | x_0) * p(x_0) / q(x_t | x_0) ) | |
| ``` | |
| #### set_timesteps[[diffusers.VQDiffusionScheduler.set_timesteps]] | |
| ```python | |
| set_timesteps(num_inference_steps: int, device: typing.Union[str, torch.device, NoneType] = None) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L214) | |
| **Parâmetros:** | |
| num_inference_steps (`int`) : O número de etapas de difusão usadas ao gerar amostras com um modelo pré-treinado. | |
| device (`str` ou `torch.device`, *opcional*) : O dispositivo para o qual os timesteps e os parâmetros do processo de difusão (alpha, beta, gamma) devem ser movidos. | |
| Define os passos discretos usados para a cadeia de difusão (a ser executado antes da inferência). | |
| #### etapa[[diffusers.VQDiffusionScheduler.step]] | |
| ```python | |
| step(model_output: Tensor, timestep: typing.Union[int, torch.Tensor], sample: LongTensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L236) | |
| **Parâmetros:** | |
| model_output (`torch.Tensor` de forma `(batch size, num classes - 1, num latent pixels)`) : As probabilidades logarítmicas para as classes previstas dos pixels latentes iniciais. Não inclui uma previsão para a classe mascarada, pois a imagem inicial sem ruído não pode ser mascarada. | |
| timestep (`int` ou `torch.Tensor`) : O timestep que determina quais matrizes de transição são usadas. | |
| sample (`torch.LongTensor` de forma `(batch size, num latent pixels)`) : As classes de cada pixel latente no timestep atual. | |
| generator (`torch.Generator`, *opcional*) : Um gerador de números aleatórios para o ruído aplicado a `p(x_{t-1} | x_t)` antes de ser amostrado. | |
| return_dict (`bool`, padrão `True`) : Se deve ou não retornar um [VQDiffusionSchedulerOutput](/docs/diffusers/main/pt/api/schedulers/vq_diffusion#diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput) ou `tuple`. | |
| **Retorna:** [VQDiffusionSchedulerOutput](/docs/diffusers/main/pt/api/schedulers/vq_diffusion#diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput) ou `tuple[torch.LongTensor]` | |
| If return_dict is `True`, [VQDiffusionSchedulerOutput](/docs/diffusers/main/pt/api/schedulers/vq_diffusion#diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput) is returned, otherwise a tuple is returned where the first element is the sample tensor. | |
| Preveja a amostra do passo de tempo anterior pela distribuição de transição reversa. Consulte [q_posterior()](/docs/diffusers/main/pt/api/schedulers/vq_diffusion#diffusers.VQDiffusionScheduler.q_posterior) para mais detalhes sobre como a distribuição é calculada. | |
| ## VQDiffusionSchedulerOutput[[diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput]] | |
| #### diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput[[diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput]] | |
| ```python | |
| diffusers.schedulers.scheduling_vq_diffusion.VQDiffusionSchedulerOutput(prev_sample: LongTensor) | |
| ``` | |
| [Fonte](https://github.com/huggingface/diffusers/blob/main/src/diffusers/schedulers/scheduling_vq_diffusion.py#L27) | |
| **Parâmetros:** | |
| prev_sample (`torch.LongTensor` de forma `(batch size, num latent pixels)`) : A amostra calculada no passo de tempo anterior. `prev_sample` deve ser usado como a próxima entrada do modelo no loop de remoção de ruído. | |
| Classe de saída para a saída da função de passo do agendador. | |
Xet Storage Details
- Size:
- 11.7 kB
- Xet hash:
- 4954b5a04fe313675631a99deba3319053ec9782f6686b4fc6679bd2ac521a2a
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.