Diffusers documentation
AutoencoderKLMiniMaxH3Image
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
< 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) )
Модель 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
< source >( x: Tensorreturn_dict: bool = True )
Параметры
- x (
torch.Tensor) — Входная партия изображений, форма(batch_size, in_channels, height, width). - return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращать AutoencoderKLOutput вместо обычного кортежа.
Кодирует пакет изображений в латенты.
decode
< source >( 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
< 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) — Входная партия изображений, форма(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).
Кодируйте, а затем декодируйте пакет изображений.