Buckets:
InstructPix2Pix
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 pada jalur maju dan tidak memerlukan penyesuaian halus per contoh atau inversi, model kami mengedit gambar dengan cepat, 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[[diffusers.StableDiffusionInstructPix2PixPipeline]]
diffusers.StableDiffusionInstructPix2PixPipeline[[diffusers.StableDiffusionInstructPix2PixPipeline]]
diffusers.StableDiffusionInstructPix2PixPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None, requires_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 beku (clip-vit-large-patch14).
tokenizer (CLIPTokenizer) : Sebuah CLIPTokenizer untuk melakukan tokenisasi teks.
unet (UNet2DConditionModel) : Sebuah UNet2DConditionModel untuk menghilangkan noise dari 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.
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) : Sebuah 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:
- load_textual_inversion() untuk memuat embedding textual inversion
- load_lora_weights() untuk memuat bobot LoRA
- save_lora_weights() untuk menyimpan bobot LoRA
- load_ip_adapter() untuk memuat IP Adapter
call[[diffusers.StableDiffusionInstructPix2PixPipeline.call]]
__call__(prompt: str | list[str] = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, num_inference_steps: int = 100, guidance_scale: float = 7.5, image_guidance_scale: float = 1.5, negative_prompt: 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, output_type: str | None = 'pil', return_dict: bool = True, 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'], cross_attention_kwargs: dict[str, typing.Any] | None = None, **kwargs)
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 lebih erat kaitannya 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 pembuatan gambar. Jika tidak didefinisikan, Anda perlu meneruskan 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) : Sebuah torch.Generator 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.
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.
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.
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, selain itu sebuah tuple dikembalikan di mana elemen pertama adalah daftar dengan 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[[diffusers.StableDiffusionInstructPix2PixPipeline.load_textual_inversion]]
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 = None, tokenizer: 'PreTrainedTokenizer' | None = None, text_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 salah satu di antaranya: - String, model id (misalnya sd-concepts-library/low-poly-hd-logos-icons) dari model pretrained yang dihosting di Hub. - Path ke directory (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) : Menimpa token yang digunakan untuk bobot inversi tekstual. Jika pretrained_model_name_or_path adalah daftar, maka token juga harus berupa daftar dengan panjang yang sama.
text_encoder (CLIPTextModel, opsional) : Text-encoder beku (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 dengan 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, defaultnya False) : Apakah akan memaksa (mengunduh ulang) bobot model dan file konfigurasi, menimpa versi yang di-cache jika ada.
proxies (dict[str, str], opsional) : Kamus server proxy yang akan 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, defaultnya 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, defaultnya "main") : Versi model spesifik yang akan digunakan. Bisa berupa nama branch, nama tag, id commit, atau identifikasi apa pun yang diizinkan oleh Git.
subfolder (str, opsional, defaultnya "") : Lokasi subfolder dari file model di dalam repositori model yang lebih besar di Hub atau secara lokal.
mirror (str, opsional) : Sumber cermin untuk menyelesaikan 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[[diffusers.StableDiffusionInstructPix2PixPipeline.load_lora_weights]]
load_lora_weights(pretrained_model_name_or_path_or_dict: str | dict[str, torch.Tensor], adapter_name: str | None = None, hotswap: 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) : Mempercepat 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 dari adapter baru. Hal ini bisa lebih cepat dan lebih efisien dalam penggunaan memori. Namun, keunggulan utama dari hotswapping adalah ketika model dikompilasi dengan torch.compile, pemuatan adapter baru tidak memerlukan kompilasi ulang model. Saat menggunakan hotswapping, adapter_name yang diberikan harus berupa nama dari adapter yang sudah dimuat. Jika adapter baru dan adapter lama memiliki rank dan/atau LoRA alphas (yaitu scaling) yang berbeda, Anda perlu memanggil metode tambahan sebelum memuat adapter: py pipeline = ... # load diffusers pipeline max_rank = ... # the highest rank among all LoRAs that you want to load # call *before* compiling and loading the LoRA adapter pipeline.enable_lora_hotswap(target_rank=max_rank) pipeline.load_lora_weights(file_name) # optionally compile the model now Perhatikan bahwa hotswapping adapter untuk text encoder belum didukung. Ada beberapa keterbatasan lain untuk teknik ini, yang didokumentasikan di sini: https://huggingface.co/docs/peft/main/en/package_reference/hotswap
kwargs (dict, opsional) : Lihat lora_state_dict().
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[[diffusers.StableDiffusionInstructPix2PixPipeline.save_lora_weights]]
save_lora_weights(save_directory: str | os.PathLike, unet_lora_layers: dict[str, typing.Union[torch.nn.Module, torch.Tensor]] = None, text_encoder_lora_layers: dict[str, torch.nn.Module] = None, is_main_process: bool = True, weight_name: str = None, save_function: typing.Callable = None, safe_serialization: bool = True, unet_lora_adapter_metadata = None, text_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 untuk text encoder karena berasal dari 🤗 Transformers.
is_main_process (bool, opsional, defaultnya 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, atur 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, defaultnya 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[[diffusers.StableDiffusionXLInstructPix2PixPipeline]]
diffusers.StableDiffusionXLInstructPix2PixPipeline[[diffusers.StableDiffusionXLInstructPix2PixPipeline]]
diffusers.StableDiffusionXLInstructPix2PixPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None, is_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 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.
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.
is_cosxl_edit (bool, opsional) : Jika 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:
- load_textual_inversion() untuk memuat embedding textual inversion
- untuk memuat file
.ckptdengan from_single_file() - load_lora_weights() untuk memuat bobot LoRA
- save_lora_weights() untuk menyimpan bobot LoRA
call[[diffusers.StableDiffusionXLInstructPix2PixPipeline.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 = 100, denoising_end: float | None = None, guidance_scale: float = 5.0, image_guidance_scale: float = 1.5, 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, output_type: str | None = 'pil', return_dict: bool = True, callback: typing.Optional[typing.Callable[[int, int, torch.Tensor], NoneType]] = None, callback_steps: int = 1, cross_attention_kwargs: dict[str, typing.Any] | None = None, 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)
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 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, defaultnya 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, 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) : 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.
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 penghasilkan 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 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.
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 ~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, 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.
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[[diffusers.StableDiffusionXLInstructPix2PixPipeline.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)
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.
Mengkodekan prompt menjadi hidden states dari text encoder.
Xet Storage Details
- Size:
- 43.7 kB
- Xet hash:
- d67322ecb83f57c5e65a61e5e8f041ba192628899c1aa8354251f29efb6cb953
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.