Diffusers documentation
PriorTransformer
PriorTransformer
Prior Transformer был впервые представлен в работе Hierarchical Text-Conditional Image Generation with CLIP Latents Ramesh et al. Он используется для предсказания изображений CLIP по текстовым эмбеддингам CLIP; эмбеддинги изображений предсказываются с помощью процесса диффузионного шумоподавления.
Аннотация из статьи:
Показано, что контрастивные модели, такие как CLIP, обучают робастные представления изображений, захватывающие как семантику, так и стиль. Чтобы использовать эти представления для генерации изображений, мы предлагаем двухэтапную модель: априорную модель, которая генерирует представление изображения CLIP по текстовому описанию, и декодер, который генерирует изображение с условием на это представление. Мы показываем, что явная генерация представлений изображений повышает разнообразие генерируемых изображений при минимальной потере фотореализма и сходства с описанием. Наши декодеры, работающие с условием на представления изображений, также могут создавать вариации изображения, сохраняя его семантику и стиль, но изменяя несущественные детали, отсутствующие в представлении изображения. Более того, совместное пространство представлений CLIP позволяет выполнять манипуляции с изображениями по языковому запросу в режиме zero-shot. Мы используем диффузионные модели для декодера и проводим эксперименты как с авто регрессионными, так и с диффузионными моделями для априорной модели, обнаружив, что вторые вычислительно более эффективны и дают образцы более высокого качества.
PriorTransformer
класс diffusers.PriorTransformer
< source >( 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 tonum_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
< source >( 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.
Отключает пользовательские обработчики внимания и устанавливает реализацию внимания по умолчанию.
PriorTransformerOutput
класс diffusers.models.transformers.prior_transformer.PriorTransformerOutput
< source >( predicted_image_embedding: Tensor )
Вывод PriorTransformer.