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

El Prior Transformer se introdujo originalmente en Hierarchical Text-Conditional Image Generation with CLIP Latents de Ramesh et al. Se utiliza para predecir embeddings de imagen de CLIP a partir de embeddings de texto de CLIP; los embeddings de imagen se predicen mediante un proceso de difusión de desruido.

El resumen del artículo es:

Los modelos contrastivos como CLIP han demostrado aprender representaciones robustas de imágenes que capturan tanto la semántica como el estilo. Para aprovechar estas representaciones para la generación de imágenes, proponemos un modelo de dos etapas: un prior que genera un embedding de imagen de CLIP dado un texto de descripción, y un decodificador que genera una imagen condicionada al embedding de imagen. Mostramos que generar explícitamente representaciones de imagen mejora la diversidad de las imágenes con una pérdida mínima en fotorrealismo y similitud con la descripción. Nuestros decodificadores condicionados a representaciones de imagen también pueden producir variaciones de una imagen que preservan tanto su semántica como su estilo, mientras varían los detalles no esenciales ausentes de la representación de imagen. Además, el espacio de embedding conjunto de CLIP permite manipulaciones de imagen guiadas por lenguaje de forma zero-shot. Utilizamos modelos de difusión para el decodificador y experimentamos con modelos tanto autoregresivos como de difusión para el prior, encontrando que estos últimos son computacionalmente más eficientes y producen muestras de mayor calidad.

PriorTransformer

clase 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, valor predeterminado 32) — El número de cabezas a utilizar para la atención multi-cabeza.
  • attention_head_dim (int, opcional, valor predeterminado 64) — El número de canales en cada cabeza.
  • num_layers (int, opcional, valor predeterminado 20) — El número de capas de bloques Transformer a utilizar.
  • embedding_dim (int, opcional, valor predeterminado 768) — La dimensión de la entrada del modelo hidden_states
  • num_embeddings (int, opcional, valor predeterminado 77) — El número de embeddings de la entrada del modelo hidden_states
  • additional_embeddings (int, opcional, valor predeterminado 4) — El número de tokens adicionales que se añaden a los hidden_states proyectados. La longitud real de los hidden_states utilizados es num_embeddings + additional_embeddings.
  • dropout (float, opcional, valor predeterminado 0.0) — La probabilidad de dropout a utilizar.
  • time_embed_act_fn (str, opcional, por defecto ‘silu’) — La función de activación que se utilizará para crear las incrustaciones de paso de tiempo.
  • norm_in_type (str, opcional, valor predeterminado None) — La capa de normalización que se aplica a los estados ocultos antes de pasarlos a los bloques Transformer. Establézcala en None si no se necesita normalización.
  • embedding_proj_norm_type (str, opcional, valor predeterminado None) — La capa de normalización que se aplica a la entrada proj_embedding. Establézcala en None si no se necesita normalización.
  • encoder_hid_proj_type (str, opcional, valor predeterminado linear) — La capa de proyección que se aplica a la entrada encoder_hidden_states. Establézcala en None si encoder_hidden_states es None.
  • added_emb_type (str, opcional, valor predeterminado prd) — Incrustaciones adicionales para condicionar el modelo. Elige entre prd o None. Si eliges prd, se añadirá al inicio un token que indica el producto punto (cuantizado) entre la incrustación de texto y la incrustación de imagen, tal como se propone en el paper unclip https://huggingface.co/papers/2204.06125 Si es None, no se añadirán incrustaciones adicionales al inicio.
  • 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, valor predeterminado None) — La dimensión de proj_embedding. Si es None, se establecerá en embedding_dim.
  • clip_embed_dim (int, opcional, valor predeterminado None) — La dimensión de la salida. Si es None, se establecerá en embedding_dim.

Un 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)) — Los embeddings de imagen actualmente predichos.
  • timestep (torch.LongTensor) — Paso actual de desruido.
  • proj_embedding (torch.Tensor de forma (batch_size, embedding_dim)) — Vector de embedding proyectado sobre el que se condiciona el proceso de denoising.
  • encoder_hidden_states (torch.Tensor de forma (batch_size, num_embeddings, embedding_dim)) — Estados ocultos de las incrustaciones de texto en las que se condiciona el proceso de desruido.
  • attention_mask (torch.BoolTensor de forma (batch_size, num_embeddings)) — Máscara de texto para las incrustaciones de texto.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un PriorTransformerOutput en lugar de una tupla simple.

Devuelve

PriorTransformerOutput o tuple

Si return_dict es True, se devuelve un PriorTransformerOutput; en caso contrario, se devuelve una tupla cuyo primer elemento es el tensor de la muestra.

El método forward de PriorTransformer.

set_default_attn_processor

< >

( )

Desactiva los procesadores de atención personalizados y establece la implementación de atención predeterminada.

PriorTransformerOutput

clase diffusers.models.transformers.prior_transformer.PriorTransformerOutput

< >

( predicted_image_embedding: Tensor )

Parámetros

  • predicted_image_embedding (torch.Tensor de forma (batch_size, embedding_dim)) — El embedding de imagen CLIP predicho, condicionado por la entrada de embedding de texto CLIP.

La salida de PriorTransformer.

Update on GitHub