Diffusers documentation
AutoencoderKLMiniMaxH3Image
AutoencoderKLMiniMaxH3Image
MiniMax의 MiniMax-H3-Image에 사용된 KL 손실을 적용한 이미지 변분 오토인코더(VAE) 모델입니다. AutoencoderKLMiniMaxH3의 인과적 3D CNN 인코더를 단일 프레임에 대해 실행하고 2D ViT 디코더와 결합하여 공간적으로 16배 압축합니다. encode와 decode는 4D 이미지 텐서를 입력으로 받아 반환합니다.
AutoencoderKLMiniMaxH3와 세 가지 관례를 공유합니다:
- Latents는 채널별로 정규화됩니다.
scaling_factor는 없습니다: 파이프라인은(latent - latents_mean) / latents_std로 인코딩하고latent * latents_std + latents_mean로 디코딩합니다. - 픽셀 규약은
[0, 1]기본 범위에 대한 ImageNet 정규화 RGB이며, 일반적인[-1, 1]이 아닙니다.encode는(pixel - imagenet_mean) / imagenet_std를 입력으로 기대하고decode는 동일한 공간의 값을 반환하므로, 파이프라인은 후처리 전에sample * imagenet_std + imagenet_mean를 적용하고[0, 1]로 클램프합니다. - 스페이셜 타일링은 기본적으로 활성화되어 있습니다. MiniMax-H3-Image는 인코딩과 디코딩 모두에 타일링이 활성화된 상태로 출시되었으며, 공개된 이미지는 블렌디드 타일 이미지이므로 타일링을 비활성화하면 출력이 변경됩니다. 타일 기하학을 변경하려면
enable_tiling을, 비활성화하려면disable_tiling을 사용하세요.
import torch
from diffusers import AutoencoderKLMiniMaxH3Image
vae = AutoencoderKLMiniMaxH3Image.from_pretrained(
"MiniMaxAI/MiniMax-H3-Image", subfolder="vae_diffusers", dtype=torch.float32
).to("cuda") # or "mps", "xpu", "cpu"AutoencoderKLMiniMaxH3Image
class diffusers.AutoencoderKLMiniMaxH3Image
< source >( in_channels: int = 3out_channels: int = 3latent_channels: int = 24block_out_channels: tuple[int, ...] = (128, 256, 256, 512, 512, 1024)layers_per_block: int = 2spatial_downsample_factors: tuple[int, ...] = (2, 2, 2, 2, 1, 1)temporal_downsample_factors: tuple[int, ...] = (1, 2, 2, 1, 1, 1)norm_num_groups: int = 32norm_eps: float = 1e-06spatial_padding_mode: str = 'reflect'decoder_num_layers: int = 24decoder_num_attention_heads: int = 16decoder_attention_head_dim: int = 64decoder_num_register_tokens: int = 4decoder_ffn_mult: int = 4decoder_rope_theta: float = 100.0decoder_rope_dim_ratio: float = 0.5decoder_norm_eps: float = 1e-05latents_mean: tuple[float, ...] = (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[float, ...] = (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) )
인과적 3D CNN 인코더와 비인과적 2D ViT 디코더를 갖춘 VAE 모델로, MiniMax-H3-Image에 사용됩니다. 인코더는 단일 프레임에 대해 실행되는 MiniMax-H3 비디오 인코더이며, 디코더는 이미지 전용 ViT입니다.
이 모델은 ModelMixin에서 상속됩니다. 모든 모델에 대해 구현된 일반적 메서드(다운로드 또는 저장 등)에 대해서는 상위 클래스 문서를 확인하세요.
Latents는 scaling_factor가 아니라 채널별 latents_mean / latents_std로 정규화됩니다. 파이프라인은 (latent - latents_mean) / latents_std로 인코딩하고 latent * latents_std + latents_mean로 디코딩합니다.
픽셀 규약은 일반적인 [-1, 1]이 아닌 [0, 1] 기본 범위에 대한 ImageNet 정규화 RGB입니다. encode는 (pixel - imagenet_mean) / imagenet_std를 입력으로 기대하며, decode는 동일한 공간의 값을 반환하므로 파이프라인은 후처리 전에 sample * imagenet_std + imagenet_mean (평균 (0.485, 0.456, 0.406), 표준편차 (0.229, 0.224, 0.225))를 적용하고 [0, 1]로 클램프해야 합니다.
라이브러리의 대부분의 오토인코더와 달리, 공간 타일링은 기본적으로 켜져 있습니다. MiniMax-H3-Image는 인코딩과 디코딩 모두에 타일링이 활성화된 상태로 출시되었으며, 공개된 이미지는 블렌딩된 타일 이미지이므로 타일링을 비활성화하면 출력이 변경됩니다. 타일 기하학을 변경하려면 enable_tiling을, 끄려면 disable_tiling을 사용하세요.
encode
< source >( x: Tensorreturn_dict: bool = True )
매개변수
- x (
torch.Tensor) — 입력 이미지 배치, shape(batch_size, in_channels, height, width). - return_dict (
bool, 선택 사항, 기본값True) — 단순 tuple 대신 AutoencoderKLOutput을 반환할지 여부.
이미지 배치(latents)를 인코딩합니다.
decode
< source >( z: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple
매개변수
- z (
torch.Tensor) — 입력 배치인 latents, shape(batch_size, latent_channels, height, width). - return_dict (
bool, 선택 사항, 기본값True) — 일반 튜플 대신 DecoderOutput를 반환할지 여부.
반환값
DecoderOutput 또는 tuple
shape가 (batch_size, out_channels, height * spatial_compression_ratio, width * spatial_compression_ratio)인 디코딩된 이미지입니다.
latents 배치 디코딩
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 )
매개변수
- tile_sample_min_height (
int, 선택 사항) — 픽셀 공간에서의 타일 높이입니다. 이 값보다 높은 프레임은 높이 차원을 따라 분할됩니다. - tile_sample_min_width (
int, 선택 사항) — 픽셀 공간에서의 타일 너비입니다. 이 값보다 넓은 프레임은 너비 차원을 따라 분할됩니다. - tile_sample_min_overlap_height (
int, 선택 사항) — 연속된 세로 타일 두 개 사이의 최소 겹침 값(픽셀 단위). - tile_sample_min_overlap_width (
int, 선택 사항) — 연속된 두 수평 타일 사이의 최소 겹침 폭(픽셀 단위).
타일 VAE 인코딩/디코딩 활성화. 이 옵션을 활성화하면 VAE가 프레임을 타일로 분할하고 각 타일을 개별적으로 인코딩 또는 디코딩한 뒤, 겹치는 부분을 선형 블렌딩으로 다시 결합합니다. 이를 통해 메모리 요구량이 줄어들고 더 큰 프레임을 처리할 수 있습니다.
forward
< source >( sample: Tensorsample_posterior: bool = Falsegenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DecoderOutput or tuple
매개변수
- sample (
torch.Tensor) — 입력 이미지 배치, shape(batch_size, in_channels, height, width). - sample_posterior (
bool, 선택 사항, 기본값False) — 모드를 취하는 대신 사후 분포에서 샘플링할지 여부. - generator (
torch.Generator, 선택 사항) —sample_posterior=True일 때 사용되는 Generator입니다. - return_dict (
bool, 선택 사항, 기본값True) — 일반 튜플 대신 DecoderOutput를 반환할지 여부.
반환값
DecoderOutput 또는 tuple
라운드 트립된 이미지, shape (batch_size, out_channels, height, width).
이미지 배치(batch)를 인코딩한 후 디코딩합니다.