Diffusers documentation

Tiny AutoEncoder

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

Tiny AutoEncoder

Tiny AutoEncoder for Stable Diffusion (TAESD) был представлен в madebyollin/taesd Ollin Boer Bohan. Это компактная дистиллированная версия VAE Stable Diffusion, которая позволяет почти мгновенно декодировать латенты в StableDiffusionPipeline или StableDiffusionXLPipeline.

Для использования со Stable Diffusion v-2.1:

import torch
from diffusers import DiffusionPipeline, AutoencoderTiny

pipe = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-2-1-base", dtype=torch.float16
)
pipe.vae = AutoencoderTiny.from_pretrained("madebyollin/taesd", dtype=torch.float16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

prompt = "slice of delicious New York-style berry cheesecake"
image = pipe(prompt, num_inference_steps=25).images[0]
image

Использование со Stable Diffusion XL 1.0

import torch
from diffusers import DiffusionPipeline, AutoencoderTiny

pipe = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16
)
pipe.vae = AutoencoderTiny.from_pretrained("madebyollin/taesdxl", dtype=torch.float16)
pipe = pipe.to("cuda")  # or "mps", "xpu", "cpu"

prompt = "slice of delicious New York-style berry cheesecake"
image = pipe(prompt, num_inference_steps=25).images[0]
image

AutoencoderTiny

класс diffusers.AutoencoderTiny

< >

( in_channels: int = 3out_channels: int = 3encoder_block_out_channels: tuple = (64, 64, 64, 64)decoder_block_out_channels: tuple = (64, 64, 64, 64)act_fn: str = 'relu'upsample_fn: str = 'nearest'latent_channels: int = 4upsampling_scaling_factor: int = 2num_encoder_blocks: tuple = (1, 3, 3, 3)num_decoder_blocks: tuple = (3, 3, 3, 1)latent_magnitude: int = 3latent_shift: float = 0.5force_upcast: bool = Falsescaling_factor: float = 1.0shift_factor: float = 0.0 )

Параметры

  • in_channels (int, необязательный, по умолчанию 3) — Количество каналов во входном изображении.
  • out_channels (int, необязательный, по умолчанию 3) — Количество каналов на выходе.
  • encoder_block_out_channels (tuple[int], необязательный, по умолчанию (64, 64, 64, 64)) — кортеж целых чисел, задающий количество выходных каналов для каждого блока энкодера. Длина кортежа должна быть равна количеству блоков энкодера.
  • decoder_block_out_channels (tuple[int], необязательный, по умолчанию (64, 64, 64, 64)) — кортеж целых чисел, задающий количество выходных каналов для каждого блока декодера. Длина кортежа должна быть равна количеству блоков декодера.
  • act_fn (str, необязательный, по умолчанию "relu") — Функция активации, используемая во всей модели.
  • latent_channels (int, необязательный, по умолчанию 4) — Количество каналов в латентном представлении. Латентное пространство служит сжатым представлением входного изображения.
  • upsampling_scaling_factor (int, необязательный, по умолчанию 2) — Коэффициент масштабирования при апсемплинге в декодере. Определяет размер выходного изображения в процессе апсемплинга.
  • num_encoder_blocks (tuple[int], необязательный, по умолчанию (1, 3, 3, 3)) — кортеж целых чисел, задающий количество блоков кодировщика на каждом этапе процесса кодирования. Длина кортежа должна быть равна числу этапов в кодировщике. На каждом этапе количество блоков кодировщика различно.
  • num_decoder_blocks (tuple[int], необязательный, по умолчанию (3, 3, 3, 1)) — кортеж целых чисел, задающий количество блоков декодера на каждом этапе процесса декодирования. Длина кортежа должна быть равна числу этапов в декодере. На каждом этапе количество блоков декодера различно.
  • latent_magnitude (float, необязательный, по умолчанию 3.0) — Масштаб латентного представления. Этот параметр масштабирует значения латентного представления для управления степенью сохранения информации.
  • latent_shift (float, необязательный, по умолчанию 0.5) — Сдвиг, применяемый к латентному представлению. Этот параметр управляет центром латентного пространства.
  • scaling_factor (float, необязательный, по умолчанию 1.0) — Послекомпонентное стандартное отклонение обученного латентного пространства, вычисленное на основе первой пакетной выборки (batch) обучающей выборки. Используется для масштабирования латентного пространства до единичной дисперсии при обучении диффузионной модели. Перед передачей в диффузионную модель латенты масштабируются по формуле z = z * scaling_factor. При декодировании латенты возвращаются к исходному масштабу по формуле: z = 1 / scaling_factor * z. Дополнительные сведения см. в разделах 4.3.2 и D.1 статьи High-Resolution Image Synthesis with Latent Diffusion Models. Однако для данного Автоэнкодера такой коэффициент масштабирования не использовался, поэтому значение по умолчанию равно 1.0.
  • force_upcast (bool, необязательный, по умолчанию False) — Если включено, принудительно заставляет VAE работать в float32 для пайплайнов с высоким разрешением изображений, таких как SD-XL. VAE можно дообучить / обучить для более низкого диапазона без значительной потери точности, в этом случае force_upcast можно установить в False (см. этот fp16-совместимый AutoEncoder).

Небольшая дистиллированная модель VAE для кодирования изображений в латенты и декодирования латентных представлений в изображения.

AutoencoderTiny — это обёртка над исходной реализацией TAESD.

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

forward

< >

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

Параметры

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

Возвращает

DecoderOutput или tuple

Если return_dict равно True, возвращается DecoderOutput, в противном случае возвращается обычный tuple.

scale_latents

< >

( x: Tensor )

сырые латенты -> [0, 1]

unscale_latents

< >

( x: Tensor )

[0, 1] -> необработанные латенты

AutoencoderTinyOutput

класс diffusers.models.autoencoders.autoencoder_tiny.AutoencoderTinyOutput

< >

( latents: Tensor )

Параметры

  • latents (torch.Tensor) — Закодированные выходные данные Encoder.

Результат метода кодирования AutoencoderTiny.

Update on GitHub