Buckets:

hf-doc-build/doc / diffusers /main /id /api /pipelines /controlnet_sdxl.md
mishig's picture
|
download
raw
83.6 kB

ControlNet dengan Stable Diffusion XL

ControlNet diperkenalkan dalam Menambahkan Kontrol Kondisional ke Model Difusi Teks-ke-Gambar oleh Lvmin Zhang, Anyi Rao, dan Maneesh Agrawala.

Dengan model ControlNet, Anda dapat menyediakan gambar kontrol tambahan untuk mengondisikan dan mengendalikan generasi Stable Diffusion. Misalnya, jika Anda menyediakan peta kedalaman, model ControlNet akan menghasilkan gambar yang mempertahankan informasi spasial dari peta kedalaman tersebut. Ini adalah cara yang lebih fleksibel dan akurat untuk mengendalikan proses generasi gambar.

Abstrak dari makalah tersebut adalah:

Kami memperkenalkan ControlNet, sebuah arsitektur jaringan saraf untuk menambahkan kontrol kondisional spasial ke model difusi teks-ke-gambar besar yang telah dilatih sebelumnya. ControlNet mengunci model difusi besar yang siap produksi, dan memanfaatkan ulang lapisan enkoding yang dalam dan robust yang telah dilatih sebelumnya dengan miliaran gambar sebagai tulang punggung yang kuat untuk mempelajari berbagai set kontrol kondisional. Arsitektur saraf ini terhubung dengan "zero convolutions" (lapisan konvolusi yang diinisialisasi nol) yang secara bertahap meningkatkan parameter dari nol dan memastikan bahwa tidak ada noise berbahaya yang dapat memengaruhi finetuning. Kami menguji berbagai kontrol kondisional, misalnya, tepi, kedalaman, segmentasi, pose manusia, dll., dengan Stable Diffusion, menggunakan satu atau beberapa kondisi, dengan atau tanpa prompt. Kami menunjukkan bahwa pelatihan ControlNet bersifat robust dengan dataset kecil (<50k) dan besar (>1m). Hasil ekstensif menunjukkan bahwa ControlNet dapat memfasilitasi aplikasi yang lebih luas untuk mengontrol model difusi gambar.

Anda dapat menemukan checkpoint ControlNet Stable Diffusion XL (SDXL) yang lebih kecil lainnya dari organisasi 🤗 Diffusers Hub.

🧪 Banyak checkpoint SDXL ControlNet masih bersifat eksperimental dan memiliki banyak ruang untuk perbaikan. Silakan buka Issue dan berikan kami masukan tentang cara kami dapat memperbaikinya!

Jika Anda tidak melihat checkpoint yang Anda minati, Anda dapat melatih SDXL ControlNet Anda sendiri dengan skrip pelatihan kami.

Pastikan untuk melihat panduan Schedulers untuk mempelajari cara mengeksplorasi tradeoff antara kecepatan dan kualitas scheduler, serta lihat bagian reuse components across pipelines untuk mempelajari cara memuat komponen yang sama secara efisien ke dalam beberapa pipeline.

StableDiffusionXLControlNetPipeline[[diffusers.StableDiffusionXLControlNetPipeline]]

diffusers.StableDiffusionXLControlNetPipeline[[diffusers.StableDiffusionXLControlNetPipeline]]

diffusers.StableDiffusionXLControlNetPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, controlnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModel, scheduler: KarrasDiffusionSchedulers, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None, feature_extractor: CLIPImageProcessorPil = None, image_encoder: CLIPVisionModelWithProjection = None)

Sumber

Parameter:

vae (AutoencoderKL) : Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten.

text_encoder (CLIPTextModel) : text-encoder beku (clip-vit-large-patch14).

text_encoder_2 (CLIPTextModelWithProjection) : Text-encoder beku kedua (laion/CLIP-ViT-bigG-14-laion2B-39B-b160k).

tokenizer (CLIPTokenizer) : Sebuah CLIPTokenizer untuk melakukan tokenisasi teks.

tokenizer_2 (CLIPTokenizer) : Sebuah CLIPTokenizer untuk melakukan tokenisasi teks.

unet (UNet2DConditionModel) : Sebuah UNet2DConditionModel untuk menghilangkan noise dari latens gambar yang telah dikodekan.

controlnet (ControlNetModel atau list[ControlNetModel]) : Menyediakan kondisioning tambahan untuk unet selama proses denoising. Jika Anda mengatur beberapa ControlNet sebagai list, output dari masing-masing ControlNet akan dijumlahkan untuk membuat satu kondisioning tambahan yang digabungkan.

scheduler (SchedulerMixin) : Penjadwal yang digunakan bersama unet untuk menghilangkan noise pada latens gambar yang telah dikodekan. Bisa berupa DDIMScheduler, LMSDiscreteScheduler, atau PNDMScheduler.

force_zeros_for_empty_prompt (bool, opsional, defaultnya "True") : Apakah embedding prompt negatif harus selalu diatur ke 0. Lihat juga konfigurasi dari stabilityai/stable-diffusion-xl-base-1-0.

add_watermarker (bool, opsional) : Apakah akan menggunakan pustaka invisible_watermark untuk memberi tanda air pada gambar keluaran. Jika tidak didefinisikan, nilainya secara default menjadi True jika paket tersebut terinstal; jika tidak, tidak ada penanda air yang digunakan.

Pipeline untuk generasi teks-ke-gambar menggunakan Stable Diffusion XL dengan panduan ControlNet.

Model ini mewarisi dari DiffusionPipeline. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan untuk semua pipeline (mengunduh, menyimpan, menjalankan pada perangkat tertentu, dll.).

Pipeline juga mewarisi metode pemuatan berikut:

call[[diffusers.StableDiffusionXLControlNetPipeline.call]]

__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, denoising_end: float | None = None, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, controlnet_conditioning_scale: float | list[float] = 1.0, guess_mode: bool = False, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs)

Sumber

Parameter:

prompt (str atau list[str], opsional) : Prompt atau prompt-prompt untuk memandu generasi gambar. Jika tidak didefinisikan, Anda perlu meneruskan prompt_embeds.

prompt_2 (str atau list[str], opsional) : Prompt atau prompt yang akan dikirim ke tokenizer_2 dan text_encoder_2. Jika tidak didefinisikan, prompt digunakan di kedua text-encoder.

image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image], list[np.ndarray], : list[list[torch.Tensor]], list[list[np.ndarray]] atau list[list[PIL.Image.Image]]): Kondisi input ControlNet untuk memberikan panduan kepada unet dalam proses generasi. Jika tipe yang ditentukan adalah torch.Tensor, data diteruskan ke ControlNet apa adanya. PIL.Image.Image juga dapat diterima sebagai gambar. Dimensi gambar output secara default mengikuti dimensi image. Jika tinggi dan/atau lebar diteruskan, image akan di-resize sesuai dengan nilai tersebut. Jika beberapa ControlNet ditentukan dalam init, gambar harus diteruskan sebagai daftar sehingga setiap elemen dalam daftar dapat di-batch dengan benar untuk input ke satu ControlNet.

height (int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Tinggi gambar yang dihasilkan dalam piksel. Nilai di bawah 512 piksel tidak akan berfungsi dengan baik untuk stabilityai/stable-diffusion-xl-base-1.0 dan checkpoint yang tidak secara khusus dihaluskan pada resolusi rendah.

width (int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Lebar gambar yang dihasilkan dalam piksel. Nilai di bawah 512 piksel tidak akan berfungsi dengan baik untuk stabilityai/stable-diffusion-xl-base-1.0 dan checkpoint yang tidak secara khusus dihaluskan pada resolusi rendah.

num_inference_steps (int, opsional, defaultnya 50) : Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat.

timesteps (list[int], opsional) : Timesteps kustom untuk digunakan dalam proses denoising dengan scheduler yang mendukung argumen timesteps di metode set_timesteps mereka. Jika tidak didefinisikan, perilaku default saat num_inference_steps diteruskan akan digunakan. Harus dalam urutan menurun.

sigmas (list[float], opsional) : Sigmas kustom untuk digunakan dalam proses denoising dengan scheduler yang mendukung argumen sigmas di metode set_timesteps mereka. Jika tidak didefinisikan, perilaku default saat num_inference_steps diteruskan akan digunakan.

denoising_end (float, opsional) : Jika ditentukan, menentukan fraksi (antara 0.0 dan 1.0) dari total proses denoising yang harus diselesaikan sebelum proses tersebut dihentikan secara dini secara sengaja. Akibatnya, sampel yang dikembalikan masih akan mempertahankan sejumlah besar noise, sebagaimana ditentukan oleh langkah-langkah diskrit yang dipilih oleh scheduler. Parameter denoising_end sebaiknya digunakan ketika pipeline ini merupakan bagian dari setup multi-pipeline "Mixture of Denoisers", seperti yang diuraikan dalam Refining the Image Output

guidance_scale (float, opsional, default 5.0) : Nilai guidance scale yang lebih tinggi mendorong model untuk menghasilkan gambar yang sangat terkait dengan prompt teks, dengan mengorbankan kualitas gambar yang lebih rendah. Guidance scale diaktifkan ketika guidance_scale > 1.

negative_prompt (str atau list[str], opsional) : Prompt atau prompt-prompt untuk mengarahkan apa yang tidak boleh disertakan dalam pembuatan gambar. Jika tidak didefinisikan, Anda perlu meneruskan negative_prompt_embeds sebagai gantinya. Diabaikan saat tidak menggunakan panduan (guidance_scale < 1).

negative_prompt_2 (str atau list[str], opsional) : Prompt atau prompt-prompt untuk mengarahkan apa yang tidak boleh disertakan dalam pembuatan gambar. Ini dikirim ke tokenizer_2 dan text_encoder_2. Jika tidak didefinisikan, negative_prompt digunakan di kedua text-encoder.

num_images_per_prompt (int, opsional, default 1) : Jumlah gambar yang akan dihasilkan per prompt.

eta (float, opsional, default 0.0) : Bersesuaian dengan parameter eta (η) dari paper DDIM. Hanya berlaku untuk DDIMScheduler, dan diabaikan pada scheduler lainnya.

generator (torch.Generator atau list[torch.Generator], opsional) : Sebuah torch.Generator untuk membuat proses generasi menjadi deterministik.

latents (torch.Tensor, opsional) : Laten 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 laten akan dibuat dengan pengambilan sampel menggunakan generator acak yang diberikan.

prompt_embeds (torch.Tensor, opsional) : Embedding teks yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks (pemberian bobot pada prompt). Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input prompt.

negative_prompt_embeds (torch.Tensor, opsional) : Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks (pemberian bobot pada prompt). Jika tidak disediakan, negative_prompt_embeds akan dibuat dari argumen input negative_prompt.

pooled_prompt_embeds (torch.Tensor, opsional) : Embedding teks pooled yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks (pemberian bobot pada prompt). Jika tidak disediakan, embedding teks pooled akan dihasilkan dari argumen input prompt.

negative_pooled_prompt_embeds (torch.Tensor, opsional) : Embedding teks negatif yang sudah dipooling sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks (penimbangan prompt). Jika tidak disediakan, negative_prompt_embeds yang dipooling akan dihasilkan dari argumen input negative_prompt.

ip_adapter_image : (PipelineImageInput, opsional): Input gambar opsional untuk bekerja dengan IP Adapters.

ip_adapter_image_embeds (list[torch.Tensor], opsional) : Embedding gambar yang telah dibuat sebelumnya untuk IP-Adapter. Ini harus berupa daftar dengan panjang yang sama dengan jumlah IP-adapter. Setiap elemen harus berupa tensor dengan bentuk (batch_size, num_images, emb_dim). Embedding gambar negatif harus disertakan jika do_classifier_free_guidance diatur ke True. Jika tidak disediakan, embedding dihitung dari argumen input ip_adapter_image.

output_type (str, opsional, defaultnya "pil") : Format output dari gambar yang dihasilkan. Pilih antara PIL.Image atau np.array.

return_dict (bool, opsional, defaultnya True) : Apakah akan mengembalikan StableDiffusionPipelineOutput alih-alih tuple biasa.

cross_attention_kwargs (dict, opsional) : Kamus kwargs yang jika ditentukan akan diteruskan ke AttentionProcessor seperti yang didefinisikan dalam self.processor.

controlnet_conditioning_scale (float atau list[float], opsional, default 1.0) : Output dari ControlNet dikalikan dengan controlnet_conditioning_scale sebelum ditambahkan ke residual di unet asli. Jika beberapa ControlNet ditentukan di init, Anda dapat mengatur skala yang sesuai sebagai list.

guess_mode (bool, opsional, defaultnya False) : Encoder ControlNet mencoba mengenali konten gambar input bahkan jika Anda menghapus semua prompt. Nilai guidance_scale antara 3.0 dan 5.0 direkomendasikan.

control_guidance_start (float atau list[float], opsional, default 0.0) : Persentase dari total langkah di mana ControlNet mulai diterapkan.

control_guidance_end (float atau list[float], opsional, default 1.0) : Persentase dari total langkah di mana ControlNet berhenti diterapkan.

original_size (tuple[int], opsional, defaultnya (1024, 1024)) : Jika original_size tidak sama dengan target_size, gambar akan tampak di-downsample atau di-upsample. original_size defaultnya (height, width) jika tidak ditentukan. Bagian dari micro-conditioning SDXL seperti dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952.

crops_coords_top_left (tuple[int], opsional, defaultnya (0, 0)) : crops_coords_top_left dapat digunakan untuk menghasilkan gambar yang tampak "dipotong" dari posisi crops_coords_top_left ke bawah. Gambar yang bagus dan terpusat biasanya dicapai dengan mengatur crops_coords_top_left ke (0, 0). Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952.

target_size (tuple[int], opsional, defaultnya (1024, 1024)) : Untuk sebagian besar kasus, target_size sebaiknya diatur ke tinggi dan lebar yang diinginkan dari gambar yang dihasilkan. Jika tidak ditentukan, nilainya akan default ke (height, width). Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952.

negative_original_size (tuple[int], opsional, defaultnya (1024, 1024)) : Untuk mengondisikan proses generasi secara negatif berdasarkan resolusi gambar tertentu. Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952. Untuk informasi lebih lanjut, lihat thread issue ini: https://github.com/huggingface/diffusers/issues/4208.

negative_crops_coords_top_left (tuple[int], opsional, defaultnya (0, 0)) : Untuk mengondisikan proses generasi secara negatif berdasarkan koordinat crop tertentu. Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952. Untuk informasi lebih lanjut, lihat thread issue ini: https://github.com/huggingface/diffusers/issues/4208.

negative_target_size (tuple[int], opsional, defaultnya (1024, 1024)) : Untuk mengondisikan proses generasi secara negatif berdasarkan resolusi gambar target. Sebaiknya sama dengan target_size untuk sebagian besar kasus. Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952. Untuk informasi lebih lanjut, lihat thread issue ini: https://github.com/huggingface/diffusers/issues/4208.

clip_skip (int, opsional) : Jumlah lapisan yang akan dilewati dari CLIP saat menghitung prompt embeddings. Nilai 1 berarti bahwa output dari lapisan sebelum terakhir akan digunakan untuk menghitung prompt embeddings.

callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opsional) : Fungsi atau subkelas dari PipelineCallback atau MultiPipelineCallbacks yang dipanggil di akhir setiap langkah denoising selama inferensi, dengan argumen berikut: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs akan berisi daftar semua tensor sesuai yang ditentukan oleh callback_on_step_end_tensor_inputs.

callback_on_step_end_tensor_inputs (list, opsional) : Daftar input tensor untuk fungsi callback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumen callback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut ._callback_tensor_inputs dari kelas pipeline Anda.

Mengembalikan: StableDiffusionPipelineOutput atau tuple

Jika return_dict adalah True, StableDiffusionPipelineOutput dikembalikan, selain itu sebuah tuple yang berisi gambar output dikembalikan.

Fungsi panggilan untuk pipeline pada generasi.

Contoh:

>>> # !pip install opencv-python transformers accelerate
>>> from diffusers import StableDiffusionXLControlNetPipeline, ControlNetModel, AutoencoderKL
>>> from diffusers.utils import load_image
>>> import numpy as np
>>> import torch

>>> import cv2
>>> from PIL import Image

>>> prompt = "aerial view, a futuristic research complex in a bright foggy jungle, hard lighting"
>>> negative_prompt = "low quality, bad quality, sketches"

>>> # download an image
>>> image = load_image(
...     "https://hf.co/datasets/hf-internal-testing/diffusers-images/resolve/main/sd_controlnet/hf-logo.png"
... )

>>> # initialize the models and pipeline
>>> controlnet_conditioning_scale = 0.5  # recommended for good generalization
>>> controlnet = ControlNetModel.from_pretrained(
...     "diffusers/controlnet-canny-sdxl-1.0", torch_dtype=torch.float16
... )
>>> vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
>>> pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0", controlnet=controlnet, vae=vae, torch_dtype=torch.float16
... )
>>> pipe.enable_model_cpu_offload()

>>> # get canny image
>>> image = np.array(image)
>>> image = cv2.Canny(image, 100, 200)
>>> image = image[:, :, None]
>>> image = np.concatenate([image, image, image], axis=2)
>>> canny_image = Image.fromarray(image)

>>> # generate image
>>> image = pipe(
...     prompt, controlnet_conditioning_scale=controlnet_conditioning_scale, image=canny_image
... ).images[0]

encode_prompt[[diffusers.StableDiffusionXLControlNetPipeline.encode_prompt]]

encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)

Sumber

Parameter:

prompt (str atau list[str], opsional) : prompt yang akan dienkod

prompt_2 (str atau list[str], opsional) : Prompt atau prompt yang akan dikirim ke tokenizer_2 dan text_encoder_2. Jika tidak didefinisikan, prompt digunakan di kedua text-encoder

device : (torch.device): perangkat torch

num_images_per_prompt (int) : jumlah gambar yang harus dihasilkan per prompt

do_classifier_free_guidance (bool) : apakah akan menggunakan classifier free guidance atau tidak

negative_prompt (str atau list[str], opsional) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan negative_prompt_embeds sebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jika guidance_scale kurang dari 1).

negative_prompt_2 (str atau list[str], opsional) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar untuk dikirim ke tokenizer_2 dan text_encoder_2. Jika tidak didefinisikan, negative_prompt digunakan di kedua text-encoder

prompt_embeds (torch.Tensor, opsional) : Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input prompt.

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 input negative_prompt.

pooled_prompt_embeds (torch.Tensor, opsional) : Pooled text embeddings yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, pooled text embeddings akan dihasilkan dari argumen input prompt.

negative_pooled_prompt_embeds (torch.Tensor, opsional) : Embedding teks negatif yang sudah dipooling sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan dihasilkan dari argumen input negative_prompt.

lora_scale (float, opsional) : Skala lora yang akan diterapkan ke semua lapisan LoRA dari text encoder jika lapisan LoRA dimuat.

clip_skip (int, opsional) : Jumlah lapisan yang akan dilewati dari CLIP saat menghitung prompt embeddings. Nilai 1 berarti bahwa output dari lapisan sebelum terakhir akan digunakan untuk menghitung prompt embeddings.

Mengkodekan prompt menjadi hidden states dari text encoder.

get_guidance_scale_embedding[[diffusers.StableDiffusionXLControlNetPipeline.get_guidance_scale_embedding]]

get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)

Sumber

Parameter:

w (torch.Tensor) : Menghasilkan vektor embedding dengan skala panduan yang ditentukan untuk selanjutnya memperkaya embedding timestep.

embedding_dim (int, opsional, default 512) : Dimensi dari embedding yang akan dihasilkan.

dtype (torch.dtype, opsional, defaultnya torch.float32) : Tipe data dari embedding yang dihasilkan.

Mengembalikan: torch.Tensor

Vektor embedding dengan bentuk (len(w), embedding_dim).

Lihat https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298

StableDiffusionXLControlNetImg2ImgPipeline[[diffusers.StableDiffusionXLControlNetImg2ImgPipeline]]

diffusers.StableDiffusionXLControlNetImg2ImgPipeline[[diffusers.StableDiffusionXLControlNetImg2ImgPipeline]]

diffusers.StableDiffusionXLControlNetImg2ImgPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, controlnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModel, scheduler: KarrasDiffusionSchedulers, requires_aesthetics_score: bool = False, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None, feature_extractor: CLIPImageProcessorPil = None, image_encoder: CLIPVisionModelWithProjection = None)

Sumber

Parameter:

vae (AutoencoderKL) : Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten.

text_encoder (CLIPTextModel) : Text-encoder yang dibekukan. Stable Diffusion menggunakan bagian teks dari CLIP, khususnya varian clip-vit-large-patch14.

text_encoder_2 ( CLIPTextModelWithProjection) : Text-encoder beku kedua. Stable Diffusion XL menggunakan bagian teks dan pool dari CLIP, khususnya varian laion/CLIP-ViT-bigG-14-laion2B-39B-b160k.

tokenizer (CLIPTokenizer) : Tokenizer dari kelas CLIPTokenizer.

tokenizer_2 (CLIPTokenizer) : Tokenizer kedua dari kelas CLIPTokenizer.

unet (UNet2DConditionModel) : Arsitektur U-Net bersyarat untuk mendenoise latens gambar yang telah dikodekan.

controlnet (ControlNetModel atau list[ControlNetModel]) : Menyediakan kondisioning tambahan ke unet selama proses denoising. Jika Anda mengatur beberapa ControlNet sebagai list, output dari masing-masing ControlNet akan dijumlahkan untuk membuat satu kondisioning tambahan yang digabungkan.

scheduler (SchedulerMixin) : Penjadwal yang digunakan bersama unet untuk menghilangkan noise pada latens gambar yang telah dikodekan. Bisa berupa DDIMScheduler, LMSDiscreteScheduler, atau PNDMScheduler.

requires_aesthetics_score (bool, opsional, defaultnya "False") : Apakah unet memerlukan kondisi aesthetic_score untuk diteruskan selama inferensi. Lihat juga konfigurasi dari stabilityai/stable-diffusion-xl-refiner-1-0.

force_zeros_for_empty_prompt (bool, opsional, defaultnya "True") : Apakah embedding prompt negatif harus dipaksa selalu diatur ke 0. Lihat juga konfigurasi dari stabilityai/stable-diffusion-xl-base-1-0.

add_watermarker (bool, opsional) : Apakah akan menggunakan invisible_watermark library untuk memberi watermark pada gambar output. Jika tidak didefinisikan, nilainya akan default ke True jika paket tersebut terinstal, jika tidak, tidak akan ada watermarker yang digunakan.

feature_extractor (CLIPImageProcessor) : Sebuah CLIPImageProcessor untuk mengekstrak fitur dari gambar yang dihasilkan; digunakan sebagai input untuk safety_checker.

Pipeline untuk generasi gambar-ke-gambar menggunakan Stable Diffusion XL dengan panduan ControlNet.

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.)

Pipeline juga mewarisi metode pemuatan berikut:

call[[diffusers.StableDiffusionXLControlNetImg2ImgPipeline.call]]

__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, control_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, height: int | None = None, width: int | None = None, strength: float = 0.8, num_inference_steps: int = 50, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, controlnet_conditioning_scale: float | list[float] = 0.8, guess_mode: bool = False, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, aesthetic_score: float = 6.0, negative_aesthetic_score: float = 2.5, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs)

Sumber

Parameter:

prompt (str atau list[str], opsional) : Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus melewatkan prompt_embeds sebagai gantinya.

prompt_2 (str atau list[str], opsional) : Prompt atau prompt yang akan dikirim ke tokenizer_2 dan text_encoder_2. Jika tidak didefinisikan, prompt digunakan di kedua text-encoder

image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image], list[np.ndarray], : list[list[torch.Tensor]], list[list[np.ndarray]] atau list[list[PIL.Image.Image]]): Gambar awal akan digunakan sebagai titik awal untuk proses generasi gambar. Dapat juga menerima latents gambar sebagai image; jika latents diberikan secara langsung, latents tersebut tidak akan di-encode ulang.

control_image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image], list[np.ndarray], : list[list[torch.Tensor]], list[list[np.ndarray]] atau list[list[PIL.Image.Image]]): Kondisi input ControlNet. ControlNet menggunakan kondisi input ini untuk menghasilkan panduan ke Unet. Jika tipe ditentukan sebagai torch.Tensor, ia diteruskan ke ControlNet apa adanya. PIL.Image.Image juga dapat diterima sebagai gambar. Dimensi gambar output secara default mengikuti dimensi image. Jika tinggi dan/atau lebar diteruskan, image akan di-resize sesuai dengan nilai tersebut. Jika beberapa ControlNet ditentukan di init, gambar harus diteruskan sebagai list sehingga setiap elemen list dapat di-batch dengan benar untuk input ke satu controlnet.

height (int, opsional, defaultnya adalah ukuran control_image) : Tinggi gambar yang dihasilkan dalam piksel. Nilai di bawah 512 piksel tidak akan berfungsi dengan baik untuk stabilityai/stable-diffusion-xl-base-1.0 dan checkpoint yang tidak secara khusus dihaluskan pada resolusi rendah.

width (int, opsional, defaultnya adalah ukuran dari control_image) : Lebar gambar yang dihasilkan dalam piksel. Nilai di bawah 512 piksel tidak akan berfungsi dengan baik untuk stabilityai/stable-diffusion-xl-base-1.0 dan checkpoint yang tidak secara khusus dihaluskan pada resolusi rendah.

strength (float, opsional, default 0.8) : Menunjukkan sejauh mana image referensi akan ditransformasi. Nilai harus berada di antara 0 dan 1. image digunakan sebagai titik awal, dan semakin tinggi nilai strength, semakin banyak noise yang ditambahkan. Jumlah langkah denoising bergantung pada jumlah noise yang ditambahkan di awal. Ketika strength bernilai 1, noise yang ditambahkan maksimal dan proses denoising berjalan untuk jumlah iterasi penuh yang ditentukan dalam num_inference_steps. Nilai 1 pada dasarnya mengabaikan image.

num_inference_steps (int, opsional, defaultnya 50) : 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 7.5) : Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance. guidance_scale didefinisikan sebagai w dari persamaan 2. pada Imagen Paper. Skala panduan diaktifkan dengan mengatur guidance_scale > 1. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan prompt teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah.

negative_prompt (str atau list[str], opsional) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan negative_prompt_embeds sebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jika guidance_scale kurang dari 1).

negative_prompt_2 (str atau list[str], opsional) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar untuk dikirim ke tokenizer_2 dan text_encoder_2. Jika tidak didefinisikan, negative_prompt digunakan di kedua text-encoder

num_images_per_prompt (int, opsional, default 1) : Jumlah gambar yang akan dihasilkan per prompt.

eta (float, opsional, default 0.0) : Bersesuaian dengan parameter eta (η) dalam paper DDIM: https://huggingface.co/papers/2010.02502. Hanya berlaku untuk schedulers.DDIMScheduler, akan diabaikan untuk yang lain.

generator (torch.Generator atau list[torch.Generator], opsional) : Satu atau daftar generator torch untuk membuat proses generasi menjadi deterministik.

latents (torch.Tensor, opsional) : Laten 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 laten akan dibuat dengan pengambilan sampel menggunakan generator acak yang diberikan.

prompt_embeds (torch.Tensor, opsional) : Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input prompt.

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 input negative_prompt.

pooled_prompt_embeds (torch.Tensor, opsional) : Pooled text embeddings yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, pooled text embeddings akan dihasilkan dari argumen input prompt.

negative_pooled_prompt_embeds (torch.Tensor, opsional) : Embedding teks negatif yang sudah dipooling sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan dihasilkan dari argumen input negative_prompt.

ip_adapter_image : (PipelineImageInput, opsional): Input gambar opsional untuk bekerja dengan IP Adapters.

ip_adapter_image_embeds (list[torch.Tensor], opsional) : Embedding gambar yang telah dibuat sebelumnya untuk IP-Adapter. Ini harus berupa daftar dengan panjang yang sama dengan jumlah IP-adapter. Setiap elemen harus berupa tensor dengan bentuk (batch_size, num_images, emb_dim). Embedding gambar negatif harus disertakan jika do_classifier_free_guidance diatur ke True. Jika tidak disediakan, embedding dihitung dari argumen input ip_adapter_image.

output_type (str, opsional, defaultnya "pil") : Format output dari gambar yang dihasilkan. Pilih antara PIL: PIL.Image.Image atau np.array.

return_dict (bool, opsional, defaultnya True) : Apakah akan mengembalikan StableDiffusionPipelineOutput alih-alih tuple biasa.

cross_attention_kwargs (dict, opsional) : Kamus kwargs yang jika ditentukan akan diteruskan ke AttentionProcessor seperti yang didefinisikan di bawah self.processor dalam diffusers.models.attention_processor.

controlnet_conditioning_scale (float atau list[float], opsional, default 1.0) : Output dari controlnet dikalikan dengan controlnet_conditioning_scale sebelum ditambahkan ke residual di unet asli. Jika beberapa ControlNet ditentukan di init, Anda dapat mengatur skala yang sesuai sebagai list.

guess_mode (bool, opsional, defaultnya False) : Dalam mode ini, encoder ControlNet akan berusaha semaksimal mungkin untuk mengenali konten gambar input meskipun Anda menghapus semua prompt. guidance_scale antara 3.0 dan 5.0 direkomendasikan.

control_guidance_start (float atau list[float], opsional, default 0.0) : Persentase dari total langkah di mana controlnet mulai diterapkan.

control_guidance_end (float atau list[float], opsional, default 1.0) : Persentase dari total langkah di mana controlnet berhenti diterapkan.

original_size (tuple[int], opsional, defaultnya (1024, 1024)) : Jika original_size tidak sama dengan target_size, gambar akan tampak di-downsample atau di-upsample. original_size defaultnya (height, width) jika tidak ditentukan. Bagian dari micro-conditioning SDXL seperti dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952.

crops_coords_top_left (tuple[int], opsional, defaultnya (0, 0)) : crops_coords_top_left dapat digunakan untuk menghasilkan gambar yang tampak "dipotong" dari posisi crops_coords_top_left ke bawah. Gambar yang bagus dan terpusat biasanya dicapai dengan mengatur crops_coords_top_left ke (0, 0). Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952.

target_size (tuple[int], opsional, defaultnya (1024, 1024)) : Untuk sebagian besar kasus, target_size sebaiknya diatur ke tinggi dan lebar yang diinginkan dari gambar yang dihasilkan. Jika tidak ditentukan, nilainya akan default ke (height, width). Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952.

negative_original_size (tuple[int], opsional, defaultnya (1024, 1024)) : Untuk mengondisikan proses generasi secara negatif berdasarkan resolusi gambar tertentu. Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952. Untuk informasi lebih lanjut, lihat thread issue ini: https://github.com/huggingface/diffusers/issues/4208.

negative_crops_coords_top_left (tuple[int], opsional, defaultnya (0, 0)) : Untuk mengondisikan proses generasi secara negatif berdasarkan koordinat crop tertentu. Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952. Untuk informasi lebih lanjut, lihat thread issue ini: https://github.com/huggingface/diffusers/issues/4208.

negative_target_size (tuple[int], opsional, defaultnya (1024, 1024)) : Untuk mengondisikan proses generasi secara negatif berdasarkan resolusi gambar target. Sebaiknya sama dengan target_size untuk sebagian besar kasus. Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952. Untuk informasi lebih lanjut, lihat thread issue ini: https://github.com/huggingface/diffusers/issues/4208.

aesthetic_score (float, opsional, default 6.0) : Digunakan untuk mensimulasikan skor estetika dari gambar yang dihasilkan dengan memengaruhi kondisi teks positif. Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952.

negative_aesthetic_score (float, opsional, default 2.5) : Bagian dari micro-conditioning SDXL seperti dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952. Dapat digunakan untuk mensimulasikan skor estetika dari gambar yang dihasilkan dengan memengaruhi kondisi teks negatif.

clip_skip (int, opsional) : Jumlah lapisan yang akan dilewati dari CLIP saat menghitung prompt embeddings. Nilai 1 berarti bahwa output dari lapisan sebelum terakhir akan digunakan untuk menghitung prompt embeddings.

callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opsional) : Fungsi atau subkelas dari PipelineCallback atau MultiPipelineCallbacks yang dipanggil di akhir setiap langkah denoising selama inferensi, dengan argumen berikut: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs akan berisi daftar semua tensor sesuai yang ditentukan oleh callback_on_step_end_tensor_inputs.

callback_on_step_end_tensor_inputs (list, opsional) : Daftar input tensor untuk fungsi callback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumen callback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut ._callback_tensor_inputs dari kelas pipeline Anda.

Mengembalikan: StableDiffusionPipelineOutput atau tuple

StableDiffusionPipelineOutput jika return_dict bernilai True, selain itu berupa tuple yang berisi gambar output.

Fungsi yang dipanggil saat memanggil pipeline untuk generasi.

Contoh:

>>> # pip install accelerate transformers safetensors diffusers

>>> import torch
>>> import numpy as np
>>> from PIL import Image

>>> from transformers import DPTImageProcessor, DPTForDepthEstimation
>>> from diffusers import ControlNetModel, StableDiffusionXLControlNetImg2ImgPipeline, AutoencoderKL
>>> from diffusers.utils import load_image

>>> depth_estimator = DPTForDepthEstimation.from_pretrained("Intel/dpt-hybrid-midas").to("cuda")
>>> feature_extractor = DPTImageProcessor.from_pretrained("Intel/dpt-hybrid-midas")
>>> controlnet = ControlNetModel.from_pretrained(
...     "diffusers/controlnet-depth-sdxl-1.0-small",
...     variant="fp16",
...     use_safetensors=True,
...     torch_dtype=torch.float16,
... )
>>> vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix", torch_dtype=torch.float16)
>>> pipe = StableDiffusionXLControlNetImg2ImgPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0",
...     controlnet=controlnet,
...     vae=vae,
...     variant="fp16",
...     use_safetensors=True,
...     torch_dtype=torch.float16,
... )
>>> pipe.enable_model_cpu_offload()

>>> def get_depth_map(image):
...     image = feature_extractor(images=image, return_tensors="pt").pixel_values.to("cuda")
...     with torch.no_grad(), torch.autocast("cuda"):
...         depth_map = depth_estimator(image).predicted_depth

...     depth_map = torch.nn.functional.interpolate(
...         depth_map.unsqueeze(1),
...         size=(1024, 1024),
...         mode="bicubic",
...         align_corners=False,
...     )
...     depth_min = torch.amin(depth_map, dim=[1, 2, 3], keepdim=True)
...     depth_max = torch.amax(depth_map, dim=[1, 2, 3], keepdim=True)
...     depth_map = (depth_map - depth_min) / (depth_max - depth_min)
...     image = torch.cat([depth_map] * 3, dim=1)
...     image = image.permute(0, 2, 3, 1).cpu().numpy()[0]
...     image = Image.fromarray((image * 255.0).clip(0, 255).astype(np.uint8))
...     return image

>>> prompt = "A robot, 4k photo"
>>> image = load_image(
...     "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/kandinsky/cat.png"
... ).resize((1024, 1024))
>>> controlnet_conditioning_scale = 0.5  # recommended for good generalization
>>> depth_image = get_depth_map(image)

>>> images = pipe(
...     prompt,
...     image=image,
...     control_image=depth_image,
...     strength=0.99,
...     num_inference_steps=50,
...     controlnet_conditioning_scale=controlnet_conditioning_scale,
... ).images
>>> images[0].save(f"robot_cat.png")

encode_prompt[[diffusers.StableDiffusionXLControlNetImg2ImgPipeline.encode_prompt]]

encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)

Sumber

Parameter:

prompt (str atau list[str], opsional) : prompt yang akan dienkod

prompt_2 (str atau list[str], opsional) : Prompt atau prompt yang akan dikirim ke tokenizer_2 dan text_encoder_2. Jika tidak didefinisikan, prompt digunakan di kedua text-encoder

device : (torch.device): perangkat torch

num_images_per_prompt (int) : jumlah gambar yang harus dihasilkan per prompt

do_classifier_free_guidance (bool) : apakah akan menggunakan classifier free guidance atau tidak

negative_prompt (str atau list[str], opsional) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan negative_prompt_embeds sebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jika guidance_scale kurang dari 1).

negative_prompt_2 (str atau list[str], opsional) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar untuk dikirim ke tokenizer_2 dan text_encoder_2. Jika tidak didefinisikan, negative_prompt digunakan di kedua text-encoder

prompt_embeds (torch.Tensor, opsional) : Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input prompt.

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 input negative_prompt.

pooled_prompt_embeds (torch.Tensor, opsional) : Pooled text embeddings yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, pooled text embeddings akan dihasilkan dari argumen input prompt.

negative_pooled_prompt_embeds (torch.Tensor, opsional) : Embedding teks negatif yang sudah dipooling sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan dihasilkan dari argumen input negative_prompt.

lora_scale (float, opsional) : Skala lora yang akan diterapkan ke semua lapisan LoRA dari text encoder jika lapisan LoRA dimuat.

clip_skip (int, opsional) : Jumlah lapisan yang akan dilewati dari CLIP saat menghitung prompt embeddings. Nilai 1 berarti bahwa output dari lapisan sebelum terakhir akan digunakan untuk menghitung prompt embeddings.

Mengkodekan prompt menjadi hidden states dari text encoder.

StableDiffusionXLControlNetInpaintPipeline[[diffusers.StableDiffusionXLControlNetInpaintPipeline]]

diffusers.StableDiffusionXLControlNetInpaintPipeline[[diffusers.StableDiffusionXLControlNetInpaintPipeline]]

diffusers.StableDiffusionXLControlNetInpaintPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, controlnet: diffusers.models.controlnets.controlnet.ControlNetModel | list[diffusers.models.controlnets.controlnet.ControlNetModel] | tuple[diffusers.models.controlnets.controlnet.ControlNetModel] | diffusers.models.controlnets.multicontrolnet.MultiControlNetModel, scheduler: KarrasDiffusionSchedulers, requires_aesthetics_score: bool = False, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None, feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None)

Sumber

Parameter:

vae (AutoencoderKL) : Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten.

text_encoder (CLIPTextModel) : Text-encoder yang dibekukan. Stable Diffusion XL menggunakan bagian teks dari CLIP, khususnya varian clip-vit-large-patch14.

text_encoder_2 ( CLIPTextModelWithProjection) : Text-encoder beku kedua. Stable Diffusion XL menggunakan bagian teks dan pool dari CLIP, khususnya varian laion/CLIP-ViT-bigG-14-laion2B-39B-b160k.

tokenizer (CLIPTokenizer) : Tokenizer dari kelas CLIPTokenizer.

tokenizer_2 (CLIPTokenizer) : Tokenizer kedua dari kelas CLIPTokenizer.

unet (UNet2DConditionModel) : Arsitektur U-Net bersyarat untuk mendenoise latens gambar yang telah dikodekan.

scheduler (SchedulerMixin) : Penjadwal yang digunakan bersama unet untuk menghilangkan noise pada latens gambar yang telah dikodekan. Bisa berupa DDIMScheduler, LMSDiscreteScheduler, atau PNDMScheduler.

Pipeline untuk generasi teks-ke-gambar menggunakan Stable Diffusion XL.

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.)

Pipeline juga mewarisi metode pemuatan berikut:

call[[diffusers.StableDiffusionXLControlNetInpaintPipeline.call]]

__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, mask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, control_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], list[typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]]] = None, height: int | None = None, width: int | None = None, padding_mask_crop: int | None = None, strength: float = 0.9999, num_inference_steps: int = 50, denoising_start: float | None = None, denoising_end: float | None = None, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, controlnet_conditioning_scale: float | list[float] = 1.0, guess_mode: bool = False, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, guidance_rescale: float = 0.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = None, aesthetic_score: float = 6.0, negative_aesthetic_score: float = 2.5, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs)

Sumber

Parameter:

prompt (str atau list[str], opsional) : Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus melewatkan prompt_embeds sebagai gantinya.

prompt_2 (str atau list[str], opsional) : Prompt atau prompt yang akan dikirim ke tokenizer_2 dan text_encoder_2. Jika tidak didefinisikan, prompt digunakan di kedua text-encoder

image (PIL.Image.Image) : Image, atau tensor yang mewakili batch gambar yang akan di-inpaint, yaitu bagian dari gambar akan dimask dengan mask_image dan dilukis ulang sesuai dengan prompt.

mask_image (PIL.Image.Image) : Image, atau tensor yang mewakili batch gambar, untuk memasker image. Piksel putih pada mask akan diwarnai ulang, sedangkan piksel hitam akan dipertahankan. Jika mask_image adalah gambar PIL, gambar tersebut akan dikonversi menjadi satu saluran (luminance) sebelum digunakan. Jika berupa tensor, tensor tersebut harus berisi satu saluran warna (L) alih-alih 3, sehingga bentuk yang diharapkan adalah (B, H, W, 1).

control_image (PipelineImageInput atau list[PipelineImageInput], opsional) : Kondisi input ControlNet untuk memberikan panduan kepada unet dalam proses generasi. Jika tipe ditentukan sebagai torch.Tensor, nilai tersebut diteruskan ke ControlNet apa adanya. PIL.Image.Image juga dapat diterima sebagai gambar. Dimensi gambar output secara default mengikuti dimensi image. Jika tinggi dan/atau lebar diberikan, image akan di-resize sesuai. Jika beberapa ControlNet ditentukan dalam init, gambar harus diteruskan sebagai daftar sehingga setiap elemen daftar dapat di-batch dengan benar untuk input ke satu ControlNet.

height (int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Tinggi gambar yang dihasilkan dalam piksel.

width (int, opsional, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Lebar gambar yang dihasilkan dalam piksel.

padding_mask_crop (int, opsional, defaultnya None) : Ukuran margin pada crop yang akan diterapkan ke gambar dan masking. Jika None, tidak ada crop yang diterapkan ke image dan mask_image. Jika padding_mask_crop bukan None, sistem akan terlebih dahulu menemukan area persegi panjang dengan rasio aspek yang sama dengan gambar dan mencakup semua area yang di-mask, kemudian memperluas area tersebut berdasarkan padding_mask_crop. Gambar dan mask_image kemudian akan di-crop berdasarkan area yang telah diperluas sebelum di-resize ke ukuran gambar asli untuk inpainting. Hal ini berguna ketika area yang di-mask kecil sementara gambarnya besar dan mengandung informasi yang tidak relevan untuk inpainting, seperti latar belakang.

strength (float, opsional, default 0.9999) : Secara konseptual, menunjukkan seberapa besar transformasi pada bagian yang dimasker dari image referensi. Nilai harus berada di antara 0 dan 1. image akan digunakan sebagai titik awal, dengan penambahan noise yang semakin besar seiring meningkatnya strength. Jumlah langkah denoising bergantung pada jumlah noise yang ditambahkan di awal. Ketika strength bernilai 1, noise yang ditambahkan akan maksimal dan proses denoising akan berjalan untuk jumlah iterasi penuh yang ditentukan dalam num_inference_steps. Dengan demikian, nilai 1 pada dasarnya mengabaikan bagian yang dimasker dari image referensi. Perhatikan bahwa jika denoising_start dideklarasikan sebagai bilangan bulat, nilai strength akan diabaikan.

num_inference_steps (int, opsional, defaultnya 50) : Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat.

denoising_start (float, opsional) : Jika ditentukan, menunjukkan fraksi (antara 0.0 dan 1.0) dari total proses denoising yang akan dilewati sebelum proses dimulai. Akibatnya, bagian awal dari proses denoising diabaikan dan diasumsikan bahwa image yang diberikan adalah gambar yang telah didenoi sebagian. Perhatikan bahwa ketika ini ditentukan, strength akan diabaikan. Parameter denoising_start sangat bermanfaat ketika pipeline ini diintegrasikan ke dalam setup multi-pipeline "Mixture of Denoisers", seperti yang dijelaskan dalam Refining the Image Output.

denoising_end (float, opsional) : Jika ditentukan, menentukan fraksi (antara 0.0 dan 1.0) dari total proses denoising yang harus diselesaikan sebelum proses tersebut dihentikan secara dini secara sengaja. Akibatnya, sampel yang dikembalikan masih akan mempertahankan sejumlah besar noise (sekitar 20% akhir dari timestep masih diperlukan) dan harus didenoise oleh pipeline penerus yang memiliki denoising_start diatur ke 0.8 agar hanya mendenoise 20% akhir dari scheduler. Parameter denoising_end sebaiknya digunakan ketika pipeline ini merupakan bagian dari setup multi-pipeline "Mixture of Denoisers", seperti yang diuraikan dalam Refining the Image Output.

guidance_scale (float, opsional, default 7.5) : Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance. guidance_scale didefinisikan sebagai w dari persamaan 2. pada Imagen Paper. Skala panduan diaktifkan dengan mengatur guidance_scale > 1. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan prompt teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah.

negative_prompt (str atau list[str], opsional) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan negative_prompt_embeds sebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jika guidance_scale kurang dari 1).

negative_prompt_2 (str atau list[str], opsional) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar untuk dikirim ke tokenizer_2 dan text_encoder_2. Jika tidak didefinisikan, negative_prompt digunakan di kedua text-encoder

prompt_embeds (torch.Tensor, opsional) : Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input prompt.

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 input negative_prompt.

ip_adapter_image : (PipelineImageInput, opsional): Input gambar opsional untuk bekerja dengan IP Adapters.

ip_adapter_image_embeds (list[torch.Tensor], opsional) : Embedding gambar yang telah dibuat sebelumnya untuk IP-Adapter. Ini harus berupa daftar dengan panjang yang sama dengan jumlah IP-adapter. Setiap elemen harus berupa tensor dengan bentuk (batch_size, num_images, emb_dim). Embedding gambar negatif harus disertakan jika do_classifier_free_guidance diatur ke True. Jika tidak disediakan, embedding dihitung dari argumen input ip_adapter_image.

pooled_prompt_embeds (torch.Tensor, opsional) : Pooled text embeddings yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, pooled text embeddings akan dihasilkan dari argumen input prompt.

negative_pooled_prompt_embeds (torch.Tensor, opsional) : Embedding teks negatif yang sudah dipooling sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan dihasilkan dari argumen input negative_prompt.

num_images_per_prompt (int, opsional, default 1) : Jumlah gambar yang akan dihasilkan per prompt.

eta (float, opsional, default 0.0) : Bersesuaian dengan parameter eta (η) dalam paper DDIM: https://huggingface.co/papers/2010.02502. Hanya berlaku untuk schedulers.DDIMScheduler, akan diabaikan untuk yang lain.

generator (torch.Generator, opsional) : Satu atau daftar generator torch untuk membuat generasi menjadi deterministik.

latents (torch.Tensor, opsional) : Laten 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 laten akan dibuat dengan pengambilan sampel menggunakan generator acak yang diberikan.

output_type (str, opsional, defaultnya "pil") : Format output dari gambar yang dihasilkan. Pilih antara PIL: PIL.Image.Image atau np.array.

return_dict (bool, opsional, defaultnya True) : Apakah akan mengembalikan StableDiffusionPipelineOutput alih-alih tuple biasa.

cross_attention_kwargs (dict, opsional) : Kamus kwargs yang jika ditentukan akan diteruskan ke AttentionProcessor seperti yang didefinisikan di bawah self.processor dalam diffusers.models.attention_processor.

controlnet_conditioning_scale (float atau list[float], opsional, default 1.0) : Output dari ControlNet dikalikan dengan controlnet_conditioning_scale sebelum ditambahkan ke residual di unet asli. Jika beberapa ControlNet ditentukan di init, Anda dapat mengatur skala yang sesuai sebagai list.

guess_mode (bool, opsional, defaultnya False) : Encoder ControlNet mencoba mengenali konten gambar input bahkan jika Anda menghapus semua prompt. Nilai guidance_scale antara 3.0 dan 5.0 direkomendasikan.

control_guidance_start (float atau list[float], opsional, default 0.0) : Persentase dari total langkah di mana ControlNet mulai diterapkan.

control_guidance_end (float atau list[float], opsional, default 1.0) : Persentase dari total langkah di mana ControlNet berhenti diterapkan.

guidance_rescale (float, opsional, default 0.0) : Faktor rescale guidance dari Common Diffusion Noise Schedules and Sample Steps are Flawed.

original_size (tuple[int], opsional, defaultnya (1024, 1024)) : Jika original_size tidak sama dengan target_size, gambar akan tampak di-downsample atau di-upsample. original_size defaultnya (width, height) jika tidak ditentukan. Bagian dari micro-conditioning SDXL seperti dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952.

crops_coords_top_left (tuple[int], opsional, defaultnya (0, 0)) : crops_coords_top_left dapat digunakan untuk menghasilkan gambar yang tampak "dipotong" dari posisi crops_coords_top_left ke bawah. Gambar yang bagus dan terpusat biasanya dicapai dengan mengatur crops_coords_top_left ke (0, 0). Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952.

target_size (tuple[int], opsional, defaultnya (1024, 1024)) : Untuk sebagian besar kasus, target_size sebaiknya diatur ke tinggi dan lebar yang diinginkan dari gambar yang dihasilkan. Jika tidak ditentukan, nilainya akan default ke (width, height). Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952.

aesthetic_score (float, opsional, default 6.0) : Digunakan untuk mensimulasikan skor estetika dari gambar yang dihasilkan dengan memengaruhi kondisi teks positif. Bagian dari micro-conditioning SDXL seperti yang dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952.

negative_aesthetic_score (float, opsional, default 2.5) : Bagian dari micro-conditioning SDXL seperti dijelaskan di bagian 2.2 dari https://huggingface.co/papers/2307.01952. Dapat digunakan untuk mensimulasikan skor estetika dari gambar yang dihasilkan dengan memengaruhi kondisi teks negatif.

clip_skip (int, opsional) : Jumlah lapisan yang akan dilewati dari CLIP saat menghitung prompt embeddings. Nilai 1 berarti bahwa output dari lapisan sebelum terakhir akan digunakan untuk menghitung prompt embeddings.

callback_on_step_end (Callable, PipelineCallback, MultiPipelineCallbacks, opsional) : Fungsi atau subkelas dari PipelineCallback atau MultiPipelineCallbacks yang dipanggil di akhir setiap langkah denoising selama inferensi, dengan argumen berikut: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs akan berisi daftar semua tensor sesuai yang ditentukan oleh callback_on_step_end_tensor_inputs.

callback_on_step_end_tensor_inputs (list, opsional) : Daftar input tensor untuk fungsi callback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumen callback_kwargs. Anda hanya dapat menyertakan variabel yang tercantum dalam atribut ._callback_tensor_inputs dari kelas pipeline Anda.

Mengembalikan: ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput atau tuple

~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput jika return_dict bernilai True, selain itu berupa tuple. tuple. Saat mengembalikan tuple, elemen pertama adalah daftar berisi gambar yang dihasilkan.

Fungsi yang dipanggil saat memanggil pipeline untuk generasi.

Contoh:

>>> # !pip install transformers accelerate
>>> from diffusers import StableDiffusionXLControlNetInpaintPipeline, ControlNetModel, DDIMScheduler
>>> from diffusers.utils import load_image
>>> from PIL import Image
>>> import numpy as np
>>> import torch

>>> init_image = load_image(
...     "https://huggingface.co/datasets/diffusers/test-arrays/resolve/main/stable_diffusion_inpaint/boy.png"
... )
>>> init_image = init_image.resize((1024, 1024))

>>> generator = torch.Generator(device="cpu").manual_seed(1)

>>> mask_image = load_image(
...     "https://huggingface.co/datasets/diffusers/test-arrays/resolve/main/stable_diffusion_inpaint/boy_mask.png"
... )
>>> mask_image = mask_image.resize((1024, 1024))

>>> def make_canny_condition(image):
...     image = np.array(image)
...     image = cv2.Canny(image, 100, 200)
...     image = image[:, :, None]
...     image = np.concatenate([image, image, image], axis=2)
...     image = Image.fromarray(image)
...     return image

>>> control_image = make_canny_condition(init_image)

>>> controlnet = ControlNetModel.from_pretrained(
...     "diffusers/controlnet-canny-sdxl-1.0", torch_dtype=torch.float16
... )
>>> pipe = StableDiffusionXLControlNetInpaintPipeline.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0", controlnet=controlnet, torch_dtype=torch.float16
... )

>>> pipe.enable_model_cpu_offload()

>>> # generate image
>>> image = pipe(
...     "a handsome man with ray-ban sunglasses",
...     num_inference_steps=20,
...     generator=generator,
...     eta=1.0,
...     image=init_image,
...     mask_image=mask_image,
...     control_image=control_image,
... ).images[0]

encode_prompt[[diffusers.StableDiffusionXLControlNetInpaintPipeline.encode_prompt]]

encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)

Sumber

Parameter:

prompt (str atau list[str], opsional) : prompt yang akan dienkod

prompt_2 (str atau list[str], opsional) : Prompt atau prompt yang akan dikirim ke tokenizer_2 dan text_encoder_2. Jika tidak didefinisikan, prompt digunakan di kedua text-encoder

device : (torch.device): perangkat torch

num_images_per_prompt (int) : jumlah gambar yang harus dihasilkan per prompt

do_classifier_free_guidance (bool) : apakah akan menggunakan classifier free guidance atau tidak

negative_prompt (str atau list[str], opsional) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan negative_prompt_embeds sebagai gantinya. Diabaikan saat tidak menggunakan guidance (yaitu, diabaikan jika guidance_scale kurang dari 1).

negative_prompt_2 (str atau list[str], opsional) : Prompt atau prompt-prompt yang tidak akan memandu generasi gambar untuk dikirim ke tokenizer_2 dan text_encoder_2. Jika tidak didefinisikan, negative_prompt digunakan di kedua text-encoder

prompt_embeds (torch.Tensor, opsional) : Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen input prompt.

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 input negative_prompt.

pooled_prompt_embeds (torch.Tensor, opsional) : Pooled text embeddings yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, pooled text embeddings akan dihasilkan dari argumen input prompt.

negative_pooled_prompt_embeds (torch.Tensor, opsional) : Embedding teks negatif yang sudah dipooling sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan dihasilkan dari argumen input negative_prompt.

lora_scale (float, opsional) : Skala lora yang akan diterapkan ke semua lapisan LoRA dari text encoder jika lapisan LoRA dimuat.

clip_skip (int, opsional) : Jumlah lapisan yang akan dilewati dari CLIP saat menghitung prompt embeddings. Nilai 1 berarti bahwa output dari lapisan sebelum terakhir akan digunakan untuk menghitung prompt embeddings.

Mengkodekan prompt menjadi hidden states dari text encoder.

StableDiffusionPipelineOutput[[diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput]]

diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput[[diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput]]

diffusers.pipelines.stable_diffusion.StableDiffusionPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray, nsfw_content_detected: list[bool] | None)

Sumber

Parameter:

images (list[PIL.Image.Image] atau np.ndarray) : daftar gambar PIL yang telah didenoise dengan panjang batch_size atau array NumPy dengan bentuk (batch_size, height, width, num_channels).

nsfw_content_detected (list[bool]) : daftar yang menunjukkan apakah gambar yang dihasilkan yang sesuai mengandung konten "not-safe-for-work" (nsfw) atau None jika pemeriksaan keamanan tidak dapat dilakukan.

Kelas output untuk pipeline Stable Diffusion.

Xet Storage Details

Size:
83.6 kB
·
Xet hash:
8098244c738359541d806bf32d25c08277932c405621e040c52ff17a955f8a2b

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.