Buckets:

hf-doc-build/doc / diffusers /main /ru /api /models /consistency_decoder_vae.md
mishig's picture
|
download
raw
8.54 kB

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

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

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

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

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

ConsistencyDecoderVAE[[diffusers.ConsistencyDecoderVAE]]

diffusers.ConsistencyDecoderVAE[[diffusers.ConsistencyDecoderVAE]]

diffusers.ConsistencyDecoderVAE(scaling_factor: float = 0.18215, latent_channels: int = 4, sample_size: int = 32, encoder_act_fn: str = 'silu', encoder_block_out_channels: tuple[int, ...] = (128, 256, 512, 512), encoder_double_z: bool = True, encoder_down_block_types: tuple[str, ...] = ('DownEncoderBlock2D', 'DownEncoderBlock2D', 'DownEncoderBlock2D', 'DownEncoderBlock2D'), encoder_in_channels: int = 3, encoder_layers_per_block: int = 2, encoder_norm_num_groups: int = 32, encoder_out_channels: int = 4, decoder_add_attention: bool = False, decoder_block_out_channels: tuple[int, ...] = (320, 640, 1024, 1024), decoder_down_block_types: tuple[str, ...] = ('ResnetDownsampleBlock2D', 'ResnetDownsampleBlock2D', 'ResnetDownsampleBlock2D', 'ResnetDownsampleBlock2D'), decoder_downsample_padding: int = 1, decoder_in_channels: int = 7, decoder_layers_per_block: int = 3, decoder_norm_eps: float = 1e-05, decoder_norm_num_groups: int = 32, decoder_num_train_timesteps: int = 1024, decoder_out_channels: int = 6, decoder_resnet_time_scale_shift: str = 'scale_shift', decoder_time_embedding_type: str = 'learned', decoder_up_block_types: tuple[str, ...] = ('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[[diffusers.ConsistencyDecoderVAE.decode]]

decode(z: Tensor, generator: typing.Optional[torch.Generator] = None, return_dict: bool = True, num_inference_steps: int = 2)

Источник

Параметры:

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[[diffusers.ConsistencyDecoderVAE.encode]]

encode(x: Tensor, return_dict: bool = True)

Источник

Параметры:

x (torch.Tensor) : Входная партия изображений.

return_dict (bool, необязательный, по умолчанию True) : Возвращать ли ConsistencyDecoderVAEOutput вместо обычного кортежа.

Возвращает:

Латентные представления закодированных изображений. Если return_dict равно True, возвращается ConsistencyDecoderVAEOutput, в противном случае возвращается обычный tuple.

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

forward[[diffusers.ConsistencyDecoderVAE.forward]]

forward(sample: Tensor, sample_posterior: bool = False, return_dict: bool = True, generator: typing.Optional[torch.Generator] = None)

Источник

Параметры:

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[[diffusers.ConsistencyDecoderVAE.set_default_attn_processor]]

set_default_attn_processor()

Источник

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

tiled_encode[[diffusers.ConsistencyDecoderVAE.tiled_encode]]

tiled_encode(x: Tensor, return_dict: bool = True)

Источник

Параметры:

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

Xet Storage Details

Size:
8.54 kB
·
Xet hash:
329dda9695c81a48671008749285f8c49ea57cf879a32874f416700a72885395

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.