Diffusers documentation
PriorTransformer
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
< 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, 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 modelohidden_states - num_embeddings (
int, opcional, padrão 77) — O número de embeddings da entrada do modelohidden_states - additional_embeddings (
int, opcional, padrão 4) — O número de tokens adicionais anexados aoshidden_statesprojetados. O comprimento real doshidden_statesutilizados é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 comoNonese 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 entradaproj_embedding. Defina comoNonese a normalização não for necessária. - encoder_hid_proj_type (
str, opcional, padrãolinear) — A camada de projeção a ser aplicada na entradaencoder_hidden_states. Defina comoNoneseencoder_hidden_statesforNone. - added_emb_type (
str, opcional, padrãoprd) — Embeddings adicionais para condicionar o modelo. Escolha entreprdouNone. Se escolherprd, 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 forNone, 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 tonum_attention_heads * attention_head_dim` - embedding_proj_dim (
int, opcional, padrão None) — A dimensão deproj_embedding. Se for None, será definida comoembedding_dim. - clip_embed_dim (
int, opcional, padrão None) — A dimensão da saída. Se for None, será definida comoembedding_dim.
Um 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)) — Os embeddings de imagem atualmente previstos. - timestep (
torch.LongTensor) — Etapa atual de desruidamento. - proj_embedding (
torch.Tensorde 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.Tensorde forma(batch_size, num_embeddings, embedding_dim)) — Estados ocultos dos embeddings de texto nos quais o processo de desruidamento é condicionado. - attention_mask (
torch.BoolTensorde forma(batch_size, num_embeddings)) — Máscara de texto para os embeddings de texto. - return_dict (
bool, opcional, padrãoTrue) — 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.
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
< source >( predicted_image_embedding: Tensor )
A saída de PriorTransformer.