Diffusers documentation
Tiny AutoEncoder
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]
imageAutoencoderTiny
класс diffusers.AutoencoderTiny
< source >( 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
< source >( sample: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple
Параметры
- sample (
torch.Tensor) — Входной образец. - return_dict (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращатьDecoderOutputвместо обычного кортежа.
Возвращает
DecoderOutput или tuple
Если return_dict равно True, возвращается DecoderOutput, в противном случае возвращается обычный tuple.
сырые латенты -> [0, 1]
[0, 1] -> необработанные латенты
AutoencoderTinyOutput
класс diffusers.models.autoencoders.autoencoder_tiny.AutoencoderTinyOutput
< source >( latents: Tensor )
Результат метода кодирования AutoencoderTiny.