Diffusers documentation
PriorTransformer
PriorTransformer
Prior Transformer pertama kali diperkenalkan dalam Hierarchical Text-Conditional Image Generation with CLIP Latents oleh Ramesh dkk. Model ini digunakan untuk memprediksi embedding gambar CLIP dari embedding teks CLIP; embedding gambar diprediksi melalui proses denoising diffusion.
Abstrak dari makalah tersebut adalah:
Model kontrasif seperti CLIP telah terbukti mampu mempelajari representasi gambar yang robust, yang menangkap baik semantik maupun gaya. Untuk memanfaatkan representasi ini untuk generasi gambar, kami mengusulkan model dua tahap: prior yang menghasilkan embedding gambar CLIP berdasarkan caption teks, dan decoder yang menghasilkan gambar yang dikondisikan pada embedding gambar tersebut. Kami menunjukkan bahwa secara eksplisit menghasilkan representasi gambar meningkatkan keragaman gambar dengan kehilangan minimal dalam hal fotorealisme dan kemiripan caption. Decoder kami yang dikondisikan pada representasi gambar juga dapat menghasilkan variasi dari sebuah gambar yang mempertahankan baik semantik maupun gayanya, sambil memvariasikan detail non-esensial yang tidak ada dalam representasi gambar tersebut. Selain itu, ruang embedding gabungan dari CLIP memungkinkan manipulasi gambar yang dipandu bahasa secara zero-shot. Kami menggunakan model difusi untuk decoder dan bereksperimen dengan model autoregresif maupun model difusi untuk prior, dan menemukan bahwa yang terakhir secara komputasi lebih efisien dan menghasilkan sampel dengan kualitas yang lebih tinggi.
PriorTransformer
kelas 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 )
Parameter
- num_attention_heads (
int, opsional, default 32) — Jumlah head yang digunakan untuk multi-head attention. - attention_head_dim (
int, opsional, default 64) — Jumlah channel di setiap head. - num_layers (
int, opsional, default 20) — Jumlah lapisan blok Transformer yang akan digunakan. - embedding_dim (
int, opsional, default 768) — Dimensi dari input modelhidden_states - num_embeddings (
int, opsional, default 77) — Jumlah embedding dari input modelhidden_states - additional_embeddings (
int, opsional, default 4) — Jumlah token tambahan yang ditambahkan kehidden_statesyang diproyeksikan. Panjang aktual darihidden_statesyang digunakan adalahnum_embeddings + additional_embeddings. - dropout (
float, opsional, default 0.0) — Probabilitas dropout yang digunakan. - time_embed_act_fn (
str, opsional, default ‘silu’) — Fungsi aktivasi yang digunakan untuk membuat embedding timestep. - norm_in_type (
str, opsional, default None) — Lapisan normalisasi yang diterapkan pada hidden states sebelum dilewatkan ke blok Transformer. Atur menjadiNonejika normalisasi tidak diperlukan. - embedding_proj_norm_type (
str, opsional, default None) — Lapisan normalisasi yang diterapkan pada inputproj_embedding. Atur menjadiNonejika normalisasi tidak diperlukan. - encoder_hid_proj_type (
str, opsional, defaultnyalinear) — Lapisan proyeksi yang diterapkan pada inputencoder_hidden_states. Atur menjadiNonejikaencoder_hidden_statesadalahNone. - added_emb_type (
str, opsional, defaultprd) — Embedding tambahan untuk mengondisikan model. Pilih dariprdatauNone. Jika memilihprd, sebuah token yang menunjukkan hasil perkalian titik (kuantisasi) antara embedding teks dan embedding gambar akan ditambahkan di depan, sebagaimana diusulkan dalam paper unclip https://huggingface.co/papers/2204.06125 Jika nilainyaNone, tidak ada embedding tambahan yang akan ditambahkan di depan. - 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, opsional, default None) — Dimensi dariproj_embedding. Jika None, akan diset keembedding_dim. - clip_embed_dim (
int, opsional, default None) — Dimensi dari output. Jika None, akan diset keembedding_dim.
Model Transformer 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
Parameter
- hidden_states (
torch.Tensordengan bentuk(batch_size, embedding_dim)) — Embedding gambar yang saat ini diprediksi. - timestep (
torch.LongTensor) — Langkah denoising saat ini. - proj_embedding (
torch.Tensordengan bentuk(batch_size, embedding_dim)) — Vektor embedding terproyeksi yang menjadi kondisi bagi proses denoising. - encoder_hidden_states (
torch.Tensordengan bentuk(batch_size, num_embeddings, embedding_dim)) — Hidden states dari embedding teks yang menjadi kondisi bagi proses denoising. - attention_mask (
torch.BoolTensordengan bentuk(batch_size, num_embeddings)) — Mask teks untuk embedding teks. - return_dict (
bool, opsional, defaultnyaTrue) — Apakah akan mengembalikan PriorTransformerOutput alih-alih tuple biasa.
Mengembalikan
PriorTransformerOutput atau tuple
If return_dict is True, a PriorTransformerOutput is returned, otherwise a tuple is returned where the first element is the sample tensor.
Metode forward dari PriorTransformer.
Menonaktifkan prosesor perhatian kustom dan mengatur implementasi perhatian default.
PriorTransformerOutput
kelas diffusers.models.transformers.prior_transformer.PriorTransformerOutput
< source >( predicted_image_embedding: Tensor )
Output dari PriorTransformer.