Diffusers documentation
PriorTransformer
PriorTransformer
Prior Transformer, Ramesh ve ark. tarafından Hierarchical Text-Conditional Image Generation with CLIP Latents makalesinde ilk kez tanıtılmıştır. CLIP metin gömcelerinden CLIP görüntü gömcelerini tahmin etmek için kullanılır; görüntü gömceleri, gürültü azaltma difüzyon süreci aracılığıyla tahmin edilir.
Makalenin özeti şudur:
CLIP gibi kontrastif modellerin, hem semantiği hem de stili yakalayan, görüntülerin sağlam temsillerini öğrendiği gösterilmiştir. Bu temsilleri görüntü üretimi için kullanmak amacıyla iki aşamalı bir model öneriyoruz: bir metin açıklaması verildiğinde bir CLIP görüntü gömümünü üreten bir öncül (prior) ve görüntü gömümüne koşullu olarak bir görüntü üreten bir çözücü (decoder). Görüntü temsillerinin açıkça üretilmesinin, fotogerçekçilikte ve açıklama benzerliğinde minimal kayıpla görüntü çeşitliliğini artırdığını gösteriyoruz. Görüntü temsillerine koşullu çözücülerimiz, görüntü temsilinde bulunmayan, önemsiz detayları değiştirirken hem semantiği hem de stili koruyan bir görüntünün varyasyonlarını da üretebilir. Ayrıca, CLIP'in ortak gömüm uzayı, sıfır atış (zero-shot) bir şekilde dil yönlendirmeli görüntü manipülasyonlarını mümkün kılar. Çözücü için difüzyon modelleri kullanıyor ve öncül için hem otoregresif hem de difüzyon modelleriyle deney yapıyoruz; sonuncuların hesaplama açısından daha verimli olduğunu ve daha yüksek kaliteli örnekler ürettiğini buluyoruz.
PriorTransformer
sınıf 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 )
Parametreler
- num_attention_heads (
int, isteğe bağlı, varsayılan 32) — Çok başlı dikkat (multi-head attention) için kullanılacak baş sayısı. - attention_head_dim (
int, isteğe bağlı, varsayılan 64) — Her baştaki kanal sayısı. - num_layers (
int, isteğe bağlı, varsayılan 20) — Kullanılacak Transformer bloklarının katman sayısı. - embedding_dim (
int, isteğe bağlı, varsayılan 768) — Model girdisihidden_states'nin boyutu - num_embeddings (
int, isteğe bağlı, varsayılan 77) — Model girdisihidden_statesiçin gömme sayısı - additional_embeddings (
int, isteğe bağlı, varsayılan 4) — Projelendirilmişhidden_states'e eklenen ek token sayısı. Kullanılanhidden_states'in gerçek uzunluğunum_embeddings + additional_embeddings'tir. - dropout (
float, isteğe bağlı, varsayılan 0.0) — Kullanılacak dropout olasılığı. - time_embed_act_fn (
str, isteğe bağlı, varsayılan ‘silu’) — Adım (timestep) gömmelemelerini oluşturmak için kullanılacak aktivasyon fonksiyonu. - norm_in_type (
str, isteğe bağlı, varsayılan None) — Transformer bloklarına aktarılmasından önce gizli durumlara uygulanacak normalizasyon katmanı. Normalizasyona gerek yoksaNoneolarak ayarlayın. - embedding_proj_norm_type (
str, isteğe bağlı, varsayılanı None) — Girişproj_embeddingüzerinde uygulanacak normalizasyon katmanı. Normalizasyona gerek yoksaNoneolarak ayarlayın. - encoder_hid_proj_type (
str, isteğe bağlı, varsayılanlinear) — Girişencoder_hidden_statesüzerinde uygulanacak projeksiyon katmanı.encoder_hidden_statesNoneise bunuNoneolarak ayarlayın. - added_emb_type (
str, isteğe bağlı, varsayılanprd) — Modeli koşullandırmak için ek gömlemeler.prdveyaNonearasından seçim yapın.prdseçilirse, unclip makalesinde önerildiği gibi metin gömlemesi ile görüntü gömlemesi arasındaki (kuantize) nokta çarpımını gösteren bir jeton başa eklenir https://huggingface.co/papers/2204.06125Noneise, ek gömlemeler başa eklenmez. - 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, isteğe bağlı, varsayılan None) —proj_embeddingboyutu. None iseembedding_dimolarak ayarlanır. - clip_embed_dim (
int, isteğe bağlı, varsayılan None) — Çıktının boyutu. None iseembedding_dimolarak ayarlanır.
A Prior Transformer modeli.
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
Parametreler
- hidden_states (
torch.Tensor, şekli(batch_size, embedding_dim)) — Şu anda tahmin edilen gömme (embedding) değerleri. - timestep (
torch.LongTensor) — Güncel gürültü azaltma adımı. - proj_embedding (
torch.Tensor, şekli(batch_size, embedding_dim)) — Gürültü azaltma sürecinin koşullandığı projeksiyon gömme vektörü. - encoder_hidden_states (
torch.Tensor, şekli(batch_size, num_embeddings, embedding_dim)) — Gürültü azaltma sürecinin koşullandığı metin gömme gizli durumları. - attention_mask (
torch.BoolTensor, şekli(batch_size, num_embeddings)) — Metin gömme vektörleri için metin maskesi. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine PriorTransformerOutput döndürülüp döndürülmemesi.
Dönüş değeri
PriorTransformerOutput veya tuple
return_dict True ise, PriorTransformerOutput döndürülür, aksi takdirde bir tuple döndürülür ve bu tuple'ın ilk öğesi örnek tensörüdür.
PriorTransformer ileri yöntemi.
Özel dikkat işleyicilerini devre dışı bırakır ve varsayılan dikkat uygulamasını ayarlar.
PriorTransformerOutput
sınıf diffusers.models.transformers.prior_transformer.PriorTransformerOutput
< source >( predicted_image_embedding: Tensor )
PriorTransformer'ın çıktısı.