Diffusers documentation

PriorTransformer

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

PriorTransformer

Prior Transformer был впервые представлен в работе Hierarchical Text-Conditional Image Generation with CLIP Latents Ramesh et al. Он используется для предсказания изображений CLIP по текстовым эмбеддингам CLIP; эмбеддинги изображений предсказываются с помощью процесса диффузионного шумоподавления.

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

Показано, что контрастивные модели, такие как CLIP, обучают робастные представления изображений, захватывающие как семантику, так и стиль. Чтобы использовать эти представления для генерации изображений, мы предлагаем двухэтапную модель: априорную модель, которая генерирует представление изображения CLIP по текстовому описанию, и декодер, который генерирует изображение с условием на это представление. Мы показываем, что явная генерация представлений изображений повышает разнообразие генерируемых изображений при минимальной потере фотореализма и сходства с описанием. Наши декодеры, работающие с условием на представления изображений, также могут создавать вариации изображения, сохраняя его семантику и стиль, но изменяя несущественные детали, отсутствующие в представлении изображения. Более того, совместное пространство представлений CLIP позволяет выполнять манипуляции с изображениями по языковому запросу в режиме zero-shot. Мы используем диффузионные модели для декодера и проводим эксперименты как с авто регрессионными, так и с диффузионными моделями для априорной модели, обнаружив, что вторые вычислительно более эффективны и дают образцы более высокого качества.

PriorTransformer

класс diffusers.PriorTransformer

< >

( num_attention_heads: int = 32attention_head_dim: int = 64num_layers: int = 20embedding_dim: int = 768num_embeddings = 77additional_embeddings = 4dropout: float = 0.0time_embed_act_fn: str = 'silu'norm_in_type: str | None = Noneembedding_proj_norm_type: str | None = Noneencoder_hid_proj_type: str | None = 'linear'added_emb_type: str | None = 'prd'time_embed_dim: int | None = Noneembedding_proj_dim: int | None = Noneclip_embed_dim: int | None = None )

Параметры

  • num_attention_heads (int, необязательный, по умолчанию 32) — количество головок для использования в механизме multi-head attention.
  • attention_head_dim (int, необязательный, по умолчанию 64) — количество каналов в каждой голове.
  • num_layers (int, необязательный, по умолчанию 20) — Количество блоков Transformer, используемых в модели.
  • embedding_dim (int, необязательный, по умолчанию 768) — размерность входных hidden_states модели
  • num_embeddings (int, необязательный, по умолчанию 77) — Количество эмбеддингов входных данных модели hidden_states
  • additional_embeddings (int, необязательный, по умолчанию 4) — количество дополнительных токенов, добавляемых к проецированным hidden_states. Фактическая длина используемых hidden_states равна num_embeddings + additional_embeddings.
  • dropout (float, необязательный, по умолчанию 0.0) — Вероятность dropout, которую следует использовать.
  • time_embed_act_fn (str, необязательный, по умолчанию ‘silu’) — Функция активации, используемая для создания эмбеддингов временных шагов.
  • norm_in_type (str, необязательный, по умолчанию None) — слой нормализации, применяемый к скрытым состояниям перед передачей в блоки Transformer. Установите None, если нормализация не требуется.
  • embedding_proj_norm_type (str, необязательный, по умолчанию None) — Слой нормализации, применяемый к входным proj_embedding. Установите значение None, если нормализация не требуется.
  • encoder_hid_proj_type (str, необязательный, по умолчанию linear) — Слой проекции, применяемый к входным encoder_hidden_states. Установите значение None, если encoder_hidden_states равно None.
  • added_emb_type (str, необязательный, по умолчанию prd) — Дополнительные эмбеддинги для условного формирования модели. Выберите prd или None. Если выбрано prd, перед входом добавляется токен, указывающий на (квантованное) скалярное произведение между текстовым и изображенческим эмбеддингами, как предложено в статье unclip https://huggingface.co/papers/2204.06125 Если указано None, дополнительные эмбеддинги не добавляются.
  • time_embed_dim (int, *optional*, defaults to None) -- The dimension of timestep embeddings. If None, will be set to num_attention_heads * attention_head_dim`
  • embedding_proj_dim (int, необязательный, по умолчанию None) — Размерность proj_embedding. Если значение равно None, будет установлено значение embedding_dim.
  • clip_embed_dim (int, необязательный, по умолчанию None) — Размерность выходных данных. Если значение равно None, устанавливается embedding_dim.

Модель A Prior Transformer.

forward

< >

( hidden_statestimestep: typing.Union[torch.Tensor, float, int]proj_embedding: Tensorencoder_hidden_states: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.BoolTensor] = Nonereturn_dict: bool = True ) → PriorTransformerOutput or tuple

Параметры

  • hidden_states (torch.Tensor формы (batch_size, embedding_dim)) — Текущие предсказанные эмбеддинги изображений.
  • timestep (torch.LongTensor) — Текущий шаг денойзинга.
  • proj_embedding (torch.Tensor формы (batch_size, embedding_dim)) — Проецированный вектор эмбеддинга, на который опирается процесс шумоподавления.
  • encoder_hidden_states (torch.Tensor формы (batch_size, num_embeddings, embedding_dim)) — Скрытые состояния текстовых эмбеддингов, на которые опирается процесс денойзинга.
  • attention_mask (torch.BoolTensor формы (batch_size, num_embeddings)) — Маска текста для текстовых эмбеддингов.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать PriorTransformerOutput вместо обычного кортежа.

Возвращает

PriorTransformerOutput или tuple

If return_dict is True, a PriorTransformerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.

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

set_default_attn_processor

< >

( )

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

PriorTransformerOutput

класс diffusers.models.transformers.prior_transformer.PriorTransformerOutput

< >

( predicted_image_embedding: Tensor )

Параметры

  • predicted_image_embedding (torch.Tensor формы (batch_size, embedding_dim)) — Предсказанное CLIP-вложение изображения, обусловленное входным CLIP-вложением текста.

Вывод PriorTransformer.

Update on GitHub