Diffusers documentation

InstructPix2Pix

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

InstructPix2Pix

LoRA

InstructPix2Pix: Learning to Follow Image Editing Instructions ditulis oleh Tim Brooks, Aleksander Holynski, dan Alexei A. Efros.

Abstrak dari makalah tersebut adalah:

Kami mengusulkan metode untuk mengedit gambar berdasarkan instruksi manusia: diberikan sebuah gambar input dan instruksi tertulis yang memberitahu model apa yang harus dilakukan, model kami mengikuti instruksi tersebut untuk mengedit gambar. Untuk memperoleh data pelatihan untuk masalah ini, kami menggabungkan pengetahuan dari dua model pralatih besar — model bahasa (GPT-3) dan model teks-ke-gambar (Stable Diffusion) — untuk menghasilkan dataset besar berisi contoh pengeditan gambar. Model difusi bersyarat kami, InstructPix2Pix, dilatih pada data yang kami hasilkan, dan digeneralisasikan ke gambar nyata serta instruksi yang ditulis pengguna pada saat inferensi. Karena model ini melakukan pengeditan dalam langkah maju (forward pass) dan tidak memerlukan penyesuaian halus (fine-tuning) per contoh atau inversi, model kami mengedit gambar dengan cepat, hanya dalam hitungan detik. Kami menunjukkan hasil pengeditan yang meyakinkan untuk kumpulan gambar input dan instruksi tertulis yang beragam.

Anda dapat menemukan informasi tambahan tentang InstructPix2Pix di makalah, codebase asli, dan mencobanya di demo.

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.

StableDiffusionInstructPix2PixPipeline

kelas diffusers.StableDiffusionInstructPix2PixPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltokenizer: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulerssafety_checker: StableDiffusionSafetyCheckerfeature_extractor: CLIPImageProcessorPilimage_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = Nonerequires_safety_checker: bool = True )

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 (clip-vit-large-patch14).
  • tokenizer (CLIPTokenizer) — CLIPTokenizer untuk melakukan tokenisasi teks.
  • unet (UNet2DConditionModel) — UNet2DConditionModel untuk menghilangkan noise pada latens gambar yang telah dienkod.
  • scheduler (SchedulerMixin) — Scheduler yang digunakan bersama dengan unet untuk menghilangkan noise pada latens gambar yang telah dikodekan. Bisa berupa salah satu dari DDIMScheduler, LMSDiscreteScheduler, atau PNDMScheduler.
  • safety_checker (StableDiffusionSafetyChecker) — Modul klasifikasi yang memperkirakan apakah gambar yang dihasilkan dapat dianggap ofensif atau berbahaya. Silakan lihat model card untuk detail lebih lanjut tentang potensi bahaya suatu model.
  • feature_extractor (CLIPImageProcessor) — CLIPImageProcessor untuk mengekstrak fitur dari gambar yang dihasilkan; digunakan sebagai input untuk safety_checker.

Pipeline untuk pengeditan gambar pada tingkat piksel dengan mengikuti instruksi teks (berdasarkan Stable Diffusion).

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__

< >

( prompt: str | list[str] = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonenum_inference_steps: int = 100guidance_scale: float = 7.5image_guidance_scale: float = 1.5negative_prompt: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Noneip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneip_adapter_image_embeds: list[torch.Tensor] | None = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']cross_attention_kwargs: dict[str, typing.Any] | None = None**kwargs ) → StableDiffusionPipelineOutput or tuple

Parameter

  • prompt (str atau list[str], opsional) — Prompt atau prompt-prompt untuk memandu generasi gambar. Jika tidak didefinisikan, Anda perlu meneruskan prompt_embeds.
  • image (torch.Tensor np.ndarray, PIL.Image.Image, list[torch.Tensor], list[PIL.Image.Image], atau list[np.ndarray]) — Image atau tensor yang mewakili batch gambar untuk di-repaint sesuai dengan prompt. Dapat juga menerima latents gambar sebagai image, tetapi jika latents diberikan secara langsung, latents tersebut tidak akan di-encode ulang.
  • num_inference_steps (int, opsional, default 100) — 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) — 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.
  • image_guidance_scale (float, opsional, default 1.5) — Mendorong gambar yang dihasilkan menuju image awal. Skala panduan gambar diaktifkan dengan mengatur image_guidance_scale > 1. Skala panduan gambar yang lebih tinggi mendorong gambar yang dihasilkan agar erat terkait dengan image sumber, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. Pipeline ini memerlukan nilai minimal 1.
  • negative_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan apa yang tidak boleh disertakan dalam generasi gambar. Jika tidak didefinisikan, Anda perlu mengirimkan negative_prompt_embeds sebagai gantinya. Diabaikan saat tidak menggunakan panduan (guidance_scale < 1).
  • 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, opsional) — torch.Generator untuk membuat generasi menjadi deterministik.
  • latents (torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya dan 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 menggunakan generator acak yang diberikan.
  • prompt_embeds (torch.Tensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks (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 (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). Harus mengandung embedding gambar negatif jika do_classifier_free_guidance diatur ke True. Jika tidak disediakan, embedding dihitung dari argumen input ip_adapter_image.
  • output_type (str, opsional, default "pil") — Format output dari gambar yang dihasilkan. Pilih antara PIL.Image atau np.array.
  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan StableDiffusionPipelineOutput alih-alih tuple biasa.
  • 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.
  • cross_attention_kwargs (dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan ke AttentionProcessor seperti yang didefinisikan dalam self.processor.

Mengembalikan

StableDiffusionPipelineOutput atau tuple

Jika return_dict adalah True, StableDiffusionPipelineOutput dikembalikan, sebaliknya sebuah tuple dikembalikan di mana elemen pertama adalah daftar berisi gambar yang dihasilkan dan elemen kedua adalah daftar bool yang menunjukkan apakah gambar yang dihasilkan yang sesuai mengandung konten “not-safe-for-work” (nsfw).

Fungsi panggilan untuk pipeline pada generasi.

Contoh:

>>> import PIL
>>> import requests
>>> import torch
>>> from io import BytesIO

>>> from diffusers import StableDiffusionInstructPix2PixPipeline


>>> def download_image(url):
...     response = requests.get(url)
...     return PIL.Image.open(BytesIO(response.content)).convert("RGB")


>>> img_url = "https://huggingface.co/datasets/diffusers/diffusers-images-docs/resolve/main/mountain.png"

>>> image = download_image(img_url).resize((512, 512))

>>> pipe = StableDiffusionInstructPix2PixPipeline.from_pretrained(
...     "timbrooks/instruct-pix2pix", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")

>>> prompt = "make the mountains snowy"
>>> image = pipe(prompt=prompt, image=image).images[0]

load_textual_inversion

< >

( pretrained_model_name_or_path: str | list[str] | dict[str, torch.Tensor] | list[dict[str, torch.Tensor]]token: str | list[str] | None = Nonetokenizer: 'PreTrainedTokenizer' | None = Nonetext_encoder: 'PreTrainedModel' | None = None**kwargs )

Parameter

  • pretrained_model_name_or_path (str atau os.PathLike atau list[str or os.PathLike] atau Dict atau list[Dict]) — Dapat berupa salah satu dari berikut ini atau daftar dari item-item tersebut:
    • String, model id (misalnya sd-concepts-library/low-poly-hd-logos-icons) dari model terlatih yang dihosting di Hub.
    • Path ke direktori (misalnya ./my_text_inversion_directory/) yang berisi bobot textual inversion.
    • Path ke file (misalnya ./my_text_inversions.pt) yang berisi bobot textual inversion.
    • torch state dict.
  • token (str atau list[str], opsional) — Timpa token yang akan digunakan untuk bobot inversi teks. Jika pretrained_model_name_or_path berupa daftar, maka token juga harus berupa daftar dengan panjang yang sama.
  • text_encoder (CLIPTextModel, opsional) — Text-encoder yang dibekukan (clip-vit-large-patch14). Jika tidak ditentukan, fungsi akan mengambil self.tokenizer.
  • tokenizer (CLIPTokenizer, opsional) — CLIPTokenizer untuk melakukan tokenisasi teks. Jika tidak ditentukan, fungsi akan mengambil self.tokenizer.
  • weight_name (str, opsional) — Nama file bobot kustom. Ini harus digunakan ketika:
    • File textual inversion yang disimpan berada dalam format 🤗 Diffusers, tetapi disimpan di bawah nama bobot tertentu seperti text_inv.bin.
    • File textual inversion yang disimpan berada dalam format Automatic1111.
  • cache_dir (str | os.PathLike, opsional) — Path ke direktori tempat konfigurasi model pretrained yang diunduh di-cache jika cache standar tidak digunakan.
  • force_download (bool, opsional, default False) — Apakah akan memaksa (mengunduh ulang) bobot model dan file konfigurasi, menimpa versi yang sudah di-cache jika ada.
  • proxies (dict[str, str], opsional) — Kamus server proxy yang digunakan berdasarkan protokol atau endpoint, misalnya {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Proxy digunakan pada setiap permintaan.
  • local_files_only (bool, opsional, default False) — Apakah hanya memuat bobot model dan file konfigurasi lokal atau tidak. Jika diatur ke True, model tidak akan diunduh dari Hub.
  • hf_token (str atau bool, opsional) — Token yang digunakan sebagai otorisasi bearer HTTP untuk file jarak jauh. Jika True, token yang dihasilkan dari diffusers-cli login (disimpan di ~/.huggingface) akan digunakan.
  • revision (str, opsional, default "main") — Versi model spesifik yang akan digunakan. Bisa berupa nama branch, nama tag, commit id, atau identifier apa pun yang diizinkan oleh Git.
  • subfolder (str, opsional, default "") — Lokasi subfolder dari file model di dalam repositori model yang lebih besar di Hub atau secara lokal.
  • mirror (str, opsional) — Sumber cermin untuk mengatasi masalah aksesibilitas jika Anda mengunduh model di Tiongkok. Kami tidak menjamin ketepatan waktu atau keamanan sumber, dan Anda harus merujuk ke situs cermin untuk informasi lebih lanjut.

Muat embedding Textual Inversion ke dalam text encoder dari StableDiffusionPipeline (format 🤗 Diffusers dan Automatic1111 didukung).

Contoh:

Untuk memuat vektor embedding Textual Inversion dalam format 🤗 Diffusers:

from diffusers import StableDiffusionPipeline
import torch

model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")

pipe.load_textual_inversion("sd-concepts-library/cat-toy")

prompt = "A <cat-toy> backpack"

image = pipe(prompt, num_inference_steps=50).images[0]
image.save("cat-backpack.png")

Untuk memuat vektor embedding Textual Inversion dalam format Automatic1111, pastikan untuk mengunduh vektornya terlebih dahulu (misalnya dari civitAI) dan kemudian memuat vektor tersebut

secara lokal:

from diffusers import StableDiffusionPipeline
import torch

model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")

pipe.load_textual_inversion("./charturnerv2.pt", token="charturnerv2")

prompt = "charturnerv2, multiple views of the same character in the same outfit, a character turnaround of a woman wearing a black jacket and red shirt, best quality, intricate details."

image = pipe(prompt, num_inference_steps=50).images[0]
image.save("character.png")

load_lora_weights

< >

( pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor]adapter_name: str | None = Nonehotswap: bool = False**kwargs )

Parameter

  • pretrained_model_name_or_path_or_dict (str atau os.PathLike atau dict) — Lihat lora_state_dict().
  • adapter_name (str, opsional) — Nama adapter yang akan digunakan untuk merujuk model adapter yang dimuat. Jika tidak ditentukan, akan digunakan default_{i} di mana i adalah total jumlah adapter yang dimuat.
  • low_cpu_mem_usage (bool, opsional) — Percepat pemuatan model dengan hanya memuat bobot LoRA pretrained dan tidak menginisialisasi bobot acak.
  • hotswap (bool, opsional) — Bawaan adalah False. Apakah akan mengganti adapter (LoRA) yang sudah ada dengan adapter yang baru dimuat secara in-place. Artinya, alih-alih memuat adapter tambahan, proses ini akan mengambil bobot adapter yang ada dan menggantinya dengan bobot adapter baru. Hal ini bisa lebih cepat dan lebih efisien dalam penggunaan memori. Namun, keuntungan utama dari hotswapping adalah ketika model dikompilasi dengan torch.compile, pemuatan adapter baru tidak memerlukan kompilasi ulang model. Saat menggunakan hotswapping, adapter_name harus berupa nama adapter yang sudah dimuat.

    Jika adapter baru dan adapter lama memiliki rank dan/atau alpha LoRA (yaitu scaling) yang berbeda, Anda perlu memanggil metode tambahan sebelum memuat adapter:

Muat bobot LoRA yang ditentukan dalam pretrained_model_name_or_path_or_dict ke self.unet dan self.text_encoder.

Semua kwargs diteruskan ke self.lora_state_dict.

Lihat lora_state_dict() untuk detail lebih lanjut tentang cara state dict dimuat.

Lihat load_lora_into_unet() untuk detail lebih lanjut tentang bagaimana state dict dimuat ke dalam self.unet.

Lihat load_lora_into_text_encoder() untuk detail lebih lanjut tentang bagaimana state dict dimuat ke dalam self.text_encoder.

save_lora_weights

< >

( save_directory: str | os.PathLikeunet_lora_layers: dict = Nonetext_encoder_lora_layers: dict = Noneis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_serialization: bool = Trueunet_lora_adapter_metadata = Nonetext_encoder_lora_adapter_metadata = None )

Parameter

  • save_directory (str atau os.PathLike) — Direktori untuk menyimpan parameter LoRA. Akan dibuat jika belum ada.
  • unet_lora_layers (dict[str, torch.nn.Module] atau dict[str, torch.Tensor]) — State dict dari lapisan LoRA yang sesuai dengan unet.
  • text_encoder_lora_layers (dict[str, torch.nn.Module] atau dict[str, torch.Tensor]) — State dict dari lapisan LoRA yang sesuai dengan text_encoder. Anda harus secara eksplisit meneruskan state dict LoRA text encoder karena berasal dari 🤗 Transformers.
  • is_main_process (bool, opsional, default True) — Apakah proses yang memanggil ini adalah proses utama atau tidak. Berguna selama pelatihan terdistribusi dan Anda perlu memanggil fungsi ini di semua proses. Dalam kasus ini, setel is_main_process=True hanya pada proses utama untuk menghindari kondisi balapan.
  • save_function (Callable) — Fungsi yang digunakan untuk menyimpan state dictionary. Berguna selama pelatihan terdistribusi ketika Anda perlu mengganti torch.save dengan metode lain. Dapat dikonfigurasi dengan variabel lingkungan DIFFUSERS_SAVE_MODE.
  • safe_serialization (bool, opsional, default True) — Apakah model disimpan menggunakan safetensors atau cara tradisional PyTorch dengan pickle.
  • unet_lora_adapter_metadata — Metadata adapter LoRA yang terkait dengan unet untuk diserialisasi bersama state dict.
  • text_encoder_lora_adapter_metadata — Metadata adapter LoRA yang terkait dengan text encoder untuk diserialisasi bersama state dict.

Simpan parameter LoRA yang sesuai dengan UNet dan text encoder.

StableDiffusionXLInstructPix2PixPipeline

kelas diffusers.StableDiffusionXLInstructPix2PixPipeline

< >

( vae: AutoencoderKLtext_encoder: CLIPTextModeltext_encoder_2: CLIPTextModelWithProjectiontokenizer: CLIPTokenizertokenizer_2: CLIPTokenizerunet: UNet2DConditionModelscheduler: KarrasDiffusionSchedulersforce_zeros_for_empty_prompt: bool = Trueadd_watermarker: bool | None = Noneis_cosxl_edit: bool | None = False )

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 mendenois latens gambar yang telah dikodekan.
  • scheduler (SchedulerMixin) — Scheduler yang digunakan bersama dengan unet untuk menghilangkan noise pada latens gambar yang telah dikodekan. Bisa berupa salah satu dari 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 diset ke 0. Lihat juga konfigurasi stabilityai/stable-diffusion-xl-base-1-0.
  • add_watermarker (bool, opsional) — Apakah akan menggunakan invisible_watermark library untuk memberikan watermark pada gambar output. Jika tidak didefinisikan, nilainya akan default ke True jika paket tersebut terinstal, jika tidak, watermarker tidak akan digunakan.
  • is_cosxl_edit (bool, opsional) — Ketika diset, latens gambar akan diskalakan.

Pipeline untuk pengeditan gambar pada tingkat piksel dengan mengikuti instruksi teks. Berbasis 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__

< >

( prompt: str | list[str] = Noneprompt_2: str | list[str] | None = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 100denoising_end: float | None = Noneguidance_scale: float = 5.0image_guidance_scale: float = 1.5negative_prompt: str | list[str] | None = Nonenegative_prompt_2: str | list[str] | None = Nonenum_images_per_prompt: int | None = 1eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = Nonecallback_steps: int = 1cross_attention_kwargs: dict[str, typing.Any] | None = Noneguidance_rescale: float = 0.0original_size: tuple = Nonecrops_coords_top_left: tuple = (0, 0)target_size: tuple = None ) → ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput or tuple

Parameter

  • prompt (str atau list[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan prompt_embeds sebagai gantinya.
  • prompt_2 (str atau list[str], opsional) — Prompt atau prompt-prompt yang akan dikirim ke tokenizer_2 dan text_encoder_2. Jika tidak didefinisikan, prompt digunakan di kedua text-encoder
  • image (torch.Tensor atau PIL.Image.Image atau np.ndarray atau list[torch.Tensor] atau list[PIL.Image.Image] atau list[np.ndarray]) — Gambar yang akan dimodifikasi dengan pipeline.
  • 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.
  • num_inference_steps (int, opsional, default 50) — Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat.
  • 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 sesuai dengan timestep diskrit yang dipilih oleh scheduler. Parameter denoising_end sebaiknya digunakan ketika pipeline ini merupakan bagian dari setup multi-pipeline “Mixture of Denoisers”, seperti yang dijelaskan dalam Refining the Image Output
  • guidance_scale (float, opsional, default 5.0) — Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance. guidance_scale didefinisikan sebagai w dari persamaan 2. dari 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.
  • image_guidance_scale (float, opsional, default 1.5) — Skala panduan gambar mendorong gambar yang dihasilkan menuju gambar awal image. Skala panduan gambar diaktifkan dengan mengatur image_guidance_scale > 1. Skala panduan gambar yang lebih tinggi mendorong pembuatan gambar yang sangat terkait dengan gambar sumber image, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. Pipeline ini memerlukan nilai minimal 1.
  • negative_prompt (str atau list[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan negative_prompt_embeds sebagai gantinya. Diabaikan jika 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 digunakan untuk mengarahkan generasi gambar, yang akan 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) — 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 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 pembobotan 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) — Embedding teks pooled yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, mis. pembobotan prompt. Jika tidak disediakan, embedding teks pooled akan dibuat dari argumen input prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opsional) — Embedding teks negatif yang sudah digenerate sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan digenerate dari argumen input negative_prompt.
  • output_type (str, opsional, defaultnya "pil") — Format output dari generate image. Pilih antara PIL: PIL.Image.Image atau np.array.
  • return_dict (bool, opsional, default True) — Apakah akan mengembalikan ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput alih-alih tuple biasa.
  • callback (Callable, opsional) — Fungsi yang akan dipanggil setiap callback_steps langkah selama inferensi. Fungsi ini akan dipanggil dengan argumen berikut: callback(step: int, timestep: int, latents: torch.Tensor).
  • callback_steps (int, opsional, default 1) — Frekuensi pemanggilan fungsi callback. Jika tidak ditentukan, callback akan dipanggil di setiap langkah.
  • 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.
  • guidance_rescale (float, opsional, default 0.0) — Faktor rescale guidance yang diusulkan oleh Common Diffusion Noise Schedules and Sample Steps are Flawed guidance_scale didefinisikan sebagai φ dalam persamaan 16. dari Common Diffusion Noise Schedules and Sample Steps are Flawed. Faktor rescale guidance harus memperbaiki overexposure saat menggunakan zero terminal SNR.
  • original_size (tuple[int], opsional, default (1024, 1024)) — Jika original_size tidak sama dengan target_size, gambar akan tampak di-downsample atau di-upsample. original_size default ke (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, default (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 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 dijelaskan dalam bagian 2.2 dari https://huggingface.co/papers/2307.01952.

Mengembalikan

~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput atau tuple

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

Fungsi yang dipanggil saat memanggil pipeline untuk generasi.

Contoh:

>>> import torch
>>> from diffusers import StableDiffusionXLInstructPix2PixPipeline
>>> from diffusers.utils import load_image

>>> resolution = 768
>>> image = load_image(
...     "https://hf.co/datasets/diffusers/diffusers-images-docs/resolve/main/mountain.png"
... ).resize((resolution, resolution))
>>> edit_instruction = "Turn sky into a cloudy one"

>>> pipe = StableDiffusionXLInstructPix2PixPipeline.from_pretrained(
...     "diffusers/sdxl-instructpix2pix-768", torch_dtype=torch.float16
... ).to("cuda")

>>> edited_image = pipe(
...     prompt=edit_instruction,
...     image=image,
...     height=resolution,
...     width=resolution,
...     guidance_scale=3.0,
...     image_guidance_scale=1.5,
...     num_inference_steps=30,
... ).images[0]
>>> edited_image

encode_prompt

< >

( prompt: strprompt_2: str | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1do_classifier_free_guidance: bool = Truenegative_prompt: str | None = Nonenegative_prompt_2: str | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonepooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = Nonelora_scale: float | None = None )

Parameter

  • prompt (str atau list[str], opsional) — prompt yang akan dienkod
  • prompt_2 (str atau list[str], opsional) — Prompt atau prompt-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 digunakan untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskan negative_prompt_embeds sebagai gantinya. Diabaikan jika 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 digunakan untuk mengarahkan generasi gambar, yang akan 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 pembobotan 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) — Embedding teks pooled yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, mis. pembobotan prompt. Jika tidak disediakan, embedding teks pooled akan dibuat dari argumen input prompt.
  • negative_pooled_prompt_embeds (torch.Tensor, opsional) — Embedding teks negatif yang sudah digenerate sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan, pooled negative_prompt_embeds akan digenerate 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.

Mengkodekan prompt menjadi hidden states dari text encoder.

Update on GitHub