Diffusers documentation
PriorTransformer
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
< 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 )
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 modelohidden_states - num_embeddings (
int, opcional, valor predeterminado 77) — El número de embeddings de la entrada del modelohidden_states - additional_embeddings (
int, opcional, valor predeterminado 4) — El número de tokens adicionales que se añaden a loshidden_statesproyectados. La longitud real de loshidden_statesutilizados esnum_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 enNonesi no se necesita normalización. - embedding_proj_norm_type (
str, opcional, valor predeterminado None) — La capa de normalización que se aplica a la entradaproj_embedding. Establézcala enNonesi no se necesita normalización. - encoder_hid_proj_type (
str, opcional, valor predeterminadolinear) — La capa de proyección que se aplica a la entradaencoder_hidden_states. Establézcala enNonesiencoder_hidden_statesesNone. - added_emb_type (
str, opcional, valor predeterminadoprd) — Incrustaciones adicionales para condicionar el modelo. Elige entreprdoNone. Si eligesprd, 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 esNone, 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 tonum_attention_heads * attention_head_dim` - embedding_proj_dim (
int, opcional, valor predeterminado None) — La dimensión deproj_embedding. Si es None, se establecerá enembedding_dim. - clip_embed_dim (
int, opcional, valor predeterminado None) — La dimensión de la salida. Si es None, se establecerá enembedding_dim.
Un modelo Transformer A Prior.
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
Parámetros
- hidden_states (
torch.Tensorde forma(batch_size, embedding_dim)) — Los embeddings de imagen actualmente predichos. - timestep (
torch.LongTensor) — Paso actual de desruido. - proj_embedding (
torch.Tensorde forma(batch_size, embedding_dim)) — Vector de embedding proyectado sobre el que se condiciona el proceso de denoising. - encoder_hidden_states (
torch.Tensorde 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.BoolTensorde forma(batch_size, num_embeddings)) — Máscara de texto para las incrustaciones de texto. - return_dict (
bool, opcional, valor predeterminadoTrue) — 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.
Desactiva los procesadores de atención personalizados y establece la implementación de atención predeterminada.
PriorTransformerOutput
clase diffusers.models.transformers.prior_transformer.PriorTransformerOutput
< source >( predicted_image_embedding: Tensor )
La salida de PriorTransformer.