Diffusers documentation

PriorTransformer

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

PriorTransformer

O Prior Transformer foi originalmente introduzido em Hierarchical Text-Conditional Image Generation with CLIP Latents por Ramesh et al. Ele é usado para prever embeddings de imagem do CLIP a partir de embeddings de texto do CLIP; os embeddings de imagem são previstos por meio de um processo de difusão de desruido.

O resumo do artigo é:

Modelos contrastivos como o CLIP demonstraram ser capazes de aprender representações robustas de imagens que capturam tanto a semântica quanto o estilo. Para aproveitar essas representações na geração de imagens, propomos um modelo de duas etapas: um prior que gera um embedding de imagem do CLIP dado um texto de legenda, e um decodificador que gera uma imagem condicionada ao embedding de imagem. Mostramos que a geração explícita de representações de imagem melhora a diversidade das imagens com perda mínima em fotorrealismo e similaridade com a legenda. Nossos decodificadores condicionados a representações de imagem também podem produzir variações de uma imagem que preservam tanto a semântica quanto o estilo, enquanto variam os detalhes não essenciais ausentes da representação de imagem. Além disso, o espaço de embedding conjunto do CLIP permite manipulações de imagem guiadas por linguagem de forma zero-shot. Usamos modelos de difusão para o decodificador e experimentamos com modelos autoregressivos e de difusão para o prior, constatando que os últimos são computacionalmente mais eficientes e produzem amostras de maior qualidade.

PriorTransformer

classe 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 )

Parâmetros

  • num_attention_heads (int, opcional, padrão 32) — O número de cabeças a serem usadas para a atenção multi-cabeça.
  • attention_head_dim (int, opcional, padrão 64) — O número de canais em cada cabeça.
  • num_layers (int, opcional, padrão 20) — O número de blocos de camadas de Transformer a serem usados.
  • embedding_dim (int, opcional, padrão 768) — A dimensão da entrada do modelo hidden_states
  • num_embeddings (int, opcional, padrão 77) — O número de embeddings da entrada do modelo hidden_states
  • additional_embeddings (int, opcional, padrão 4) — O número de tokens adicionais anexados aos hidden_states projetados. O comprimento real dos hidden_states utilizados é num_embeddings + additional_embeddings.
  • dropout (float, opcional, padrão 0.0) — A probabilidade de dropout a ser utilizada.
  • time_embed_act_fn (str, opcional, padrão ‘silu’) — A função de ativação a ser usada para criar embeddings de timestep.
  • norm_in_type (str, opcional, padrão None) — A camada de normalização a ser aplicada nos estados ocultos antes de passá-los para os blocos Transformer. Defina como None se a normalização não for necessária.
  • embedding_proj_norm_type (str, opcional, padrão None) — A camada de normalização a ser aplicada na entrada proj_embedding. Defina como None se a normalização não for necessária.
  • encoder_hid_proj_type (str, opcional, padrão linear) — A camada de projeção a ser aplicada na entrada encoder_hidden_states. Defina como None se encoder_hidden_states for None.
  • added_emb_type (str, opcional, padrão prd) — Embeddings adicionais para condicionar o modelo. Escolha entre prd ou None. Se escolher prd, será adicionado um token no início indicando o produto escalar (quantizado) entre o embedding de texto e o embedding de imagem, conforme proposto no paper unclip https://huggingface.co/papers/2204.06125 Se for None, nenhum embedding adicional será adicionado no início.
  • 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, opcional, padrão None) — A dimensão de proj_embedding. Se for None, será definida como embedding_dim.
  • clip_embed_dim (int, opcional, padrão None) — A dimensão da saída. Se for None, será definida como embedding_dim.

Um modelo Transformer A Prior.

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

Parâmetros

  • hidden_states (torch.Tensor de forma (batch_size, embedding_dim)) — Os embeddings de imagem atualmente previstos.
  • timestep (torch.LongTensor) — Etapa atual de desruidamento.
  • proj_embedding (torch.Tensor de forma (batch_size, embedding_dim)) — Vetor de incorporação projetado no qual o processo de remoção de ruído é condicionado.
  • encoder_hidden_states (torch.Tensor de forma (batch_size, num_embeddings, embedding_dim)) — Estados ocultos dos embeddings de texto nos quais o processo de desruidamento é condicionado.
  • attention_mask (torch.BoolTensor de forma (batch_size, num_embeddings)) — Máscara de texto para os embeddings de texto.
  • return_dict (bool, opcional, padrão True) — Se deve ou não retornar um PriorTransformerOutput em vez de uma tupla simples.

Retorna

PriorTransformerOutput ou tuple

Se return_dict for True, um PriorTransformerOutput é retornado; caso contrário, uma tupla é retornada, em que o primeiro elemento é o tensor da amostra.

O método forward do PriorTransformer.

set_default_attn_processor

< >

( )

Desativa os processadores de atenção personalizados e define a implementação padrão de atenção.

PriorTransformerOutput

classe diffusers.models.transformers.prior_transformer.PriorTransformerOutput

< >

( predicted_image_embedding: Tensor )

Parâmetros

  • predicted_image_embedding (torch.Tensor de forma (batch_size, embedding_dim)) — O embedding de imagem CLIP previsto, condicionado na entrada de embedding de texto CLIP.

A saída de PriorTransformer.

Update on GitHub