Diffusers documentation
PriorTransformer
PriorTransformer
Le Prior Transformer a été initialement introduit dans Hierarchical Text-Conditional Image Generation with CLIP Latents par Ramesh et al. Il est utilisé pour prédire les embeddings d’images CLIP à partir des embeddings de texte CLIP ; les embeddings d’images sont prédits par un processus de diffusion de débruitage.
L'abstract de l'article est :
Les modèles contrastifs comme CLIP ont démontré leur capacité à apprendre des représentations robustes d’images qui capturent à la fois la sémantique et le style. Pour exploiter ces représentations pour la génération d’images, nous proposons un modèle en deux étapes : un modèle a priori qui génère un embedding d’image CLIP à partir d’une légende textuelle, et un décodeur qui génère une image conditionnée par l’embedding d’image. Nous montrons que la génération explicite de représentations d’images améliore la diversité des images avec une perte minimale en photoréalisme et en similarité avec la légende. Nos décodeurs conditionnés par des représentations d’images peuvent également produire des variations d’une image qui préservent à la fois sa sémantique et son style, tout en faisant varier les détails non essentiels absents de la représentation d’image. De plus, l’espace d’embedding conjoint de CLIP permet des manipulations d’images guidées par le langage de manière zéro-shot. Nous utilisons des modèles de diffusion pour le décodeur et expérimentons avec des modèles autorégressifs et des modèles de diffusion pour le modèle a priori, constatant que ces derniers sont plus efficaces sur le plan computationnel et produisent des échantillons de meilleure qualité.
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 )
Paramètres
- num_attention_heads (
int, facultatif, valeur par défaut 32) — Le nombre de têtes à utiliser pour l'attention multi-têtes. - attention_head_dim (
int, facultatif, valeur par défaut : 64) — Le nombre de canaux dans chaque tête. - num_layers (
int, facultatif, valeur par défaut 20) — Le nombre de blocs Transformer à utiliser. - embedding_dim (
int, facultatif, par défaut 768) — La dimension de l'entrée du modèlehidden_states - num_embeddings (
int, facultatif, valeur par défaut 77) — Le nombre d'embeddings de l'entrée du modèlehidden_states - additional_embeddings (
int, facultatif, valeur par défaut 4) — Le nombre de jetons supplémentaires ajoutés auxhidden_statesprojetés. La longueur réelle deshidden_statesutilisés estnum_embeddings + additional_embeddings. - dropout (
float, facultatif, valeur par défaut 0.0) — La probabilité de dropout à utiliser. - time_embed_act_fn (
str, facultatif, par défaut ‘silu’) — La fonction d’activation à utiliser pour créer les embeddings de pas de temps. - norm_in_type (
str, facultatif, par défaut None) — La couche de normalisation à appliquer sur les états cachés avant de les transmettre aux blocs Transformer. Définissez-la surNonesi la normalisation n’est pas nécessaire. - embedding_proj_norm_type (
str, facultatif, valeur par défaut None) — La couche de normalisation à appliquer sur l’entréeproj_embedding. Définissez-la surNonesi la normalisation n’est pas nécessaire. - encoder_hid_proj_type (
str, facultatif, par défautlinear) — La couche de projection à appliquer sur l’entréeencoder_hidden_states. Définissez-la surNonesiencoder_hidden_statesestNone. - added_emb_type (
str, facultatif, par défautprd) — Embeddings supplémentaires pour conditionner le modèle. Choisissez entreprdouNone. Si vous choisissezprd, un jeton indiquant le produit scalaire (quantifié) entre l’embedding du texte et l’embedding de l’image sera ajouté en préfixe, comme proposé dans l’article unclip https://huggingface.co/papers/2204.06125 S’il s’agit deNone, aucun embedding supplémentaire ne sera ajouté en préfixe. - 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, facultatif, par défaut None) — La dimension deproj_embedding. Si None, elle sera définie surembedding_dim. - clip_embed_dim (
int, facultatif, par défaut None) — La dimension de la sortie. Si None, elle sera définie surembedding_dim.
Modèle 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
Paramètres
- hidden_states (
torch.Tensorde forme(batch_size, embedding_dim)) — Les embeddings d'image actuellement prédits. - timestep (
torch.LongTensor) — Étape de débruitage actuelle. - proj_embedding (
torch.Tensorde forme(batch_size, embedding_dim)) — Vecteur d'embedding projeté sur lequel le processus de débruitage est conditionné. - encoder_hidden_states (
torch.Tensorde forme(batch_size, num_embeddings, embedding_dim)) — États cachés des embeddings de texte sur lesquels le processus de débruitage est conditionné. - attention_mask (
torch.BoolTensorde forme(batch_size, num_embeddings)) — Masque de texte pour les embeddings de texte. - return_dict (
bool, facultatif, par défautTrue) — Indique s'il faut retourner un PriorTransformerOutput plutôt qu'un simple tuple.
Retourne
PriorTransformerOutput ou tuple
Si return_dict est True, un PriorTransformerOutput est retourné, sinon un tuple est retourné dont le premier élément est le tenseur d'échantillon.
La méthode forward de PriorTransformer.
Désactive les processeurs d'attention personnalisés et définit l'implémentation d'attention par défaut.
PriorTransformerOutput
classe diffusers.models.transformers.prior_transformer.PriorTransformerOutput
< source >( predicted_image_embedding: Tensor )
La sortie de PriorTransformer.