Diffusers documentation

VQModel

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

VQModel

Модель VQ-VAE была представлена в работе Neural Discrete Representation Learning Аарона ван ден Оорда, Ориоля Виньяльса и Корая Кавукчуоглу. В 🤗 Diffusers эта модель используется для декодирования латентных представлений в изображения. В отличие от AutoencoderKL, VQModel работает в квантованном латентном пространстве.

Аннотация из статьи:

Получение полезных представлений без надзора остаётся ключевой задачей машинного обучения. В данной статье мы предлагаем простую, но мощную генеративную модель, которая обучает такие дискретные представления. Наша модель, Vector Quantised-Variational AutoEncoder (VQ-VAE), отличается от VAE двумя ключевыми особенностями: сеть-энкодер выводит дискретные, а не непрерывные коды; а априорное распределение обучается, а не является статическим. Чтобы обучить дискретное латентное представление, мы используем идеи векторного квантования (VQ). Применение метода VQ позволяет модели избежать проблемы «коллапса апостериорного распределения» — ситуации, при которой латентные переменные игнорируются, если они используются в паре с мощным авторегрессионным декодером, — которая обычно наблюдается в рамках VAE. Сочетая эти представления с авторегрессионным априорным распределением, модель способна генерировать изображения, видео и речь высокого качества, а также выполнять конвертацию говорящего и обучение фонем без надзора, что дополнительно подтверждает полезность полученных представлений.

VQModel

класс diffusers.VQModel

< >

( in_channels: int = 3out_channels: int = 3down_block_types: tuple = ('DownEncoderBlock2D',)up_block_types: tuple = ('UpDecoderBlock2D',)block_out_channels: tuple = (64,)layers_per_block: int = 1act_fn: str = 'silu'latent_channels: int = 3sample_size: int = 32num_vq_embeddings: int = 256norm_num_groups: int = 32vq_embed_dim: int | None = Nonescaling_factor: float = 0.18215norm_type: str = 'group'mid_block_add_attention = Truelookup_from_codebook = Falseforce_upcast = False )

Параметры

  • in_channels (int, необязательный, по умолчанию 3) — Количество каналов во входном изображении.
  • out_channels (int, необязательный, по умолчанию 3) — Количество каналов на выходе.
  • down_block_types (tuple[str], необязательный, по умолчанию ("DownEncoderBlock2D",)) — кортеж типов блоков даунсемплинга.
  • up_block_types (tuple[str], необязательный, по умолчанию ("UpDecoderBlock2D",)) — кортеж типов блоков апсемплинга.
  • block_out_channels (tuple[int], необязательный, по умолчанию (64,)) — кортеж количества выходных каналов блоков.
  • layers_per_block (int, необязательный, по умолчанию 1) — Количество слоев в каждом блоке.
  • act_fn (str, необязательный, по умолчанию "silu") — Функция активации, которую следует использовать.
  • latent_channels (int, необязательный, по умолчанию 3) — Количество каналов в латентном пространстве.
  • sample_size (int, необязательный, по умолчанию 32) — Размер выборки входных данных.
  • num_vq_embeddings (int, необязательный, по умолчанию 256) — Количество векторов в книге кодов VQ-VAE.
  • norm_num_groups (int, необязательный, по умолчанию 32) — Количество групп для слоев нормализации.
  • vq_embed_dim (int, необязательный) — Размерность скрытых векторов кодовой книги в VQ-VAE.
  • scaling_factor (float, необязательный, по умолчанию 0.18215) — Послекомпонентное стандартное отклонение обученного латентного пространства, вычисленное на основе первой партии (батча) обучающей выборки. Эта величина используется для масштабирования латентного пространства до единичной дисперсии при обучении диффузионной модели. Перед передачей в диффузионную модель латенты масштабируются по формуле z = z * scaling_factor. При декодировании латенты возвращаются к исходному масштабу по формуле: z = 1 / scaling_factor * z. Дополнительные сведения см. в разделах 4.3.2 и D.1 статьи High-Resolution Image Synthesis with Latent Diffusion Models.
  • norm_type (str, необязательный, по умолчанию "group") — Тип используемого слоя нормализации. Может быть "group" или "spatial".

Модель VQ-VAE для декодирования латентных представлений.

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

forward

< >

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

Параметры

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

Возвращает

VQEncoderOutput или tuple

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

Метод forward класса VQModel.

VQEncoderOutput

класс diffusers.models.autoencoders.vq_model.VQEncoderOutput

< >

( latents: Tensor )

Параметры

  • latents (torch.Tensor формы (batch_size, num_channels, height, width)) — Закодированный вывод из последнего слоя модели.

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

Update on GitHub