Diffusers documentation

Декодер согласованности

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

Декодер согласованности

Consistency decoder можно использовать для декодирования латентов из денезинг-UNet в StableDiffusionPipeline. Этот декодер был представлен в техническом отчёте DALL-E 3.

Исходный код можно найти в openai/consistencydecoder.

В настоящее время инференс поддерживается только для 2 итераций.

Пайплайн не мог бы быть добавлен без помощи madebyollin и mrsteyk из этого вопроса.

ConsistencyDecoderVAE

класс diffusers.ConsistencyDecoderVAE

< >

( scaling_factor: float = 0.18215latent_channels: int = 4sample_size: int = 32encoder_act_fn: str = 'silu'encoder_block_out_channels: tuple = (128, 256, 512, 512)encoder_double_z: bool = Trueencoder_down_block_types: tuple = ('DownEncoderBlock2D', 'DownEncoderBlock2D', 'DownEncoderBlock2D', 'DownEncoderBlock2D')encoder_in_channels: int = 3encoder_layers_per_block: int = 2encoder_norm_num_groups: int = 32encoder_out_channels: int = 4decoder_add_attention: bool = Falsedecoder_block_out_channels: tuple = (320, 640, 1024, 1024)decoder_down_block_types: tuple = ('ResnetDownsampleBlock2D', 'ResnetDownsampleBlock2D', 'ResnetDownsampleBlock2D', 'ResnetDownsampleBlock2D')decoder_downsample_padding: int = 1decoder_in_channels: int = 7decoder_layers_per_block: int = 3decoder_norm_eps: float = 1e-05decoder_norm_num_groups: int = 32decoder_num_train_timesteps: int = 1024decoder_out_channels: int = 6decoder_resnet_time_scale_shift: str = 'scale_shift'decoder_time_embedding_type: str = 'learned'decoder_up_block_types: tuple = ('ResnetUpsampleBlock2D', 'ResnetUpsampleBlock2D', 'ResnetUpsampleBlock2D', 'ResnetUpsampleBlock2D') )

Декодер согласованности, используемый с DALL-E 3.

Примеры:

>>> import torch
>>> from diffusers import StableDiffusionPipeline, ConsistencyDecoderVAE

>>> vae = ConsistencyDecoderVAE.from_pretrained("openai/consistency-decoder", torch_dtype=torch.float16)
>>> pipe = StableDiffusionPipeline.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5", vae=vae, torch_dtype=torch.float16
... ).to("cuda")

>>> image = pipe("horse", generator=torch.manual_seed(0)).images[0]
>>> image

decode

< >

( z: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = Truenum_inference_steps: int = 2 ) → DecoderOutput | tuple[torch.Tensor]

Параметры

  • z (torch.Tensor) — Входной латентный вектор.
  • generator (torch.Generator | None) — Генератор случайных чисел. По умолчанию None.
  • return_dict (bool) — Возвращать ли результат в виде словаря. По умолчанию True.
  • num_inference_steps (int) — Количество шагов инференса. По умолчанию 2.

Возвращает

DecoderOutput | tuple[torch.Tensor]

Раскодированный вывод.

Декодирует входной латентный вектор z с помощью модели VAE consistency decoder.

encode

< >

( x: Tensorreturn_dict: bool = True )

Параметры

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

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

forward

< >

( sample: Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None ) → DecoderOutput or tuple

Параметры

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

Возвращает

DecoderOutput или tuple

If return_dict is True, a DecoderOutput is returned, otherwise a plain tuple is returned.

set_default_attn_processor

< >

( )

Отключает пользовательские обработчики внимания и устанавливает реализацию внимания по умолчанию.

tiled_encode

< >

( x: Tensorreturn_dict: bool = True ) → ConsistencyDecoderVAEOutput or tuple

Параметры

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

Возвращает

ConsistencyDecoderVAEOutput или tuple

If return_dict is True, a ConsistencyDecoderVAEOutput is returned, otherwise a plain tuple is returned.

Кодирует пакет изображений с использованием тайлованного энкодера.

Когда эта опция включена, VAE разбивает входной тензор на плитки, чтобы вычислить кодирование за несколько шагов. Это полезно для поддержания постоянного использования памяти независимо от размера изображения. Итоговый результат плиточного кодирования отличается от неплиточного, поскольку каждая плитка использует свой собственный энкодер. Чтобы избежать артефактов на стыках плиток, они перекрываются и смешиваются для формирования плавного вывода. Вы всё ещё можете заметить изменения в выводе размером с плитку, но они должны быть значительно менее заметными.

Update on GitHub