Diffusers documentation
AutoencoderKLPH3Image
AutoencoderKLPH3Image
O VAE de imagem de P-H3-Image da Pruna AI. Ele utiliza o codificador e o espaço latente do VAE de vídeo do MiniMax-H3, com um decodificador ViT que decodifica um único frame latente em uma imagem.
Segue as convenções de AutoencoderKLMiniMaxH3:
- As imagens são passadas como vídeos de quadro único,
(batch_size, channels, 1, height, width), com compressão espacial de 16x. - Os latentes são normalizados por canal com
latents_mean/latents_stdem vez de umscaling_factor. - Os pixels são RGB normalizados pelo ImageNet em
[0, 1]:encodeespera(pixel - imagenet_mean) / imagenet_stdedecoderetorna esse espaço. - O mosaico espacial está ativado por padrão, com mosaicos de 256 pixels e pelo menos 64 pixels de sobreposição.
import torch
from diffusers import AutoencoderKLPH3Image
vae = AutoencoderKLPH3Image.from_pretrained("PrunaAI/P-H3-Image", subfolder="vae", dtype=torch.bfloat16).to(
"cuda"
) # or "mps", "xpu", "cpu"A projeção de saída do codificador e do decodificador permanece em float32, independentemente do dtype em que o modelo é carregado.
AutoencoderKLPH3Image
classe diffusers.AutoencoderKLPH3Image
< source >( in_channels: int = 3out_channels: int = 3latent_channels: int = 24block_out_channels: tuple = (128, 256, 256, 512, 512, 1024)layers_per_block: int = 2spatial_downsample_factors: tuple = (2, 2, 2, 2, 1, 1)temporal_downsample_factors: tuple = (1, 2, 2, 1, 1, 1)norm_num_groups: int = 32norm_eps: float = 1e-06spatial_padding_mode: str = 'reflect'decoder_num_layers: int = 36decoder_num_attention_heads: int = 32decoder_attention_head_dim: int = 64decoder_num_register_tokens: int = 4decoder_ffn_mult: int = 4decoder_rope_theta: float = 100.0decoder_rope_dim_ratio: float = 0.75decoder_norm_eps: float = 1e-05latents_mean: tuple = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)latents_std: tuple = (1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0) )
O VAE de imagem de P-H3-Image: o codificador VAE e o espaço latente do MiniMax-H3, com um PH3ImageViTDecoder que decodifica um único quadro latente.
As imagens são passadas como vídeos de quadro único, (batch_size, channels, 1, height, width). Assim como em AutoencoderKLMiniMaxH3, os pixels são RGB normalizados pelo ImageNet sobre [0, 1] (média (0.485, 0.456, 0.406), desvio padrão (0.229, 0.224, 0.225)) e o tiling espacial está ativado por padrão.
encode
< source >( x: Tensorreturn_dict: bool = True )
Parâmetros
- x (
torch.Tensor) — Lote de entrada de imagens como vídeos de quadro único, com forma(batch_size, in_channels, 1, height, width). - return_dict (
bool, opcional, padrãoTrue) — Se deve retornar um AutoencoderKLOutput em vez de uma tupla simples.
Codifica um lote de imagens em latentes.
decode
< source >( z: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple
Parâmetros
- z (
torch.Tensor) — Lote de entrada de latentes, com forma(batch_size, latent_channels, 1, height, width). - return_dict (
bool, opcional, padrãoTrue) — Se deve retornar um DecoderOutput em vez de uma tupla simples.
Retorna
DecoderOutput ou tuple
As imagens decodificadas, com formato (batch_size, out_channels, 1, height, width).
Decodifique um lote de imagens latentes.
enable_tiling
< source >( tile_sample_min_height: int | None = Nonetile_sample_min_width: int | None = Nonetile_sample_min_overlap_height: int | None = Nonetile_sample_min_overlap_width: int | None = None )
Parâmetros
- tile_sample_min_height (
int, opcional) — A altura da tile no espaço de pixels. Quadros mais altos que isso são divididos ao longo da dimensão de altura. - tile_sample_min_width (
int, opcional) — A largura do tile no espaço de pixels. Quadros mais largos que esse valor são divididos ao longo da dimensão de largura. - tile_sample_min_overlap_height (
int, opcional) — A sobreposição mínima, em pixels, entre duas tiles verticais consecutivas. - tile_sample_min_overlap_width (
int, opcional) — A sobreposição mínima, em pixels, entre duas tiles horizontais consecutivas.
Ativa a codificação/decodificação em blocos (tiled) do VAE. Quando essa opção está ativada, o VAE divide os quadros em blocos, codifica ou decodifica cada bloco separadamente e mescla linearmente as sobreposições novamente. Isso reduz o requisito de memória e permite o processamento de quadros maiores.
forward
< source >( sample: Tensorsample_posterior: bool = Falsegenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DecoderOutput or tuple
Parâmetros
- sample (
torch.Tensor) — Lote de entrada de imagens como vídeos de quadro único, com forma(batch_size, in_channels, 1, height, width). - sample_posterior (
bool, opcional, padrãoFalse) — Se deve amostrar a posterior em vez de tomar seu modo. - generator (
torch.Generator, opcional) — Gerador usado quandosample_posterior=True. - return_dict (
bool, opcional, padrãoTrue) — Se deve retornar um DecoderOutput em vez de uma tupla simples.
Retorna
DecoderOutput ou tuple
As imagens de ida e volta, com forma (batch_size, out_channels, 1, height, width).
Codifique e depois decodifique um lote de imagens.