Diffusers documentation
Stable Cascade
Stable Cascade
Model ini dibangun di atas arsitektur Würstchen dan perbedaan utamanya dengan model lain seperti Stable Diffusion adalah bahwa model ini bekerja di ruang laten yang jauh lebih kecil. Mengapa ini penting? Semakin kecil ruang latennya, semakin cepat Anda dapat menjalankan inferensi dan semakin murah biaya pelatihannya. Sekecil apa ruang latennya? Stable Diffusion menggunakan faktor kompresi 8, sehingga gambar 1024x1024 dienkod menjadi 128x128. Stable Cascade mencapai faktor kompresi 42, yang berarti dimungkinkan untuk mengenkod gambar 1024x1024 menjadi 24x24, sambil tetap mempertahankan rekonstruksi yang tajam. Model bersyarat teks kemudian dilatih di ruang laten yang sangat terkompresi tersebut. Versi sebelumnya dari arsitektur ini mencapai pengurangan biaya 16x dibandingkan Stable Diffusion 1.5.
Oleh karena itu, jenis model ini sangat cocok untuk penggunaan di mana efisiensi menjadi penting. Selain itu, semua ekstensi yang dikenal seperti finetuning, LoRA, ControlNet, IP-Adapter, LCM, dan lain-lain juga dapat dilakukan dengan metode ini.
Kodebase asli dapat ditemukan di Stability-AI/StableCascade.
Ringkasan Model
Stable Cascade terdiri dari tiga model: Stage A, Stage B, dan Stage C, yang mewakili kaskade untuk menghasilkan gambar, sehingga dinamakan “Stable Cascade”.
Stage A & B digunakan untuk mengompresi gambar, mirip dengan peran VAE dalam Stable Diffusion. Namun, dengan konfigurasi ini, kompresi gambar yang jauh lebih tinggi dapat dicapai. Sementara model Stable Diffusion menggunakan faktor kompresi spasial 8, yang mengkodekan gambar dengan resolusi 1024 x 1024 menjadi 128 x 128, Stable Cascade mencapai faktor kompresi 42. Ini mengkodekan gambar 1024 x 1024 menjadi 24 x 24, sambil tetap mampu mendekode gambar secara akurat. Hal ini membawa manfaat besar berupa biaya pelatihan dan inferensi yang lebih murah. Selain itu, Stage C bertanggung jawab untuk menghasilkan latents kecil 24 x 24 berdasarkan prompt teks.
Model Stage C beroperasi pada latents kecil 24 x 24 dan melakukan denoising pada latents yang dikondisikan oleh prompt teks. Model ini juga merupakan komponen terbesar dalam pipeline Cascade dan dimaksudkan untuk digunakan dengan StableCascadePriorPipeline
Model Stage B dan Stage A digunakan dengan StableCascadeDecoderPipeline dan bertanggung jawab untuk menghasilkan gambar akhir berdasarkan latents kecil berukuran 24 x 24.
Terdapat beberapa batasan pada tipe data yang dapat digunakan dengan model Stable Cascade. Checkpoint resmi untuk
StableCascadePriorPipelinetidak mendukung tipe datatorch.float16. Silakan gunakantorch.bfloat16sebagai gantinya.Untuk menggunakan tipe data
torch.bfloat16denganStableCascadeDecoderPipeline, Anda perlu menginstal PyTorch 2.2.0 atau lebih tinggi. Ini juga berarti bahwa penggunaanStableCascadeCombinedPipelinedengantorch.bfloat16memerlukan PyTorch 2.2.0 atau lebih tinggi, karena pipeline ini memanggilStableCascadeDecoderPipelinesecara internal.Jika tidak memungkinkan untuk menginstal PyTorch 2.2.0 atau lebih tinggi di lingkungan Anda,
StableCascadeDecoderPipelinedapat digunakan secara mandiri dengan tipe datatorch.float16. Anda dapat mengunduh bobot varian presisi penuh ataubf16untuk pipeline tersebut dan mengubah bobot menjaditorch.float16.
Contoh penggunaan
import torch
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", variant="bf16", dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", variant="bf16", dtype=torch.float16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings.to(torch.float16),
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")Menggunakan Versi Lite dari model Stage B dan Stage C
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade-prior", subfolder="prior_lite")
decoder_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade", subfolder="decoder_lite")
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")Memuat checkpoint asli dengan from_single_file
Memuat checkpoint dalam format asli didukung melalui metode from_single_file di StableCascadeUNet.
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_bf16.safetensors",
dtype=torch.bfloat16
)
decoder_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/blob/main/stage_b_bf16.safetensors",
dtype=torch.bfloat16
)
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet, dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet, dtype=torch.bfloat16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade-single-file.png")Penggunaan
Penggunaan Langsung
Model ini saat ini ditujukan untuk keperluan penelitian. Area dan tugas penelitian yang mungkin termasuk
- Penelitian tentang model generatif.
- Penyelenggaraan model secara aman yang berpotensi menghasilkan konten berbahaya.
- Mengeksplorasi dan memahami keterbatasan serta bias dari model generatif.
- Pembuatan karya seni dan penggunaannya dalam desain serta proses artistik lainnya.
- Aplikasi dalam alat pendidikan atau kreatif.
Penggunaan yang dikecualikan dijelaskan di bawah ini.
Penggunaan di Luar Cakupan
Model ini tidak dilatih untuk menghasilkan representasi yang faktual atau benar tentang orang atau peristiwa, dan oleh karena itu, penggunaan model untuk menghasilkan konten semacam itu berada di luar cakupan kemampuan model ini. Model ini tidak boleh digunakan dengan cara apa pun yang melanggar Kebijakan Penggunaan yang Dapat Diterima Stability AI.
Keterbatasan dan Bias
Keterbatasan
- Wajah dan manusia secara umum mungkin tidak dihasilkan dengan benar.
- Bagian autoencoding dari model bersifat lossy.
StableCascadeCombinedPipeline
kelas diffusers.StableCascadeCombinedPipeline
< source >( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectiondecoder: StableCascadeUNetscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModelprior_prior: StableCascadeUNetprior_text_encoder: CLIPTextModelWithProjectionprior_tokenizer: CLIPTokenizerprior_scheduler: DDPMWuerstchenSchedulerprior_feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneprior_image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None )
Parameter
- tokenizer (
CLIPTokenizer) — Tokenizer decoder yang akan digunakan untuk input teks. - text_encoder (
CLIPTextModelWithProjection) — Text encoder decoder yang akan digunakan untuk input teks. - decoder (
StableCascadeUNet) — Model decoder yang akan digunakan untuk pipeline generasi gambar decoder. - scheduler (
DDPMWuerstchenScheduler) — Scheduler yang akan digunakan untuk pipeline generasi gambar decoder. - vqgan (
PaellaVQModel) — Model VQGAN yang akan digunakan untuk pipeline generasi gambar decoder. - prior_prior (
StableCascadeUNet) — Model prior yang akan digunakan untuk pipeline prior. - prior_text_encoder (
CLIPTextModelWithProjection) — Prior text encoder yang akan digunakan untuk input teks. - prior_tokenizer (
CLIPTokenizer) — Tokenizer prior yang akan digunakan untuk input teks. - prior_scheduler (
DDPMWuerstchenScheduler) — Scheduler yang akan digunakan untuk pipeline prior. - prior_feature_extractor (CLIPImageProcessor) —
Model yang mengekstrak fitur dari gambar yang dihasilkan untuk digunakan sebagai input bagi
image_encoder. - prior_image_encoder (
CLIPVisionModelWithProjection) — Encoder gambar CLIP yang dibekukan (clip-vit-large-patch14).
Pipeline gabungan untuk generasi teks-ke-gambar menggunakan Stable Cascade.
Model ini mewarisi dari DiffusionPipeline. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua pipeline (seperti mengunduh atau menyimpan, menjalankan pada perangkat tertentu, dll.)
__call__
< source >( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 512width: int = 512prior_num_inference_steps: int = 60prior_guidance_scale: float = 4.0num_inference_steps: int = 12decoder_guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueprior_callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Noneprior_callback_on_step_end_tensor_inputs: list = ['latents']callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
Parameter
- prompt (
strataulist[str]) — Prompt atau kumpulan prompt untuk memandu generasi gambar pada prior dan decoder. - images (
torch.Tensor,PIL.Image.Image,list[torch.Tensor],list[PIL.Image.Image], opsional) — Gambar-gambar untuk memandu generasi gambar bagi prior. - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Diabaikan ketika tidak menggunakan guidance (yaitu, diabaikan jikaguidance_scalekurang dari1). - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang telah dibuat sebelumnya untuk prior. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, embedding teks akan dibuat dari argumen inputprompt. - prompt_embeds_pooled (
torch.Tensor, opsional) — Embedding teks yang telah dibuat sebelumnya untuk prior. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, embedding teks akan dibuat dari argumen inputprompt. - negative_prompt_embeds (
torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya untuk prior. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen inputnegative_prompt. - negative_prompt_embeds_pooled (
torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya untuk prior. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen inputnegative_prompt. - num_images_per_prompt (
int, opsional, default 1) — Jumlah gambar yang akan dihasilkan per prompt. - height (
int, opsional, default 512) — Tinggi gambar yang dihasilkan dalam piksel. - width (
int, opsional, default 512) — Lebar gambar yang dihasilkan dalam piksel. - prior_guidance_scale (
float, opsional, default 4.0) — Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance.prior_guidance_scaledidefinisikan sebagaiwdari persamaan 2. pada Imagen Paper. Skala panduan diaktifkan dengan mengaturprior_guidance_scale > 1. Skala panduan yang lebih tinggi mendorong generasi gambar yang erat kaitannya denganpromptteks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. - prior_num_inference_steps (
int | dict[float, int], opsional, default 60) — Jumlah langkah denoising prior. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat. Untuk penempatan timestep yang lebih spesifik, Anda dapat meneruskanprior_timestepsyang dikustomisasi - num_inference_steps (
int, opsional, default 12) — Jumlah langkah denoising decoder. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat. Untuk penempatan timestep yang lebih spesifik, Anda dapat meneruskantimestepsyang dikustomisasi - decoder_guidance_scale (
float, opsional, default 0.0) — Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance.guidance_scaledidefinisikan sebagaiwdari persamaan 2. dari Imagen Paper. Skala panduan diaktifkan dengan mengaturguidance_scale > 1. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait denganpromptteks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. - generator (
torch.Generatorataulist[torch.Generator], opsional) — Satu atau daftar generator torch untuk membuat proses generasi menjadi deterministik. - latents (
torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya, diambil dari distribusi Gaussian, untuk digunakan sebagai input untuk generasi gambar. Dapat digunakan untuk menyesuaikan generasi yang sama dengan prompt yang berbeda. Jika tidak disediakan, tensor latents akan dibuat dengan pengambilan sampel menggunakangeneratoracak yang diberikan. - output_type (
str, opsional, default"pil") — Format output dari generate image. Pilih antara:"pil"(PIL.Image.Image),"np"(np.array) atau"pt"(torch.Tensor). - return_dict (
bool, opsional, defaultnyaTrue) — Apakah akan mengembalikan ImagePipelineOutput alih-alih tuple biasa. - prior_callback_on_step_end (
Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut:prior_callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). - prior_callback_on_step_end_tensor_inputs (
list, opsional) — Daftar input tensor untuk fungsiprior_callback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumencallback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut._callback_tensor_inputsdari kelas pipeline Anda. - callback_on_step_end (
Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsakan berisi daftar semua tensor sesuai yang ditentukan olehcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opsional) — Daftar input tensor untuk fungsicallback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumencallback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut._callback_tensor_inputsdari kelas pipeline Anda.
Fungsi yang dipanggil saat memanggil pipeline untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import StableCascadeCombinedPipeline
>>> pipe = StableCascadeCombinedPipeline.from_pretrained(
... "stabilityai/stable-cascade", variant="bf16", torch_dtype=torch.bfloat16
... )
>>> pipe.enable_model_cpu_offload()
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> images = pipe(prompt=prompt)enable_model_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
Membongkar semua model ke CPU menggunakan accelerate, mengurangi penggunaan memori dengan dampak kecil pada kinerja. Dibandingkan dengan enable_sequential_cpu_offload, metode ini memindahkan satu model utuh ke GPU pada saat metode forward dipanggil, dan model tetap berada di GPU hingga model berikutnya dijalankan. Penghematan memori lebih rendah dibandingkan dengan enable_sequential_cpu_offload, tetapi kinerjanya jauh lebih baik karena eksekusi iteratif dari unet.
enable_sequential_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
Membongkar semua model (unet, text_encoder, vae, dan safety checker state dicts) ke CPU menggunakan 🤗
Accelerate, sehingga penggunaan memori berkurang secara signifikan. Model dipindahkan ke torch.device('meta') dan dimuat ke
GPU hanya ketika metode forward dari submodul spesifiknya dipanggil. Pembongkaran terjadi berdasarkan submodul.
Penghematan memori lebih tinggi daripada menggunakan enable_model_cpu_offload, tetapi kinerjanya lebih rendah.
StableCascadePriorPipeline
kelas diffusers.StableCascadePriorPipeline
< source >( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionprior: StableCascadeUNetscheduler: DDPMWuerstchenSchedulerresolution_multiple: float = 42.67feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneimage_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None )
Parameter
- prior (
StableCascadeUNet) — Stable Cascade prior untuk memperkirakan image embedding dari text dan/atau image embedding. - text_encoder (
CLIPTextModelWithProjection) — Text-encoder yang dibekukan (laion/CLIP-ViT-bigG-14-laion2B-39B-b160k). - feature_extractor (CLIPImageProcessor) —
Model yang mengekstrak fitur dari gambar yang dihasilkan untuk digunakan sebagai input bagi
image_encoder. - image_encoder (
CLIPVisionModelWithProjection) — Encoder gambar CLIP yang dibekukan (clip-vit-large-patch14). - tokenizer (
CLIPTokenizer) — Tokenizer dari kelas CLIPTokenizer. - scheduler (
DDPMWuerstchenScheduler) — Scheduler yang digunakan bersamaprioruntuk menghasilkan embedding gambar. - resolution_multiple (‘float’, opsional, defaultnya 42.67) — Resolusi default untuk beberapa gambar yang dihasilkan.
Pipeline untuk menghasilkan prior gambar untuk Stable Cascade.
Model ini mewarisi dari DiffusionPipeline. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua pipeline (seperti mengunduh atau menyimpan, menjalankan pada perangkat tertentu, dll.)
__call__
< source >( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 1024width: int = 1024num_inference_steps: int = 20timesteps: list = Noneguidance_scale: float = 4.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Noneimage_embeds: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pt'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
Parameter
- prompt (
strataulist[str]) — Prompt atau kumpulan prompt untuk mengarahkan generasi gambar. - images (
torch.Tensor,PIL.Image.Image,list[torch.Tensor]ataulist[PIL.Image.Image], opsional) — Gambar referensi yang digunakan untuk mengondisikan generasi prior. Ketika diberikan, embedding gambar diturunkan dari gambar tersebut dan digabungkan dengan prompt teks. - height (
int, opsional, default 1024) — Tinggi gambar yang dihasilkan dalam piksel. - width (
int, opsional, default 1024) — Lebar gambar yang dihasilkan dalam piksel. - num_inference_steps (
int, opsional, default 60) — Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat. - timesteps (
list[float], opsional) — Timesteps kustom untuk digunakan dalam proses denoising dengan scheduler yang mendukung argumentimestepsdi metodeset_timestepsmereka. Jika tidak didefinisikan, perilaku default saatnum_inference_stepsdilewatkan akan digunakan. Harus dalam urutan menurun. - guidance_scale (
float, opsional, default 8.0) — Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance.decoder_guidance_scaledidefinisikan sebagaiwdari persamaan 2. pada Imagen Paper. Skala panduan diaktifkan dengan mengaturdecoder_guidance_scale > 1. Skala panduan yang lebih tinggi mendorong generasi gambar yang erat kaitannya denganpromptteks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Diabaikan ketika tidak menggunakan guidance (yaitu, diabaikan jikadecoder_guidance_scalekurang dari1). - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen inputprompt. - prompt_embeds_pooled (
torch.Tensor, opsional) — Embedding teks pooled yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, mis. penimbangan prompt. Jika tidak disediakan, embedding teks pooled akan dibuat dari argumen inputprompt. - negative_prompt_embeds (
torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen inputnegative_prompt. - negative_prompt_embeds_pooled (
torch.Tensor, opsional) — Embedding teks negatif yang sudah digenerate sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds_pooled akan digenerate dari argumen inputnegative_prompt. - image_embeds (
torch.Tensor, opsional) — Embedding gambar yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input gambar, mis. penimbangan prompt. Jika tidak disediakan, embedding gambar akan dibuat dari argumen inputimagejika ada. - num_images_per_prompt (
int, opsional, default 1) — Jumlah gambar yang akan dihasilkan per prompt. - generator (
torch.Generatorataulist[torch.Generator], opsional) — Satu atau daftar generator torch untuk membuat proses generasi menjadi deterministik. - latents (
torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya, diambil dari distribusi Gaussian, untuk digunakan sebagai input untuk generasi gambar. Dapat digunakan untuk menyesuaikan generasi yang sama dengan prompt yang berbeda. Jika tidak disediakan, tensor latents akan dibuat dengan pengambilan sampel menggunakangeneratoracak yang diberikan. - output_type (
str, opsional, default"pil") — Format output dari generate image. Pilih antara:"pil"(PIL.Image.Image),"np"(np.array) atau"pt"(torch.Tensor). - return_dict (
bool, opsional, defaultnyaTrue) — Apakah akan mengembalikan ImagePipelineOutput alih-alih tuple biasa. - callback_on_step_end (
Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsakan berisi daftar semua tensor sesuai yang ditentukan olehcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opsional) — Daftar input tensor untuk fungsicallback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumencallback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut._callback_tensor_inputsdari kelas pipeline Anda.
Fungsi yang dipanggil saat memanggil pipeline untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import StableCascadePriorPipeline
>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
... "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)StableCascadePriorPipelineOutput
kelas diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput
< source >( image_embeddings: typing.Union[torch.Tensor, numpy.ndarray]prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray]prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray]negative_prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray]negative_prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray] )
Kelas output untuk WuerstchenPriorPipeline.
StableCascadeDecoderPipeline
kelas diffusers.StableCascadeDecoderPipeline
< source >( decoder: StableCascadeUNettokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModellatent_dim_scale: float = 10.67 )
Parameter
- tokenizer (
CLIPTokenizer) — Tokenizer CLIP. - text_encoder (
CLIPTextModelWithProjection) — Encoder teks CLIP. - decoder (
StableCascadeUNet) — Unet decoder Stable Cascade. - vqgan (
PaellaVQModel) — Model VQGAN. - scheduler (
DDPMWuerstchenScheduler) — Scheduler yang digunakan bersamaprioruntuk menghasilkan embedding gambar. - latent_dim_scale (float,
optional, default 10.67) — Pengali untuk menentukan ukuran ruang laten VQ dari embedding gambar. Jika embedding gambar memiliki height=24 dan width=24, bentuk laten VQ harus height=int(2410.67)=256 dan width=int(2410.67)=256 agar sesuai dengan kondisi pelatihan.
Pipeline untuk menghasilkan gambar dari model Stable Cascade.
Model ini mewarisi dari DiffusionPipeline. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua pipeline (seperti mengunduh atau menyimpan, menjalankan pada perangkat tertentu, dll.)
__call__
< source >( image_embeddings: typing.Union[torch.Tensor, list[torch.Tensor]]prompt: str | list[str] = Nonenum_inference_steps: int = 10guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
Parameter
- image_embeddings (
torch.Tensorataulist[torch.Tensor]) — Embedding gambar yang diekstrak dari gambar atau dihasilkan oleh Model Prior. - prompt (
strataulist[str]) — Prompt atau kumpulan prompt untuk mengarahkan generasi gambar. - num_inference_steps (
int, opsional, default 12) — Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat. - guidance_scale (
float, opsional, default 0.0) — Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance.decoder_guidance_scaledidefinisikan sebagaiwdari persamaan 2. pada Imagen Paper. Skala panduan diaktifkan dengan mengaturdecoder_guidance_scale > 1. Skala panduan yang lebih tinggi mendorong generasi gambar yang erat kaitannya denganpromptteks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Diabaikan ketika tidak menggunakan guidance (yaitu, diabaikan jikadecoder_guidance_scalekurang dari1). - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen inputprompt. - prompt_embeds_pooled (
torch.Tensor, opsional) — Embedding teks pooled yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, mis. penimbangan prompt. Jika tidak disediakan, embedding teks pooled akan dibuat dari argumen inputprompt. - negative_prompt_embeds (
torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen inputnegative_prompt. - negative_prompt_embeds_pooled (
torch.Tensor, opsional) — Embedding teks negatif yang sudah digenerate sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, negative_prompt_embeds_pooled akan digenerate dari argumen inputnegative_prompt. - num_images_per_prompt (
int, opsional, default 1) — Jumlah gambar yang akan dihasilkan per prompt. - generator (
torch.Generatorataulist[torch.Generator], opsional) — Satu atau daftar generator torch untuk membuat proses generasi menjadi deterministik. - latents (
torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya, diambil dari distribusi Gaussian, untuk digunakan sebagai input untuk generasi gambar. Dapat digunakan untuk menyesuaikan generasi yang sama dengan prompt yang berbeda. Jika tidak disediakan, tensor latents akan dibuat dengan pengambilan sampel menggunakangeneratoracak yang diberikan. - output_type (
str, opsional, default"pil") — Format output dari generate image. Pilih antara:"pil"(PIL.Image.Image),"np"(np.array) atau"pt"(torch.Tensor). - return_dict (
bool, opsional, defaultnyaTrue) — Apakah akan mengembalikan ImagePipelineOutput alih-alih tuple biasa. - callback_on_step_end (
Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict).callback_kwargsakan berisi daftar semua tensor sesuai yang ditentukan olehcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opsional) — Daftar input tensor untuk fungsicallback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumencallback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut._callback_tensor_inputsdari kelas pipeline Anda.
Fungsi yang dipanggil saat memanggil pipeline untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import StableCascadePriorPipeline, StableCascadeDecoderPipeline
>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
... "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> gen_pipe = StableCascadeDecoderPipeline.from_pretrain(
... "stabilityai/stable-cascade", torch_dtype=torch.float16
... ).to("cuda")
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)
>>> images = gen_pipe(prior_output.image_embeddings, prompt=prompt)