Diffusers documentation

AutoencoderKLMiniMaxH3Image

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.43.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderKLMiniMaxH3Image

Модель вариационного автоэнкодера (VAE) для изображений с потерей KL, используемая в MiniMax-H3-Image от MiniMax. Она сочетает причинный 3D CNN-энкодер из AutoencoderKLMiniMaxH3, работающий с одиночным кадром, с 2D ViT-декодером и сжимает изображение в 16 раз по пространственному измерению. Методы encode и decode принимают и возвращают 4D тензоры изображений.

Она разделяет три соглашения с AutoencoderKLMiniMaxH3:

  • Латенты нормализуются по каналам. Параметра scaling_factor нет: пайплайн кодирует с помощью (latent - latents_mean) / latents_std и декодирует с помощью latent * latents_std + latents_mean.
  • Пиксельная конвенция — это нормализованные по ImageNet RGB-значения в базовом диапазоне [0, 1], а не стандартный [-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

класс diffusers.AutoencoderKLMiniMaxH3Image

< >

( 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) )

Модель VAE с каузным 3D CNN-энкодером и некаузным 2D ViT-декодером, используемая в MiniMax-H3-Image. Энкодер представляет собой видеоэнкодер MiniMax-H3, применяемый к одиночному кадру; декодер — это ViT, работающий только с изображениями.

Эта модель наследуется от ModelMixin. См. документацию суперкласса для его универсальных методов, реализованных для всех моделей (например, загрузка или сохранение).

Латенты нормализуются с помощью latents_mean / latents_std для каждого канала, а не scaling_factor; конвейер кодирует с помощью (latent - latents_mean) / latents_std и декодирует с помощью latent * latents_std + latents_mean.

Пиксельная конвенция — это RGB, нормализованный по ImageNet, в базовом диапазоне [0, 1], а не в привычном [-1, 1]: 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

< >

( x: Tensorreturn_dict: bool = True )

Параметры

  • x (torch.Tensor) — Входная партия изображений, форма (batch_size, in_channels, height, width).
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать AutoencoderKLOutput вместо обычного кортежа.

Кодирует пакет изображений в латенты.

decode

< >

( z: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple

Параметры

  • z (torch.Tensor) — Входная партия латентов, форма (batch_size, latent_channels, height, width).
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать DecoderOutput вместо обычного кортежа.

Возвращает

DecoderOutput или tuple

Декодированные изображения, форма (batch_size, out_channels, height * spatial_compression_ratio, width * spatial_compression_ratio).

Декодировать пакет латентов.

enable_tiling

< >

( 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

< >

( sample: Tensorsample_posterior: bool = Falsegenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → DecoderOutput or tuple

Параметры

  • sample (torch.Tensor) — Входная партия изображений, форма (batch_size, in_channels, height, width).
  • sample_posterior (bool, необязательный, по умолчанию False) — Следует ли извлекать выборку из апостериорного распределения вместо взятия его моды.
  • generator (torch.Generator, необязательный) — Генератор, используемый при sample_posterior=True.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать DecoderOutput вместо обычного кортежа.

Возвращает

DecoderOutput или tuple

Изображения после обратного преобразования, форма (batch_size, out_channels, height, width).

Кодируйте, а затем декодируйте пакет изображений.

Update on GitHub