Diffusers documentation
AutoencoderKLCogVideoX
AutoencoderKLCogVideoX
O modelo de autoencoder variacional 3D (VAE) com perda KL usado em CogVideoX foi introduzido em CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer pela Universidade de Tsinghua & ZhipuAI.
O modelo pode ser carregado com o seguinte trecho de código.
from diffusers import AutoencoderKLCogVideoX
vae = AutoencoderKLCogVideoX.from_pretrained("THUDM/CogVideoX-2b", subfolder="vae", dtype=torch.float16).to("cuda") # or "mps", "xpu", "cpu"AutoencoderKLCogVideoX
classe diffusers.AutoencoderKLCogVideoX
< source >( in_channels: int = 3out_channels: int = 3down_block_types: tuple[str] = ('CogVideoXDownBlock3D', 'CogVideoXDownBlock3D', 'CogVideoXDownBlock3D', 'CogVideoXDownBlock3D')up_block_types: tuple[str] = ('CogVideoXUpBlock3D', 'CogVideoXUpBlock3D', 'CogVideoXUpBlock3D', 'CogVideoXUpBlock3D')block_out_channels: tuple[int] = (128, 256, 256, 512)latent_channels: int = 16layers_per_block: int = 3act_fn: str = 'silu'norm_eps: float = 1e-06norm_num_groups: int = 32temporal_compression_ratio: float = 4sample_height: int = 480sample_width: int = 720scaling_factor: float = 1.15258426shift_factor: float | None = Nonelatents_mean: tuple[float] | None = Nonelatents_std: tuple[float] | None = Noneforce_upcast: float = Trueuse_quant_conv: bool = Falseuse_post_quant_conv: bool = Falseinvert_scale_latents: bool = False )
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. - sample_size (
int, opcional, padrão32) — Tamanho da amostra de entrada. - scaling_factor (
float, opcional, padrão1.15258426) — O desvio padrão por 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 durante o treinamento do modelo de difusão. Os latentes são escalados com a fórmulaz = z * scaling_factorantes de serem passados para o modelo de difusão. Ao decodificar, os latentes são reescalados 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ãoTrue) — Se habilitado, força 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 queforce_upcastpode ser definido comoFalse- veja: https://huggingface.co/madebyollin/sdxl-vae-fp16-fix
Um modelo VAE com perda KL para codificar imagens em latentes e decodificar representações latentes em imagens. Usado no CogVideoX.
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
< source >( z: Tensorreturn_dict: bool = True ) → ~models.vae.DecoderOutput or tuple
Parâmetros
- z (
torch.Tensor) — Lote de entrada de vetores latentes. - return_dict (
bool, opcional, padrãoTrue) — Se deve retornar um~models.vae.DecoderOutputem 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
< source >( x: Tensorreturn_dict: bool = True )
Codifica um lote de imagens em latentes.
enable_tiling
< source >( tile_sample_min_height: int | None = Nonetile_sample_min_width: int | None = Nonetile_overlap_factor_height: float | None = Nonetile_overlap_factor_width: float | None = None )
Parâmetros
- tile_sample_min_height (
int, opcional) — A altura mínima necessária para que uma amostra seja separada em tiles ao longo da dimensão de altura. - tile_sample_min_width (
int, opcional) — A largura mínima necessária para que uma amostra seja separada em tiles ao longo da dimensão de largura. - tile_overlap_factor_height (
int, opcional) — A quantidade mínima de sobreposição entre duas tiles verticais consecutivas. Isso garante que não haja artefatos de tiling produzidos ao longo da dimensão de altura. Deve estar entre 0 e 1. Definir um valor mais alto pode fazer com que mais tiles sejam processadas, levando a um atraso no processo de decodificação. - tile_overlap_factor_width (
int, opcional) — A quantidade mínima de sobreposição entre duas tiles horizontais consecutivas. Isso garante que não haja artefatos de tiling produzidos ao longo da dimensão de largura. Deve estar entre 0 e 1. Definir um valor maior pode fazer com que mais tiles sejam processadas, o que pode desacelerar o processo de decodificação.
Ativa a decodificação do VAE em blocos (tiled). Quando essa opção está ativada, o VAE divide o tensor de entrada em blocos para calcular a decodificação e a codificação em várias etapas. Isso é útil para economizar uma grande quantidade de memória e permitir o processamento de imagens maiores.
forward
< source >( sample: Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None ) → ~models.vae.DecoderOutput or tuple
Parâmetros
- sample (
torch.Tensor) — Amostra de entrada. - sample_posterior (
bool, opcional, padrãoFalse) — Se deve amostrar da posterior. - return_dict (
bool, opcional, padrãoTrue) — Se deve ou não retornar umDecoderOutputem vez de uma tupla simples. - generator (
torch.Generator, opcional) — Umtorch.Generatorpara 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.
tiled_decode
< source >( z: Tensorreturn_dict: bool = True ) → ~models.vae.DecoderOutput or tuple
Parâmetros
- z (
torch.Tensor) — Lote de entrada de vetores latentes. - return_dict (
bool, opcional, padrãoTrue) — Se deve ou não retornar um~models.vae.DecoderOutputem 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
< source >( x: Tensor ) → torch.Tensor
Codifique um lote de imagens usando um codificador em mosaico.
Quando essa 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 usa 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.
AutoencoderKLOutput
classe diffusers.models.modeling_outputs.AutoencoderKLOutput
< source >( latent_dist: DiagonalGaussianDistribution )
Saída do método de codificação do AutoencoderKL.
DecoderOutput
classe diffusers.models.autoencoders.vae.DecoderOutput
< source >( sample: Tensorcommit_loss: typing.Optional[torch.FloatTensor] = None )
Saída do método de decodificação.