Buckets:

hf-doc-build/doc / diffusers /v0.43.0 /pt /api /models /autoencoderkl.md
mishig's picture
|
download
raw
12.3 kB

AutoencoderKL

O modelo de autoencoder variacional (VAE) com perda KL foi introduzido em Auto-Encoding Variational Bayes por Diederik P. Kingma e Max Welling. O modelo é usado no 🤗 Diffusers para codificar imagens em latentes e para decodificar representações latentes em imagens.

O resumo do artigo é:

Como podemos realizar inferência e aprendizado eficientes em modelos probabilísticos direcionados, na presença de variáveis latentes contínuas com distribuições posteriores intratáveis e grandes conjuntos de dados? Introduzimos um algoritmo de inferência e aprendizado variacional estocástico que escala para grandes conjuntos de dados e, sob algumas condições de diferenciabilidade suaves, funciona até mesmo no caso intratável. Nossas contribuições são duplas. Primeiro, mostramos que uma reparametrização do limite inferior variacional produz um estimador de limite inferior que pode ser otimizado de forma direta usando métodos padrão de gradiente estocástico. Segundo, mostramos que para conjuntos de dados i.i.d. com variáveis latentes contínuas por ponto de dados, a inferência posterior pode ser feita especialmente eficiente ao ajustar um modelo de inferência aproximado (também chamado de modelo de reconhecimento) à posterior intratável usando o estimador de limite inferior proposto. As vantagens teóricas são refletidas nos resultados experimentais.

Carregando do formato original

Por padrão, o AutoencoderKL deve ser carregado com from_pretrained(), mas também pode ser carregado do formato original usando FromOriginalModelMixin.from_single_file da seguinte forma:

from diffusers import AutoencoderKL

url = "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/blob/main/vae-ft-mse-840000-ema-pruned.safetensors"  # can also be a local file
model = AutoencoderKL.from_single_file(url)

AutoencoderKL[[diffusers.AutoencoderKL]]

diffusers.AutoencoderKL[[diffusers.AutoencoderKL]]

diffusers.AutoencoderKL(in_channels: int = 3, out_channels: int = 3, down_block_types: tuple[str] = ('DownEncoderBlock2D',), up_block_types: tuple[str] = ('UpDecoderBlock2D',), block_out_channels: tuple[int] = (64,), layers_per_block: int = 1, act_fn: str = 'silu', latent_channels: int = 4, norm_num_groups: int = 32, sample_size: int = 32, scaling_factor: float = 0.18215, shift_factor: float | None = None, latents_mean: tuple[float] | None = None, latents_std: tuple[float] | None = None, force_upcast: bool = True, use_quant_conv: bool = True, use_post_quant_conv: bool = True, mid_block_add_attention: bool = True)

Fonte

Parâmetros:

in_channels (int, opcional, padrão 3) : Número de canais na imagem de entrada.

out_channels (int, opcional, padrão 3) : Número de canais na saída.

down_block_types (tuple[str], opcional, padrão ("DownEncoderBlock2D",)) : tupla de tipos de blocos de downsampling.

up_block_types (tuple[str], opcional, padrão ("UpDecoderBlock2D",)) : tupla de tipos de blocos de upsample.

block_out_channels (tuple[int], opcional, padrão (64,)) : tupla de canais de saída dos blocos.

act_fn (str, opcional, padrão "silu") : A função de ativação a ser utilizada.

latent_channels (int, opcional, padrão 4) : Número de canais no espaço latente.

sample_size (int, opcional, padrão 32) : Tamanho da entrada de amostragem.

scaling_factor (float, opcional, padrão 0.18215) : O desvio padrão componente a componente do espaço latente treinado, calculado usando o primeiro lote do conjunto de treinamento. Isso é usado para escalar o espaço latente para ter variância unitária ao treinar o modelo de difusão. Os latentes são escalados com a fórmula z = z * scaling_factor antes de serem passados para o modelo de difusão. Ao decodificar, os latentes são escalados de volta para a escala original com a fórmula: z = 1 / scaling_factor * z. Para mais detalhes, consulte as seções 4.3.2 e D.1 do artigo High-Resolution Image Synthesis with Latent Diffusion Models.

force_upcast (bool, opcional, padrão True) : Se habilitado, forçará o VAE a executar em float32 para pipelines de alta resolução de imagem, como o SD-XL. O VAE pode ser ajustado / treinado para uma faixa menor sem perder muita precisão, caso em que force_upcast pode ser definido como False - veja: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix

mid_block_add_attention (bool, opcional, padrão True) : Se habilitado, o mid_block do Encoder e do Decoder terá blocos de atenção. Se definido como false, o mid_block terá apenas blocos resnet

Um modelo VAE com perda KL para codificar imagens em latentes e decodificar representações latentes em imagens.

Este modelo herda de ModelMixin. Consulte a documentação da superclasse para seus métodos genéricos implementados para todos os modelos (como download ou salvamento).

decode[[diffusers.AutoencoderKL.decode]]

decode(z: FloatTensor, return_dict: bool = True, generator = None)

Fonte

Parâmetros:

z (torch.Tensor) : Lote de entrada de vetores latentes.

return_dict (bool, opcional, padrão True) : Se deve retornar um ~models.vae.DecoderOutput em vez de uma tupla simples.

Retorna: ~models.vae.DecoderOutput ou tuple

Se return_dict for True, um ~models.vae.DecoderOutput é retornado; caso contrário, uma tuple simples é retornada.

Decodifique um lote de imagens.

encode[[diffusers.AutoencoderKL.encode]]

encode(x: Tensor, return_dict: bool = True)

Fonte

Parâmetros:

x (torch.Tensor) : Lote de entrada de imagens.

return_dict (bool, opcional, padrão True) : Se deve retornar um ~models.autoencoder_kl.AutoencoderKLOutput em vez de uma tupla simples.

Retorna:

As representações latentes das imagens codificadas. Se return_dict for True, um ~models.autoencoder_kl.AutoencoderKLOutput é retornado; caso contrário, uma tuple simples é retornada.

Codifica um lote de imagens em latentes.

forward[[diffusers.AutoencoderKL.forward]]

forward(sample: Tensor, sample_posterior: bool = False, return_dict: bool = True, generator: typing.Optional[torch.Generator] = None)

Fonte

Parâmetros:

sample (torch.Tensor) : Amostra de entrada.

sample_posterior (bool, opcional, padrão False) : Se deve amostrar da posterior.

return_dict (bool, opcional, padrão True) : Se deve ou não retornar um DecoderOutput em vez de uma tupla simples.

generator (torch.Generator, opcional) : Um torch.Generator para tornar a amostragem determinística.

Retorna: ~models.vae.DecoderOutput ou tuple

Se return_dict for True, um ~models.vae.DecoderOutput é retornado; caso contrário, uma tuple simples é retornada.

fuse_qkv_projections[[diffusers.AutoencoderKL.fuse_qkv_projections]]

fuse_qkv_projections()

Fonte

Ativa as projeções QKV fundidas. Para os módulos de autoatenção, todas as matrizes de projeção (ou seja, query, key, value) são fundidas. Para os módulos de atenção cruzada, as matrizes de projeção de key e value são fundidas.

> Esta API é 🧪 experimental.

set_default_attn_processor[[diffusers.AutoencoderKL.set_default_attn_processor]]

set_default_attn_processor()

Fonte

Desativa os processadores de atenção personalizados e define a implementação padrão de atenção.

tiled_decode[[diffusers.AutoencoderKL.tiled_decode]]

tiled_decode(z: Tensor, return_dict: bool = True)

Fonte

Parâmetros:

z (torch.Tensor) : Lote de entrada de vetores latentes.

return_dict (bool, opcional, padrão True) : Se deve ou não retornar um ~models.vae.DecoderOutput em vez de uma tupla simples.

Retorna: ~models.vae.DecoderOutput ou tuple

Se return_dict for True, um ~models.vae.DecoderOutput é retornado; caso contrário, uma tuple simples é retornada.

Decodifique um lote de imagens usando um decodificador em mosaico.

tiled_encode[[diffusers.AutoencoderKL.tiled_encode]]

tiled_encode(x: Tensor, return_dict: bool = True)

Fonte

Parâmetros:

x (torch.Tensor) : Lote de entrada de imagens.

return_dict (bool, opcional, padrão True) : Indica se deve retornar um ~models.autoencoder_kl.AutoencoderKLOutput em vez de uma tupla simples.

Retorna: ~models.autoencoder_kl.AutoencoderKLOutput ou tuple

Se return_dict for True, um ~models.autoencoder_kl.AutoencoderKLOutput é retornado, caso contrário, uma tuple simples é retornada.

Codifique um lote de imagens usando um codificador em mosaico.

Quando esta opção está habilitada, o VAE divide o tensor de entrada em blocos para calcular a codificação em várias etapas. Isso é útil para manter o uso de memória constante, independentemente do tamanho da imagem. O resultado final da codificação em blocos é diferente da codificação sem blocos, pois cada bloco utiliza um codificador diferente. Para evitar artefatos de blocos, os blocos se sobrepõem e são mesclados para formar uma saída suave. Você ainda pode observar variações do tamanho do bloco na saída, mas elas devem ser muito menos perceptíveis.

unfuse_qkv_projections[[diffusers.AutoencoderKL.unfuse_qkv_projections]]

unfuse_qkv_projections()

Fonte

Desativa a projeção QKV fundida, se estiver habilitada.

> Esta API é 🧪 experimental.

AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]]

diffusers.models.modeling_outputs.AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]]

diffusers.models.modeling_outputs.AutoencoderKLOutput(latent_dist: DiagonalGaussianDistribution)

Fonte

Parâmetros:

latent_dist (DiagonalGaussianDistribution) : Saídas codificadas do Encoder representadas como a média e o logvar do DiagonalGaussianDistribution. O DiagonalGaussianDistribution permite amostrar latentes da distribuição.

Saída do método de codificação do AutoencoderKL.

DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]]

diffusers.models.autoencoders.vae.DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]]

diffusers.models.autoencoders.vae.DecoderOutput(sample: Tensor, commit_loss: typing.Optional[torch.FloatTensor] = None)

Fonte

Parâmetros:

sample (torch.Tensor de forma (batch_size, num_channels, height, width)) : A amostra de saída decodificada da última camada do modelo.

Saída do método de decodificação.

Xet Storage Details

Size:
12.3 kB
·
Xet hash:
fbcb6c8f5f221873c7e298f0308db4d781f6747f66b370be7cbd70092f3ef3e1

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