Diffusers documentation

AutoencoderKLMiniMaxH3

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

and get access to the augmented documentation experience

to get started

AutoencoderKLMiniMaxH3

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

Три особенности отличают его от большинства автоэнкодеров в библиотеке:

  • Латенты нормализуются по каналам. Параметра 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 был выпущен с включённым тайлингом как для кодирования, так и для декодирования, а опубликованные кадры являются результатом смешанного тайлинга, поэтому отключение этой функции изменяет вывод. Используйте enable_tiling, чтобы изменить геометрию тайлов, и disable_tiling, чтобы отключить тайлинг.

Временная геометрия фиксируется параметрами clip_length (17 пиксельных кадров на чанк энкодера) и token_drop (3 хвостовых латентных кадра отбрасываются при каждом кодировании), поэтому 17 * n + 5 пиксельных кадров соответствуют 5 * n + 2 латентным кадрам.

import torch
from diffusers import AutoencoderKLMiniMaxH3

vae = AutoencoderKLMiniMaxH3.from_pretrained(
    "MiniMaxAI/MiniMax-H3", subfolder="vae", dtype=torch.float32
).to("cuda")  # or "mps", "xpu", "cpu"

AutoencoderKLMiniMaxH3

класс diffusers.AutoencoderKLMiniMaxH3

< >

( 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-05clip_length: int = 17token_drop: int = 3latents_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) )

Модель VAE с каузальным 3D CNN-энкодером и некаузальным ViT-декодером, используемая в MiniMax-H3.

Эта модель наследуется от 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] перед постобработкой.

Временная геометрия фиксируется параметрами clip_length (17 пиксельных кадров на чанк энкодера) и token_drop (3 хвостовых латентных кадра отбрасываются при кодировании): 17 * n + 5 пиксельных кадров соответствуют 5 * n + 2 латентным кадрам.

В отличие от большинства автоэнкодеров в библиотеке, пространственная тайловая обработка включена по умолчанию: MiniMax-H3 был выпущен с включённой тайловой обработкой как для кодирования, так и для декодирования, а опубликованные кадры являются результатом смешивания тайлов, поэтому отключение тайловой обработки изменяет выход. Используйте enable_tiling, чтобы изменить геометрию тайлов, и disable_tiling, чтобы отключить её.

encode

< >

( x: Tensorreturn_dict: bool = True )

Параметры

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

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

decode

< >

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

Параметры

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

Возвращает

DecoderOutput или tuple

Декодированные видео, форма (batch_size, out_channels, num_frames, height, width).

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

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, num_frames, height, width).
  • sample_posterior (bool, необязательный, по умолчанию False) — Следует ли извлекать выборку из апостериорного распределения вместо взятия его моды.
  • generator (torch.Generator, необязательный) — Генератор, используемый при sample_posterior=True.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать DecoderOutput вместо обычного кортежа.

Возвращает

DecoderOutput или tuple

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

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

Update on GitHub