Buckets:

mishig's picture
|
download
raw
108 kB
# # Berlisensi di bawah Apache License, Versi 2.0 ("Lisensi"); # Anda mungkin tidak dapat menggunakan file ini kecuali sesuai dengan Lisensi. # Anda dapat memperoleh salinan Lisensi di # # http://www.apache.org/licenses/LICENSE-2.0 # # Kecuali diwajibkan oleh hukum yang berlaku atau disepakati secara tertulis, perangkat lunak # distribusikan di bawah Lisensi berdasarkan basis "SEBAGAIMANA ADANYA", # TANPA JAMINAN ATAU SYARAT DALAM BENTUK APAPUN, baik yang dinyatakan maupun yang tersirat. # Lihat Lisensi untuk bahasa tertentu yang mengatur izin dan # batasan di bawah Lisensi. --> # QwenImage Qwen-Image dari tim Qwen adalah model dasar generasi gambar dalam seri Qwen yang mencapai kemajuan signifikan dalam render teks kompleks dan pengeditan gambar yang presisi. Eksperimen menunjukkan kemampuan umum yang kuat dalam generasi dan pengeditan gambar, dengan kinerja luar biasa dalam render teks, terutama untuk bahasa Mandarin. Qwen-Image hadir dalam varian berikut: | tipe model | id model | |:----------:|:--------:| | Qwen-Image | [`Qwen/Qwen-Image`](https://huggingface.co/Qwen/Qwen-Image) | | Qwen-Image-Edit | [`Qwen/Qwen-Image-Edit`](https://huggingface.co/Qwen/Qwen-Image-Edit) | | Qwen-Image-Edit Plus | [Qwen/Qwen-Image-Edit-2509](https://huggingface.co/Qwen/Qwen-Image-Edit-2509) | > [!TIP] > Lihat panduan [Caching](../../optimization/cache) untuk mempercepat inferensi dengan menyimpan dan menggunakan kembali output antara. ## LoRA untuk inferensi yang lebih cepat Gunakan LoRA dari `lightx2v/Qwen-Image-Lightning` untuk mempercepat inferensi dengan mengurangi jumlah langkah. Lihat cuplikan kode di bawah: Kode ```py from diffusers import DiffusionPipeline, FlowMatchEulerDiscreteScheduler import torch import math ckpt_id = "Qwen/Qwen-Image" # From # https://github.com/ModelTC/Qwen-Image-Lightning/blob/342260e8f5468d2f24d084ce04f55e101007118b/generate_with_diffusers.py#L82C9-L97C10 scheduler_config = { "base_image_seq_len": 256, "base_shift": math.log(3), # We use shift=3 in distillation "invert_sigmas": False, "max_image_seq_len": 8192, "max_shift": math.log(3), # We use shift=3 in distillation "num_train_timesteps": 1000, "shift": 1.0, "shift_terminal": None, # set shift_terminal to None "stochastic_sampling": False, "time_shift_type": "exponential", "use_beta_sigmas": False, "use_dynamic_shifting": True, "use_exponential_sigmas": False, "use_karras_sigmas": False, } scheduler = FlowMatchEulerDiscreteScheduler.from_config(scheduler_config) pipe = DiffusionPipeline.from_pretrained( ckpt_id, scheduler=scheduler, dtype=torch.bfloat16 ).to("cuda") # or "mps", "xpu", "cpu" pipe.load_lora_weights( "lightx2v/Qwen-Image-Lightning", weight_name="Qwen-Image-Lightning-8steps-V1.0.safetensors" ) prompt = "a tiny astronaut hatching from an egg on the moon, Ultra HD, 4K, cinematic composition." negative_prompt = " " image = pipe( prompt=prompt, negative_prompt=negative_prompt, width=1024, height=1024, num_inference_steps=8, true_cfg_scale=1.0, generator=torch.manual_seed(0), ).images[0] image.save("qwen_fewsteps.png") ``` > [!TIP] > Parameter `guidance_scale` dalam pipeline ada untuk mendukung model guidance-distilled di masa depan ketika model tersebut tersedia. Perhatikan bahwa meneruskan `guidance_scale` ke pipeline tidak efektif. Untuk mengaktifkan classifier-free guidance, silakan teruskan `true_cfg_scale` dan `negative_prompt` (bahkan negative prompt kosong seperti " ") untuk mengaktifkan komputasi classifier-free guidance. ## Referensi multi-gambar dengan QwenImageEditPlusPipeline Dengan [QwenImageEditPlusPipeline](/docs/diffusers/main/id/api/pipelines/qwenimage#diffusers.QwenImageEditPlusPipeline), pengguna dapat menyediakan beberapa gambar sebagai referensi input. ```py import torch from PIL import Image from diffusers import QwenImageEditPlusPipeline from diffusers.utils import load_image pipe = QwenImageEditPlusPipeline.from_pretrained( "Qwen/Qwen-Image-Edit-2509", dtype=torch.bfloat16 ).to("cuda") # or "mps", "xpu", "cpu" image_1 = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/grumpy.jpg") image_2 = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/peng.png") image = pipe( image=[image_1, image_2], prompt='''put the penguin and the cat at a game show called "Qwen Edit Plus Games"''', num_inference_steps=50 ).images[0] ``` ## Kinerja ### torch.compile Menggunakan `torch.compile` pada transformer memberikan percepatan ~2,4x (A100 80GB: 4,70s → 1,93s): ```python import torch from diffusers import QwenImagePipeline pipe = QwenImagePipeline.from_pretrained("Qwen/Qwen-Image", dtype=torch.bfloat16).to("cuda") # or "mps", "xpu", "cpu" pipe.transformer = torch.compile(pipe.transformer) # First call triggers compilation (~7s overhead) # Subsequent calls run at ~2.4x faster image = pipe("a cat", num_inference_steps=50).images[0] ``` ### Inferensi Berbatch dengan Prompt Berpanjang Variabel Saat menggunakan classifier-free guidance (CFG) dengan prompt yang panjangnya berbeda, pipeline menangani padding dengan benar melalui attention masking. Hal ini memastikan token padding tidak memengaruhi output yang dihasilkan. ```python # CFG with different prompt lengths works correctly image = pipe( prompt="A cat", negative_prompt="blurry, low quality, distorted", true_cfg_scale=3.5, num_inference_steps=50, ).images[0] ``` Untuk skrip dan hasil benchmark yang lebih rinci, lihat [gist ini](https://gist.github.com/cdutr/bea337e4680268168550292d7819dc2f). ## QwenImagePipeline[[diffusers.QwenImagePipeline]] #### diffusers.QwenImagePipeline[[diffusers.QwenImagePipeline]] ```python diffusers.QwenImagePipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLQwenImage, text_encoder: Qwen2_5_VLForConditionalGeneration, tokenizer: Qwen2Tokenizer, transformer: QwenImageTransformer2DModel) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage.py#L132) **Parameter:** transformer ([QwenImageTransformer2DModel](/docs/diffusers/main/id/api/models/qwenimage_transformer2d#diffusers.QwenImageTransformer2DModel)) : Arsitektur Conditional Transformer (MMDiT) untuk mendenoise latens gambar yang telah dikodekan. scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/id/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : Penjadwal yang digunakan bersama `transformer` untuk menghilangkan noise pada latens gambar yang telah dikodekan. vae ([AutoencoderKL](/docs/diffusers/main/id/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten. text_encoder (`Qwen2.5-VL-7B-Instruct`) : [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct), khususnya varian [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct). tokenizer (`Qwen2Tokenizer`) : Tokenizer dari kelas https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer Pipeline QwenImage untuk generasi teks-ke-gambar. #### __call__[[diffusers.QwenImagePipeline.__call__]] ```python __call__(prompt: str | list[str] = None, negative_prompt: str | list[str] = None, true_cfg_scale: float = 4.0, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, sigmas: list[float] | None = None, guidance_scale: float | None = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage.py#L408) **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. 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 `true_cfg_scale` tidak lebih besar dari `1`). true_cfg_scale (`float`, *opsional*, default 1.0) : Skala panduan seperti yang didefinisikan dalam [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `true_cfg_scale` didefinisikan sebagai `w` dari persamaan 2. pada [Imagen Paper](https://huggingface.co/papers/2205.11487). Classifier-free guidance diaktifkan dengan mengatur `true_cfg_scale > 1` dan menyediakan `negative_prompt`. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan `prompt` teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. height (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Tinggi gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. width (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. 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. 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. guidance_scale (`float`, *opsional*, defaultnya None) : Nilai skala panduan untuk model yang telah melalui distilasi panduan. Berbeda dengan panduan bebas-klasifikator tradisional di mana skala panduan diterapkan selama inferensi melalui penskalaan ulang prediksi noise, model yang telah melalui distilasi panduan mengambil skala panduan secara langsung sebagai parameter input selama langkah maju. 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. Parameter ini dalam pipeline ada untuk mendukung model distilasi panduan di masa depan ketika mereka muncul. Parameter ini diabaikan ketika tidak menggunakan model distilasi panduan. Untuk mengaktifkan panduan bebas-klasifikator tradisional, silakan lewati `true_cfg_scale > 1.0` dan `negative_prompt` (bahkan prompt negatif kosong seperti " " harus mengaktifkan komputasi panduan bebas-klasifikator). num_images_per_prompt (`int`, *opsional*, default 1) : Jumlah gambar yang akan dihasilkan per prompt. generator (`torch.Generator` atau `list[torch.Generator]`, *opsional*) : Satu atau daftar [generator torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) 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`. prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `prompt_embeds`. 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`. negative_prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `negative_prompt_embeds`. output_type (`str`, *opsional*, defaultnya `"pil"`) : Format output dari gambar yang dihasilkan. Pilih antara [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` atau `np.array`. return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan `~pipelines.qwenimage.QwenImagePipelineOutput` alih-alih tuple biasa. 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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). callback_on_step_end (`Callable`, *opsional*) : Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_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. max_sequence_length (`int` defaultnya 512) : Panjang maksimum sekuens yang digunakan dengan `prompt`. **Mengembalikan:** `~pipelines.qwenimage.QwenImagePipelineOutput` atau `tuple` `~pipelines.qwenimage.QwenImagePipelineOutput` 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: ```py >>> import torch >>> from diffusers import QwenImagePipeline >>> pipe = QwenImagePipeline.from_pretrained("Qwen/Qwen-Image", torch_dtype=torch.bfloat16) >>> pipe.to("cuda") >>> prompt = "A cat holding a sign that says hello world" >>> # Depending on the variant being used, the pipeline call will slightly vary. >>> # Refer to the pipeline documentation for more details. >>> image = pipe(prompt, num_inference_steps=50).images[0] >>> image.save("qwenimage.png") ``` #### encode_prompt[[diffusers.QwenImagePipeline.encode_prompt]] ```python encode_prompt(prompt: str | list[str], device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 1024) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage.py#L225) **Parameter:** prompt (`str` atau `list[str]`, *opsional*) : prompt yang akan dienkod device : (`torch.device`): perangkat torch num_images_per_prompt (`int`) : jumlah gambar yang harus dihasilkan per prompt 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`. ## QwenImageImg2ImgPipeline[[diffusers.QwenImageImg2ImgPipeline]] #### diffusers.QwenImageImg2ImgPipeline[[diffusers.QwenImageImg2ImgPipeline]] ```python diffusers.QwenImageImg2ImgPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLQwenImage, text_encoder: Qwen2_5_VLForConditionalGeneration, tokenizer: Qwen2Tokenizer, transformer: QwenImageTransformer2DModel) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_img2img.py#L134) **Parameter:** transformer ([QwenImageTransformer2DModel](/docs/diffusers/main/id/api/models/qwenimage_transformer2d#diffusers.QwenImageTransformer2DModel)) : Arsitektur Conditional Transformer (MMDiT) untuk mendenoise latens gambar yang telah dikodekan. scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/id/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : Penjadwal yang digunakan bersama `transformer` untuk menghilangkan noise pada latens gambar yang telah dikodekan. vae ([AutoencoderKL](/docs/diffusers/main/id/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten. text_encoder (`Qwen2.5-VL-7B-Instruct`) : [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct), khususnya varian [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct). tokenizer (`Qwen2Tokenizer`) : Tokenizer dari kelas https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer Pipeline QwenImage untuk generasi teks-ke-gambar. #### __call__[[diffusers.QwenImageImg2ImgPipeline.__call__]] ```python __call__(prompt: str | list[str] = None, negative_prompt: str | list[str] = None, true_cfg_scale: float = 4.0, 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.6, num_inference_steps: int = 50, sigmas: list[float] | None = None, guidance_scale: float | None = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_img2img.py#L482) **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. 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 `true_cfg_scale` tidak lebih besar dari `1`). image (`torch.Tensor`, `PIL.Image.Image`, `np.ndarray`, `list[torch.Tensor]`, `list[PIL.Image.Image]`, atau `list[np.ndarray]`) : `Image`, array numpy, atau tensor yang merepresentasikan batch gambar untuk digunakan sebagai titik awal. Untuk array numpy dan tensor pytorch, rentang nilai yang diharapkan adalah antara `[0, 1]` Jika berupa tensor atau daftar tensor, bentuk (shape) yang diharapkan adalah `(B, C, H, W)` atau `(C, H, W)`. Jika berupa array numpy atau daftar array, bentuk yang diharapkan adalah `(B, H, W, C)` atau `(H, W, C)` Parameter ini juga dapat menerima latents gambar sebagai `image`, namun jika latents dilewatkan secara langsung, latents tersebut tidak akan di-encode ulang. true_cfg_scale (`float`, *opsional*, default 1.0) : Skala panduan seperti yang didefinisikan dalam [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `true_cfg_scale` didefinisikan sebagai `w` dari persamaan 2. pada [Imagen Paper](https://huggingface.co/papers/2205.11487). Classifier-free guidance diaktifkan dengan mengatur `true_cfg_scale > 1` dan menyediakan `negative_prompt`. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan `prompt` teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. height (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Tinggi gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. width (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. strength (`float`, *opsional*, default 1.0) : Menunjukkan sejauh mana transformasi dilakukan pada `image` referensi. 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. 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. guidance_scale (`float`, *opsional*, defaultnya None) : Nilai skala panduan untuk model yang telah melalui distilasi panduan. Berbeda dengan panduan bebas-klasifikator tradisional di mana skala panduan diterapkan selama inferensi melalui penskalaan ulang prediksi noise, model yang telah melalui distilasi panduan mengambil skala panduan secara langsung sebagai parameter input selama langkah maju. 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. Parameter ini dalam pipeline ada untuk mendukung model distilasi panduan di masa depan ketika mereka muncul. Parameter ini diabaikan ketika tidak menggunakan model distilasi panduan. Untuk mengaktifkan panduan bebas-klasifikator tradisional, silakan lewati `true_cfg_scale > 1.0` dan `negative_prompt` (bahkan prompt negatif kosong seperti " " harus mengaktifkan komputasi panduan bebas-klasifikator). num_images_per_prompt (`int`, *opsional*, default 1) : Jumlah gambar yang akan dihasilkan per prompt. generator (`torch.Generator` atau `list[torch.Generator]`, *opsional*) : Satu atau daftar [generator torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) 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`. prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `prompt_embeds`. 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`. negative_prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `negative_prompt_embeds`. output_type (`str`, *opsional*, defaultnya `"pil"`) : Format output dari gambar yang dihasilkan. Pilih antara [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` atau `np.array`. return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan `~pipelines.qwenimage.QwenImagePipelineOutput` alih-alih tuple biasa. 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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). callback_on_step_end (`Callable`, *opsional*) : Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_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. max_sequence_length (`int` defaultnya 512) : Panjang maksimum sekuens yang digunakan dengan `prompt`. **Mengembalikan:** `~pipelines.qwenimage.QwenImagePipelineOutput` atau `tuple` `~pipelines.qwenimage.QwenImagePipelineOutput` 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: ```py >>> import torch >>> from diffusers import QwenImageImg2ImgPipeline >>> from diffusers.utils import load_image >>> pipe = QwenImageImg2ImgPipeline.from_pretrained("Qwen/Qwen-Image", torch_dtype=torch.bfloat16) >>> pipe = pipe.to("cuda") >>> url = "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg" >>> init_image = load_image(url).resize((1024, 1024)) >>> prompt = "cat wizard, gandalf, lord of the rings, detailed, fantasy, cute, adorable, Pixar, Disney" >>> images = pipe(prompt=prompt, negative_prompt=" ", image=init_image, strength=0.95).images[0] >>> images.save("qwenimage_img2img.png") ``` #### encode_prompt[[diffusers.QwenImageImg2ImgPipeline.encode_prompt]] ```python encode_prompt(prompt: str | list[str], device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 1024) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_img2img.py#L268) **Parameter:** prompt (`str` atau `list[str]`, *opsional*) : prompt yang akan dienkod device : (`torch.device`): perangkat torch num_images_per_prompt (`int`) : jumlah gambar yang harus dihasilkan per prompt 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`. ## QwenImageInpaintPipeline[[diffusers.QwenImageInpaintPipeline]] #### diffusers.QwenImageInpaintPipeline[[diffusers.QwenImageInpaintPipeline]] ```python diffusers.QwenImageInpaintPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLQwenImage, text_encoder: Qwen2_5_VLForConditionalGeneration, tokenizer: Qwen2Tokenizer, transformer: QwenImageTransformer2DModel) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_inpaint.py#L137) **Parameter:** transformer ([QwenImageTransformer2DModel](/docs/diffusers/main/id/api/models/qwenimage_transformer2d#diffusers.QwenImageTransformer2DModel)) : Arsitektur Conditional Transformer (MMDiT) untuk mendenoise latens gambar yang telah dikodekan. scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/id/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : Penjadwal yang digunakan bersama `transformer` untuk menghilangkan noise pada latens gambar yang telah dikodekan. vae ([AutoencoderKL](/docs/diffusers/main/id/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten. text_encoder (`Qwen2.5-VL-7B-Instruct`) : [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct), khususnya varian [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct). tokenizer (`Qwen2Tokenizer`) : Tokenizer dari kelas https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer Pipeline QwenImage untuk generasi teks-ke-gambar. #### __call__[[diffusers.QwenImageInpaintPipeline.__call__]] ```python __call__(prompt: str | list[str] = None, negative_prompt: str | list[str] = None, true_cfg_scale: float = 4.0, 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, masked_image_latents: 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.6, num_inference_steps: int = 50, sigmas: list[float] | None = None, guidance_scale: float | None = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_inpaint.py#L592) **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. 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 `true_cfg_scale` tidak lebih besar dari `1`). image (`torch.Tensor`, `PIL.Image.Image`, `np.ndarray`, `list[torch.Tensor]`, `list[PIL.Image.Image]`, atau `list[np.ndarray]`) : `Image`, array numpy, atau tensor yang merepresentasikan batch gambar untuk digunakan sebagai titik awal. Untuk array numpy dan tensor pytorch, rentang nilai yang diharapkan adalah antara `[0, 1]` Jika berupa tensor atau daftar tensor, bentuk (shape) yang diharapkan adalah `(B, C, H, W)` atau `(C, H, W)`. Jika berupa array numpy atau daftar array, bentuk yang diharapkan adalah `(B, H, W, C)` atau `(H, W, C)` Parameter ini juga dapat menerima latents gambar sebagai `image`, namun jika latents dilewatkan secara langsung, latents tersebut tidak akan di-encode ulang. true_cfg_scale (`float`, *opsional*, default 1.0) : Skala panduan seperti yang didefinisikan dalam [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `true_cfg_scale` didefinisikan sebagai `w` dari persamaan 2. pada [Imagen Paper](https://huggingface.co/papers/2205.11487). Classifier-free guidance diaktifkan dengan mengatur `true_cfg_scale > 1` dan menyediakan `negative_prompt`. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan `prompt` teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. mask_image (`torch.Tensor`, `PIL.Image.Image`, `np.ndarray`, `list[torch.Tensor]`, `list[PIL.Image.Image]`, atau `list[np.ndarray]`) : `Image`, array numpy, atau tensor yang merepresentasikan batch gambar untuk memasker `image`. Piksel putih pada mask akan diwarnai ulang, sedangkan piksel hitam dipertahankan. Jika `mask_image` adalah gambar PIL, gambar tersebut dikonversi menjadi satu saluran (luminance) sebelum digunakan. Jika berupa array numpy atau tensor pytorch, array/tensor tersebut harus berisi satu saluran warna (L) alih-alih 3, sehingga bentuk yang diharapkan untuk tensor pytorch adalah `(B, 1, H, W)`, `(B, H, W)`, `(1, H, W)`, atau `(H, W)`. Dan untuk array numpy, bentuknya adalah `(B, H, W, 1)`, `(B, H, W)`, `(H, W, 1)`, atau `(H, W)`. masked_image_latents (`torch.Tensor`, `list[torch.Tensor]`) : `Tensor` yang merepresentasikan batch gambar untuk memasker `image` yang dihasilkan oleh VAE. Jika tidak disediakan, tensor latens mask akan dihasilkan oleh `mask_image`. height (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Tinggi gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. width (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. 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 1.0) : Menunjukkan sejauh mana transformasi dilakukan pada `image` referensi. 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. 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. guidance_scale (`float`, *opsional*, defaultnya None) : Nilai skala panduan untuk model yang telah melalui distilasi panduan. Berbeda dengan panduan bebas-klasifikator tradisional di mana skala panduan diterapkan selama inferensi melalui penskalaan ulang prediksi noise, model yang telah melalui distilasi panduan mengambil skala panduan secara langsung sebagai parameter input selama langkah maju. 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. Parameter ini dalam pipeline ada untuk mendukung model distilasi panduan di masa depan ketika mereka muncul. Parameter ini diabaikan ketika tidak menggunakan model distilasi panduan. Untuk mengaktifkan panduan bebas-klasifikator tradisional, silakan lewati `true_cfg_scale > 1.0` dan `negative_prompt` (bahkan prompt negatif kosong seperti " " harus mengaktifkan komputasi panduan bebas-klasifikator). num_images_per_prompt (`int`, *opsional*, default 1) : Jumlah gambar yang akan dihasilkan per prompt. generator (`torch.Generator` atau `list[torch.Generator]`, *opsional*) : Satu atau daftar [generator torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) 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`. prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `prompt_embeds`. 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`. negative_prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `negative_prompt_embeds`. output_type (`str`, *opsional*, defaultnya `"pil"`) : Format output dari gambar yang dihasilkan. Pilih antara [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` atau `np.array`. return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan `~pipelines.qwenimage.QwenImagePipelineOutput` alih-alih tuple biasa. 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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). callback_on_step_end (`Callable`, *opsional*) : Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_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. max_sequence_length (`int` defaultnya 512) : Panjang maksimum sekuens yang digunakan dengan `prompt`. **Mengembalikan:** `~pipelines.qwenimage.QwenImagePipelineOutput` atau `tuple` `~pipelines.qwenimage.QwenImagePipelineOutput` 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: ```py >>> import torch >>> from diffusers import QwenImageInpaintPipeline >>> from diffusers.utils import load_image >>> pipe = QwenImageInpaintPipeline.from_pretrained("Qwen/Qwen-Image", torch_dtype=torch.bfloat16) >>> pipe.to("cuda") >>> prompt = "Face of a yellow cat, high resolution, sitting on a park bench" >>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png" >>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png" >>> source = load_image(img_url) >>> mask = load_image(mask_url) >>> image = pipe(prompt=prompt, negative_prompt=" ", image=source, mask_image=mask, strength=0.85).images[0] >>> image.save("qwenimage_inpainting.png") ``` #### encode_prompt[[diffusers.QwenImageInpaintPipeline.encode_prompt]] ```python encode_prompt(prompt: str | list[str], device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 1024) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_inpaint.py#L279) **Parameter:** prompt (`str` atau `list[str]`, *opsional*) : prompt yang akan dienkod device : (`torch.device`): perangkat torch num_images_per_prompt (`int`) : jumlah gambar yang harus dihasilkan per prompt 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`. ## QwenImageEditPipeline[[diffusers.QwenImageEditPipeline]] #### diffusers.QwenImageEditPipeline[[diffusers.QwenImageEditPipeline]] ```python diffusers.QwenImageEditPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLQwenImage, text_encoder: Qwen2_5_VLForConditionalGeneration, tokenizer: Qwen2Tokenizer, processor: Qwen2VLProcessor, transformer: QwenImageTransformer2DModel) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_edit.py#L165) **Parameter:** transformer ([QwenImageTransformer2DModel](/docs/diffusers/main/id/api/models/qwenimage_transformer2d#diffusers.QwenImageTransformer2DModel)) : Arsitektur Conditional Transformer (MMDiT) untuk mendenoise latens gambar yang telah dikodekan. scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/id/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : Penjadwal yang digunakan bersama `transformer` untuk menghilangkan noise pada latens gambar yang telah dikodekan. vae ([AutoencoderKL](/docs/diffusers/main/id/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten. text_encoder (`Qwen2.5-VL-7B-Instruct`) : [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct), khususnya varian [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct). tokenizer (`Qwen2Tokenizer`) : Tokenizer dari kelas https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer Pipeline Qwen-Image-Edit untuk pengeditan gambar. #### __call__[[diffusers.QwenImageEditPipeline.__call__]] ```python __call__(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, prompt: str | list[str] = None, negative_prompt: str | list[str] = None, true_cfg_scale: float = 4.0, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, sigmas: list[float] | None = None, guidance_scale: float | None = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_edit.py#L504) **Parameter:** image (`torch.Tensor`, `PIL.Image.Image`, `np.ndarray`, `list[torch.Tensor]`, `list[PIL.Image.Image]`, atau `list[np.ndarray]`) : `Image`, array numpy, atau tensor yang merepresentasikan batch gambar untuk digunakan sebagai titik awal. Untuk array numpy dan tensor pytorch, rentang nilai yang diharapkan adalah antara `[0, 1]` Jika berupa tensor atau daftar tensor, bentuk (shape) yang diharapkan adalah `(B, C, H, W)` atau `(C, H, W)`. Jika berupa array numpy atau daftar array, bentuk yang diharapkan adalah `(B, H, W, C)` atau `(H, W, C)` Parameter ini juga dapat menerima latents gambar sebagai `image`, namun jika latents dilewatkan secara langsung, latents tersebut tidak akan di-encode ulang. prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus melewatkan `prompt_embeds` sebagai gantinya. 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 `true_cfg_scale` tidak lebih besar dari `1`). true_cfg_scale (`float`, *opsional*, default 1.0) : true_cfg_scale (`float`, *opsional*, default 1.0): Skala panduan seperti yang didefinisikan dalam [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `true_cfg_scale` didefinisikan sebagai `w` dari persamaan 2. pada [Imagen Paper](https://huggingface.co/papers/2205.11487). Panduan bebas klasifikator diaktifkan dengan mengatur `true_cfg_scale > 1` dan menyediakan `negative_prompt`. Skala panduan yang lebih tinggi mendorong penggenerasian gambar yang sangat terkait dengan `prompt` teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. height (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Tinggi gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. width (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. 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. 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. guidance_scale (`float`, *opsional*, defaultnya None) : Nilai skala panduan untuk model yang telah melalui distilasi panduan. Berbeda dengan panduan bebas-klasifikator tradisional di mana skala panduan diterapkan selama inferensi melalui penskalaan ulang prediksi noise, model yang telah melalui distilasi panduan mengambil skala panduan secara langsung sebagai parameter input selama langkah maju. 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. Parameter ini dalam pipeline ada untuk mendukung model distilasi panduan di masa depan ketika mereka muncul. Parameter ini diabaikan ketika tidak menggunakan model distilasi panduan. Untuk mengaktifkan panduan bebas-klasifikator tradisional, silakan lewati `true_cfg_scale > 1.0` dan `negative_prompt` (bahkan prompt negatif kosong seperti " " harus mengaktifkan komputasi panduan bebas-klasifikator). num_images_per_prompt (`int`, *opsional*, default 1) : Jumlah gambar yang akan dihasilkan per prompt. generator (`torch.Generator` atau `list[torch.Generator]`, *opsional*) : Satu atau daftar [generator torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) 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`. prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `prompt_embeds`. 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`. negative_prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `negative_prompt_embeds`. output_type (`str`, *opsional*, defaultnya `"pil"`) : Format output dari gambar yang dihasilkan. Pilih antara [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` atau `np.array`. return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan `~pipelines.qwenimage.QwenImagePipelineOutput` alih-alih tuple biasa. 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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). callback_on_step_end (`Callable`, *opsional*) : Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_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. max_sequence_length (`int` defaultnya 512) : Panjang maksimum sekuens yang digunakan dengan `prompt`. **Mengembalikan:** `~pipelines.qwenimage.QwenImagePipelineOutput` atau `tuple` `~pipelines.qwenimage.QwenImagePipelineOutput` 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: ```py >>> import torch >>> from PIL import Image >>> from diffusers import QwenImageEditPipeline >>> from diffusers.utils import load_image >>> pipe = QwenImageEditPipeline.from_pretrained("Qwen/Qwen-Image-Edit", torch_dtype=torch.bfloat16) >>> pipe.to("cuda") >>> image = load_image( ... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png" ... ).convert("RGB") >>> prompt = ( ... "Make Pikachu hold a sign that says 'Qwen Edit is awesome', yarn art style, detailed, vibrant colors" ... ) >>> # Depending on the variant being used, the pipeline call will slightly vary. >>> # Refer to the pipeline documentation for more details. >>> image = pipe(image, prompt, num_inference_steps=50).images[0] >>> image.save("qwenimage_edit.png") ``` #### encode_prompt[[diffusers.QwenImageEditPipeline.encode_prompt]] ```python encode_prompt(prompt: str | list[str], image: typing.Optional[torch.Tensor] = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 1024) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_edit.py#L272) **Parameter:** prompt (`str` atau `list[str]`, *opsional*) : prompt yang akan dienkod image (`torch.Tensor`, *opsional*) : gambar yang akan dikodekan device : (`torch.device`): perangkat torch num_images_per_prompt (`int`) : jumlah gambar yang harus dihasilkan per prompt 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`. ## QwenImageEditInpaintPipeline[[diffusers.QwenImageEditInpaintPipeline]] #### diffusers.QwenImageEditInpaintPipeline[[diffusers.QwenImageEditInpaintPipeline]] ```python diffusers.QwenImageEditInpaintPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLQwenImage, text_encoder: Qwen2_5_VLForConditionalGeneration, tokenizer: Qwen2Tokenizer, processor: Qwen2VLProcessor, transformer: QwenImageTransformer2DModel) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_edit_inpaint.py#L167) **Parameter:** transformer ([QwenImageTransformer2DModel](/docs/diffusers/main/id/api/models/qwenimage_transformer2d#diffusers.QwenImageTransformer2DModel)) : Arsitektur Conditional Transformer (MMDiT) untuk mendenoise latens gambar yang telah dikodekan. scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/id/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : Penjadwal yang digunakan bersama `transformer` untuk menghilangkan noise pada latens gambar yang telah dikodekan. vae ([AutoencoderKL](/docs/diffusers/main/id/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten. text_encoder (`Qwen2.5-VL-7B-Instruct`) : [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct), khususnya varian [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct). tokenizer (`Qwen2Tokenizer`) : Tokenizer dari kelas https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer Pipeline Qwen-Image-Edit untuk pengeditan gambar. #### __call__[[diffusers.QwenImageEditInpaintPipeline.__call__]] ```python __call__(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, prompt: str | list[str] = None, negative_prompt: str | list[str] = None, mask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, masked_image_latents: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, true_cfg_scale: float = 4.0, height: int | None = None, width: int | None = None, padding_mask_crop: int | None = None, strength: float = 0.6, num_inference_steps: int = 50, sigmas: list[float] | None = None, guidance_scale: float | None = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_edit_inpaint.py#L637) **Parameter:** image (`torch.Tensor`, `PIL.Image.Image`, `np.ndarray`, `list[torch.Tensor]`, `list[PIL.Image.Image]`, atau `list[np.ndarray]`) : `Image`, array numpy, atau tensor yang merepresentasikan batch gambar untuk digunakan sebagai titik awal. Untuk array numpy dan tensor pytorch, rentang nilai yang diharapkan adalah antara `[0, 1]` Jika berupa tensor atau daftar tensor, bentuk (shape) yang diharapkan adalah `(B, C, H, W)` atau `(C, H, W)`. Jika berupa array numpy atau daftar array, bentuk yang diharapkan adalah `(B, H, W, C)` atau `(H, W, C)` Parameter ini juga dapat menerima latents gambar sebagai `image`, namun jika latents dilewatkan secara langsung, latents tersebut tidak akan di-encode ulang. prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus melewatkan `prompt_embeds` sebagai gantinya. 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 `true_cfg_scale` tidak lebih besar dari `1`). true_cfg_scale (`float`, *opsional*, default 1.0) : true_cfg_scale (`float`, *opsional*, default 1.0): Skala panduan seperti yang didefinisikan dalam [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `true_cfg_scale` didefinisikan sebagai `w` dari persamaan 2. pada [Imagen Paper](https://huggingface.co/papers/2205.11487). Panduan bebas klasifikator diaktifkan dengan mengatur `true_cfg_scale > 1` dan menyediakan `negative_prompt`. Skala panduan yang lebih tinggi mendorong penggenerasian gambar yang sangat terkait dengan `prompt` teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. mask_image (`torch.Tensor`, `PIL.Image.Image`, `np.ndarray`, `list[torch.Tensor]`, `list[PIL.Image.Image]`, atau `list[np.ndarray]`) : `Image`, array numpy, atau tensor yang merepresentasikan batch gambar untuk memasker `image`. Piksel putih pada mask akan diwarnai ulang, sedangkan piksel hitam dipertahankan. Jika `mask_image` adalah gambar PIL, gambar tersebut dikonversi menjadi satu saluran (luminance) sebelum digunakan. Jika berupa array numpy atau tensor pytorch, array/tensor tersebut harus berisi satu saluran warna (L) alih-alih 3, sehingga bentuk yang diharapkan untuk tensor pytorch adalah `(B, 1, H, W)`, `(B, H, W)`, `(1, H, W)`, atau `(H, W)`. Dan untuk array numpy, bentuknya adalah `(B, H, W, 1)`, `(B, H, W)`, `(H, W, 1)`, atau `(H, W)`. masked_image_latents (`torch.Tensor`, `list[torch.Tensor]`) : `Tensor` yang merepresentasikan batch gambar untuk memasker `image` yang dihasilkan oleh VAE. Jika tidak disediakan, tensor latens mask akan dihasilkan oleh `mask_image`. height (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Tinggi gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. width (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. 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 1.0) : Menunjukkan sejauh mana transformasi dilakukan pada `image` referensi. 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. 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. guidance_scale (`float`, *opsional*, defaultnya None) : Nilai skala panduan untuk model yang telah melalui distilasi panduan. Berbeda dengan panduan bebas-klasifikator tradisional di mana skala panduan diterapkan selama inferensi melalui penskalaan ulang prediksi noise, model yang telah melalui distilasi panduan mengambil skala panduan secara langsung sebagai parameter input selama langkah maju. 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. Parameter ini dalam pipeline ada untuk mendukung model distilasi panduan di masa depan ketika mereka muncul. Parameter ini diabaikan ketika tidak menggunakan model distilasi panduan. Untuk mengaktifkan panduan bebas-klasifikator tradisional, silakan lewati `true_cfg_scale > 1.0` dan `negative_prompt` (bahkan prompt negatif kosong seperti " " harus mengaktifkan komputasi panduan bebas-klasifikator). num_images_per_prompt (`int`, *opsional*, default 1) : Jumlah gambar yang akan dihasilkan per prompt. generator (`torch.Generator` atau `list[torch.Generator]`, *opsional*) : Satu atau daftar [generator torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) 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`. prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `prompt_embeds`. 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`. negative_prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `negative_prompt_embeds`. output_type (`str`, *opsional*, defaultnya `"pil"`) : Format output dari gambar yang dihasilkan. Pilih antara [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` atau `np.array`. return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan `~pipelines.qwenimage.QwenImagePipelineOutput` alih-alih tuple biasa. 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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). callback_on_step_end (`Callable`, *opsional*) : Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_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. max_sequence_length (`int` defaultnya 512) : Panjang maksimum sekuens yang digunakan dengan `prompt`. **Mengembalikan:** `~pipelines.qwenimage.QwenImagePipelineOutput` atau `tuple` `~pipelines.qwenimage.QwenImagePipelineOutput` 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: ```py >>> import torch >>> from PIL import Image >>> from diffusers import QwenImageEditInpaintPipeline >>> from diffusers.utils import load_image >>> pipe = QwenImageEditInpaintPipeline.from_pretrained("Qwen/Qwen-Image-Edit", torch_dtype=torch.bfloat16) >>> pipe.to("cuda") >>> prompt = "Face of a yellow cat, high resolution, sitting on a park bench" >>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png" >>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png" >>> source = load_image(img_url) >>> mask = load_image(mask_url) >>> image = pipe( ... prompt=prompt, negative_prompt=" ", image=source, mask_image=mask, strength=1.0, num_inference_steps=50 ... ).images[0] >>> image.save("qwenimage_inpainting.png") ``` #### encode_prompt[[diffusers.QwenImageEditInpaintPipeline.encode_prompt]] ```python encode_prompt(prompt: str | list[str], image: typing.Optional[torch.Tensor] = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 1024) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_edit_inpaint.py#L284) **Parameter:** prompt (`str` atau `list[str]`, *opsional*) : prompt yang akan dienkod image (`torch.Tensor`, *opsional*) : gambar yang akan dikodekan device : (`torch.device`): perangkat torch num_images_per_prompt (`int`) : jumlah gambar yang harus dihasilkan per prompt 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`. ## QwenImageControlNetPipeline[[diffusers.QwenImageControlNetPipeline]] #### diffusers.QwenImageControlNetPipeline[[diffusers.QwenImageControlNetPipeline]] ```python diffusers.QwenImageControlNetPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLQwenImage, text_encoder: Qwen2_5_VLForConditionalGeneration, tokenizer: Qwen2Tokenizer, transformer: QwenImageTransformer2DModel, controlnet: diffusers.models.controlnets.controlnet_qwenimage.QwenImageControlNetModel | diffusers.models.controlnets.controlnet_qwenimage.QwenImageMultiControlNetModel) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_controlnet.py#L192) **Parameter:** transformer ([QwenImageTransformer2DModel](/docs/diffusers/main/id/api/models/qwenimage_transformer2d#diffusers.QwenImageTransformer2DModel)) : Arsitektur Conditional Transformer (MMDiT) untuk mendenoise latens gambar yang telah dikodekan. scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/id/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : Penjadwal yang digunakan bersama `transformer` untuk menghilangkan noise pada latens gambar yang telah dikodekan. vae ([AutoencoderKL](/docs/diffusers/main/id/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten. text_encoder (`Qwen2.5-VL-7B-Instruct`) : [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct), khususnya varian [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct). tokenizer (`Qwen2Tokenizer`) : Tokenizer dari kelas https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer Pipeline QwenImage untuk generasi teks-ke-gambar. #### __call__[[diffusers.QwenImageControlNetPipeline.__call__]] ```python __call__(prompt: str | list[str] = None, negative_prompt: str | list[str] = None, true_cfg_scale: float = 4.0, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, sigmas: list[float] | None = None, guidance_scale: float | None = None, control_guidance_start: float | list[float] = 0.0, control_guidance_end: float | list[float] = 1.0, control_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, controlnet_conditioning_scale: float | list[float] = 1.0, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_controlnet.py#L511) **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. 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 `true_cfg_scale` tidak lebih besar dari `1`). true_cfg_scale (`float`, *opsional*, default 1.0) : Skala panduan seperti yang didefinisikan dalam [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `true_cfg_scale` didefinisikan sebagai `w` dari persamaan 2. pada [Imagen Paper](https://huggingface.co/papers/2205.11487). Classifier-free guidance diaktifkan dengan mengatur `true_cfg_scale > 1` dan menyediakan `negative_prompt`. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait dengan `prompt` teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. height (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Tinggi gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. width (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. 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. 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. guidance_scale (`float`, *opsional*, defaultnya None) : Nilai skala panduan untuk model yang telah melalui distilasi panduan. Berbeda dengan panduan bebas-klasifikator tradisional di mana skala panduan diterapkan selama inferensi melalui penskalaan ulang prediksi noise, model yang telah melalui distilasi panduan mengambil skala panduan secara langsung sebagai parameter input selama langkah maju. 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. Parameter ini dalam pipeline ada untuk mendukung model distilasi panduan di masa depan ketika mereka muncul. Parameter ini diabaikan ketika tidak menggunakan model distilasi panduan. Untuk mengaktifkan panduan bebas-klasifikator tradisional, silakan lewati `true_cfg_scale > 1.0` dan `negative_prompt` (bahkan prompt negatif kosong seperti " " harus mengaktifkan komputasi panduan bebas-klasifikator). 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. control_image (`PipelineImageInput`, *opsional*) : Kondisi input ControlNet untuk memberikan panduan bagi proses generasi. controlnet_conditioning_scale (`float` atau `list[float]`, *opsional*, default 1.0) : Output dari ControlNet dikalikan dengan `controlnet_conditioning_scale` sebelum ditambahkan ke residual di `transformer` asli. num_images_per_prompt (`int`, *opsional*, default 1) : Jumlah gambar yang akan dihasilkan per prompt. generator (`torch.Generator` atau `list[torch.Generator]`, *opsional*) : Satu atau daftar [generator torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) 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`. prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `prompt_embeds`. 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`. negative_prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `negative_prompt_embeds`. output_type (`str`, *opsional*, defaultnya `"pil"`) : Format output dari gambar yang dihasilkan. Pilih antara [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` atau `np.array`. return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan `~pipelines.qwenimage.QwenImagePipelineOutput` alih-alih tuple biasa. 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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). callback_on_step_end (`Callable`, *opsional*) : Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_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. max_sequence_length (`int` defaultnya 512) : Panjang maksimum sekuens yang digunakan dengan `prompt`. **Mengembalikan:** `~pipelines.qwenimage.QwenImagePipelineOutput` atau `tuple` `~pipelines.qwenimage.QwenImagePipelineOutput` 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: ```py >>> import torch >>> from diffusers.utils import load_image >>> from diffusers import QwenImageControlNetModel, QwenImageMultiControlNetModel, QwenImageControlNetPipeline >>> # QwenImageControlNetModel >>> controlnet = QwenImageControlNetModel.from_pretrained( ... "InstantX/Qwen-Image-ControlNet-Union", torch_dtype=torch.bfloat16 ... ) >>> pipe = QwenImageControlNetPipeline.from_pretrained( ... "Qwen/Qwen-Image", controlnet=controlnet, torch_dtype=torch.bfloat16 ... ) >>> pipe.to("cuda") >>> prompt = "Aesthetics art, traditional asian pagoda, elaborate golden accents, sky blue and white color palette, swirling cloud pattern, digital illustration, east asian architecture, ornamental rooftop, intricate detailing on building, cultural representation." >>> negative_prompt = " " >>> control_image = load_image( ... "https://huggingface.co/InstantX/Qwen-Image-ControlNet-Union/resolve/main/conds/canny.png" ... ) >>> # Depending on the variant being used, the pipeline call will slightly vary. >>> # Refer to the pipeline documentation for more details. >>> image = pipe( ... prompt, ... negative_prompt=negative_prompt, ... control_image=control_image, ... controlnet_conditioning_scale=1.0, ... num_inference_steps=30, ... true_cfg_scale=4.0, ... ).images[0] >>> image.save("qwenimage_cn_union.png") >>> # QwenImageMultiControlNetModel >>> controlnet = QwenImageControlNetModel.from_pretrained( ... "InstantX/Qwen-Image-ControlNet-Union", torch_dtype=torch.bfloat16 ... ) >>> controlnet = QwenImageMultiControlNetModel([controlnet]) >>> pipe = QwenImageControlNetPipeline.from_pretrained( ... "Qwen/Qwen-Image", controlnet=controlnet, torch_dtype=torch.bfloat16 ... ) >>> pipe.to("cuda") >>> prompt = "Aesthetics art, traditional asian pagoda, elaborate golden accents, sky blue and white color palette, swirling cloud pattern, digital illustration, east asian architecture, ornamental rooftop, intricate detailing on building, cultural representation." >>> negative_prompt = " " >>> control_image = load_image( ... "https://huggingface.co/InstantX/Qwen-Image-ControlNet-Union/resolve/main/conds/canny.png" ... ) >>> # Depending on the variant being used, the pipeline call will slightly vary. >>> # Refer to the pipeline documentation for more details. >>> image = pipe( ... prompt, ... negative_prompt=negative_prompt, ... control_image=[control_image, control_image], ... controlnet_conditioning_scale=[0.5, 0.5], ... num_inference_steps=30, ... true_cfg_scale=4.0, ... ).images[0] >>> image.save("qwenimage_cn_union_multi.png") ``` #### encode_prompt[[diffusers.QwenImageControlNetPipeline.encode_prompt]] ```python encode_prompt(prompt: str | list[str], device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 1024) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_controlnet.py#L290) **Parameter:** prompt (`str` atau `list[str]`, *opsional*) : prompt yang akan dienkod device : (`torch.device`): perangkat torch num_images_per_prompt (`int`) : jumlah gambar yang harus dihasilkan per prompt 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`. ## QwenImageEditPlusPipeline[[diffusers.QwenImageEditPlusPipeline]] #### diffusers.QwenImageEditPlusPipeline[[diffusers.QwenImageEditPlusPipeline]] ```python diffusers.QwenImageEditPlusPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLQwenImage, text_encoder: Qwen2_5_VLForConditionalGeneration, tokenizer: Qwen2Tokenizer, processor: Qwen2VLProcessor, transformer: QwenImageTransformer2DModel) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_edit_plus.py#L168) **Parameter:** transformer ([QwenImageTransformer2DModel](/docs/diffusers/main/id/api/models/qwenimage_transformer2d#diffusers.QwenImageTransformer2DModel)) : Arsitektur Conditional Transformer (MMDiT) untuk mendenoise latens gambar yang telah dikodekan. scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/id/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : Penjadwal yang digunakan bersama `transformer` untuk menghilangkan noise pada latens gambar yang telah dikodekan. vae ([AutoencoderKL](/docs/diffusers/main/id/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten. text_encoder (`Qwen2.5-VL-7B-Instruct`) : [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct), khususnya varian [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct). tokenizer (`Qwen2Tokenizer`) : Tokenizer dari kelas https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer Pipeline Qwen-Image-Edit untuk pengeditan gambar. #### __call__[[diffusers.QwenImageEditPlusPipeline.__call__]] ```python __call__(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, prompt: str | list[str] = None, negative_prompt: str | list[str] = None, true_cfg_scale: float = 4.0, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, sigmas: list[float] | None = None, guidance_scale: float | None = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_edit_plus.py#L526) **Parameter:** image (`torch.Tensor`, `PIL.Image.Image`, `np.ndarray`, `list[torch.Tensor]`, `list[PIL.Image.Image]`, atau `list[np.ndarray]`) : `Image`, array numpy, atau tensor yang merepresentasikan batch gambar untuk digunakan sebagai titik awal. Untuk array numpy dan tensor pytorch, rentang nilai yang diharapkan adalah antara `[0, 1]` Jika berupa tensor atau daftar tensor, bentuk (shape) yang diharapkan adalah `(B, C, H, W)` atau `(C, H, W)`. Jika berupa array numpy atau daftar array, bentuk yang diharapkan adalah `(B, H, W, C)` atau `(H, W, C)` Parameter ini juga dapat menerima latents gambar sebagai `image`, namun jika latents dilewatkan secara langsung, latents tersebut tidak akan di-encode ulang. prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus melewatkan `prompt_embeds` sebagai gantinya. 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 `true_cfg_scale` tidak lebih besar dari `1`). true_cfg_scale (`float`, *opsional*, default 1.0) : true_cfg_scale (`float`, *opsional*, default 1.0): Skala panduan seperti yang didefinisikan dalam [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `true_cfg_scale` didefinisikan sebagai `w` dari persamaan 2. pada [Imagen Paper](https://huggingface.co/papers/2205.11487). Panduan bebas klasifikator diaktifkan dengan mengatur `true_cfg_scale > 1` dan menyediakan `negative_prompt`. Skala panduan yang lebih tinggi mendorong penggenerasian gambar yang sangat terkait dengan `prompt` teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. height (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Tinggi gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. width (`int`, *opsional*, defaultnya self.unet.config.sample_size * self.vae_scale_factor) : Lebar gambar yang dihasilkan dalam piksel. Ini diatur ke 1024 secara default untuk hasil terbaik. 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. 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. guidance_scale (`float`, *opsional*, defaultnya None) : Nilai skala panduan untuk model yang telah melalui distilasi panduan. Berbeda dengan panduan bebas-klasifikator tradisional di mana skala panduan diterapkan selama inferensi melalui penskalaan ulang prediksi noise, model yang telah melalui distilasi panduan mengambil skala panduan secara langsung sebagai parameter input selama langkah maju. 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. Parameter ini dalam pipeline ada untuk mendukung model distilasi panduan di masa depan ketika mereka muncul. Parameter ini diabaikan ketika tidak menggunakan model distilasi panduan. Untuk mengaktifkan panduan bebas-klasifikator tradisional, silakan lewati `true_cfg_scale > 1.0` dan `negative_prompt` (bahkan prompt negatif kosong seperti " " harus mengaktifkan komputasi panduan bebas-klasifikator). num_images_per_prompt (`int`, *opsional*, default 1) : Jumlah gambar yang akan dihasilkan per prompt. generator (`torch.Generator` atau `list[torch.Generator]`, *opsional*) : Satu atau daftar [generator torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) 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`. prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `prompt_embeds`. 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`. negative_prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `negative_prompt_embeds`. output_type (`str`, *opsional*, defaultnya `"pil"`) : Format output dari gambar yang dihasilkan. Pilih antara [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` atau `np.array`. return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan `~pipelines.qwenimage.QwenImagePipelineOutput` alih-alih tuple biasa. 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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). callback_on_step_end (`Callable`, *opsional*) : Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_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. max_sequence_length (`int` defaultnya 512) : Panjang maksimum sekuens yang digunakan dengan `prompt`. **Mengembalikan:** `~pipelines.qwenimage.QwenImagePipelineOutput` atau `tuple` `~pipelines.qwenimage.QwenImagePipelineOutput` 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: ```py >>> import torch >>> from PIL import Image >>> from diffusers import QwenImageEditPlusPipeline >>> from diffusers.utils import load_image >>> pipe = QwenImageEditPlusPipeline.from_pretrained("Qwen/Qwen-Image-Edit-2509", torch_dtype=torch.bfloat16) >>> pipe.to("cuda") >>> image = load_image( ... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png" ... ).convert("RGB") >>> prompt = ( ... "Make Pikachu hold a sign that says 'Qwen Edit is awesome', yarn art style, detailed, vibrant colors" ... ) >>> # Depending on the variant being used, the pipeline call will slightly vary. >>> # Refer to the pipeline documentation for more details. >>> image = pipe(image, prompt, num_inference_steps=50).images[0] >>> image.save("qwenimage_edit_plus.png") ``` #### encode_prompt[[diffusers.QwenImageEditPlusPipeline.encode_prompt]] ```python encode_prompt(prompt: str | list[str], image: typing.Optional[torch.Tensor] = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 1024) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_edit_plus.py#L286) **Parameter:** prompt (`str` atau `list[str]`, *opsional*) : prompt yang akan dienkod image (`torch.Tensor`, *opsional*) : gambar yang akan dikodekan device : (`torch.device`): perangkat torch num_images_per_prompt (`int`) : jumlah gambar yang harus dihasilkan per prompt 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`. ## QwenImageLayeredPipeline[[diffusers.QwenImageLayeredPipeline]] #### diffusers.QwenImageLayeredPipeline[[diffusers.QwenImageLayeredPipeline]] ```python diffusers.QwenImageLayeredPipeline(scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLQwenImage, text_encoder: Qwen2_5_VLForConditionalGeneration, tokenizer: Qwen2Tokenizer, processor: Qwen2VLProcessor, transformer: QwenImageTransformer2DModel) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_layered.py#L174) **Parameter:** transformer ([QwenImageTransformer2DModel](/docs/diffusers/main/id/api/models/qwenimage_transformer2d#diffusers.QwenImageTransformer2DModel)) : Arsitektur Conditional Transformer (MMDiT) untuk mendenoise latens gambar yang telah dikodekan. scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/id/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : Penjadwal yang digunakan bersama `transformer` untuk menghilangkan noise pada latens gambar yang telah dikodekan. vae ([AutoencoderKL](/docs/diffusers/main/id/api/models/autoencoderkl#diffusers.AutoencoderKL)) : Model Variational Auto-Encoder (VAE) untuk mengodekan dan mendekodekan gambar ke dan dari representasi laten. text_encoder (`Qwen2.5-VL-7B-Instruct`) : [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct), khususnya varian [Qwen2.5-VL-7B-Instruct](https://huggingface.co/Qwen/Qwen2.5-VL-7B-Instruct). tokenizer (`Qwen2Tokenizer`) : Tokenizer dari kelas https://huggingface.co/docs/transformers/en/model_doc/qwen2#transformers.Qwen2Tokenizer Pipeline Qwen-Image-Layered untuk dekomposisi gambar. #### __call__[[diffusers.QwenImageLayeredPipeline.__call__]] ```python __call__(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, prompt: str | list[str] = None, negative_prompt: str | list[str] = None, true_cfg_scale: float = 4.0, layers: int | None = 4, num_inference_steps: int = 50, sigmas: list[float] | None = None, guidance_scale: float | None = None, num_images_per_prompt: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 512, resolution: int = 640, cfg_normalize: bool = False, use_en_prompt: bool = False) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_layered.py#L537) **Parameter:** image (`torch.Tensor`, `PIL.Image.Image`, `np.ndarray`, `list[torch.Tensor]`, `list[PIL.Image.Image]`, atau `list[np.ndarray]`) : `Image`, array numpy, atau tensor yang merepresentasikan batch gambar untuk digunakan sebagai titik awal. Untuk array numpy dan tensor pytorch, rentang nilai yang diharapkan adalah antara `[0, 1]` Jika berupa tensor atau daftar tensor, bentuk (shape) yang diharapkan adalah `(B, C, H, W)` atau `(C, H, W)`. Jika berupa array numpy atau daftar array, bentuk yang diharapkan adalah `(B, H, W, C)` atau `(H, W, C)` Parameter ini juga dapat menerima latents gambar sebagai `image`, namun jika latents dilewatkan secara langsung, latents tersebut tidak akan di-encode ulang. prompt (`str` atau `list[str]`, *opsional*) : Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus melewatkan `prompt_embeds` sebagai gantinya. 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 `true_cfg_scale` tidak lebih besar dari `1`). true_cfg_scale (`float`, *opsional*, default 1.0) : true_cfg_scale (`float`, *opsional*, default 1.0): Skala panduan seperti yang didefinisikan dalam [Classifier-Free Diffusion Guidance](https://huggingface.co/papers/2207.12598). `true_cfg_scale` didefinisikan sebagai `w` dari persamaan 2. pada [Imagen Paper](https://huggingface.co/papers/2205.11487). Panduan bebas klasifikator diaktifkan dengan mengatur `true_cfg_scale > 1` dan menyediakan `negative_prompt`. Skala panduan yang lebih tinggi mendorong penggenerasian gambar yang sangat terkait dengan `prompt` teks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. layers (`int`, *opsional*, default 4) : Jumlah lapisan laten yang akan dihasilkan untuk output berlapis. 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. 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. guidance_scale (`float`, *opsional*, defaultnya None) : Nilai skala panduan untuk model yang telah melalui distilasi panduan. Berbeda dengan panduan bebas-klasifikator tradisional di mana skala panduan diterapkan selama inferensi melalui penskalaan ulang prediksi noise, model yang telah melalui distilasi panduan mengambil skala panduan secara langsung sebagai parameter input selama langkah maju. 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. Parameter ini dalam pipeline ada untuk mendukung model distilasi panduan di masa depan ketika mereka muncul. Parameter ini diabaikan ketika tidak menggunakan model distilasi panduan. Untuk mengaktifkan panduan bebas-klasifikator tradisional, silakan lewati `true_cfg_scale > 1.0` dan `negative_prompt` (bahkan prompt negatif kosong seperti " " harus mengaktifkan komputasi panduan bebas-klasifikator). num_images_per_prompt (`int`, *opsional*, default 1) : Jumlah gambar yang akan dihasilkan per prompt. generator (`torch.Generator` atau `list[torch.Generator]`, *opsional*) : Satu atau daftar [generator torch](https://pytorch.org/docs/stable/generated/torch.Generator.html) 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`. prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `prompt_embeds`. 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`. negative_prompt_embeds_mask (`torch.Tensor`, *opsional*) : Attention mask untuk `negative_prompt_embeds`. output_type (`str`, *opsional*, defaultnya `"pil"`) : Format output dari gambar yang dihasilkan. Pilih antara [PIL](https://pillow.readthedocs.io/en/stable/): `PIL.Image.Image` atau `np.array`. return_dict (`bool`, *opsional*, defaultnya `True`) : Apakah akan mengembalikan `~pipelines.qwenimage.QwenImagePipelineOutput` alih-alih tuple biasa. 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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py). callback_on_step_end (`Callable`, *opsional*) : Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`. `callback_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. max_sequence_length (`int` defaultnya 512) : Panjang maksimum sekuens yang digunakan dengan `prompt`. resolution (`int`, *opsional*, default 640) : menggunakan bucket berbeda dalam (640, 1024) untuk menentukan resolusi kondisi dan output cfg_normalize (`bool`, *opsional*, defaultnya `False`) : apakah mengaktifkan normalisasi cfg. use_en_prompt (`bool`, *opsional*, defaultnya `False`) : bahasa caption otomatis jika pengguna tidak menyediakan caption **Mengembalikan:** `~pipelines.qwenimage.QwenImagePipelineOutput` atau `tuple` `~pipelines.qwenimage.QwenImagePipelineOutput` 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: ```py >>> import torch >>> from PIL import Image >>> from diffusers import QwenImageLayeredPipeline >>> from diffusers.utils import load_image >>> pipe = QwenImageLayeredPipeline.from_pretrained("Qwen/Qwen-Image-Layered", torch_dtype=torch.bfloat16) >>> pipe.to("cuda") >>> image = load_image( ... "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/yarn-art-pikachu.png" ... ).convert("RGBA") >>> prompt = "" >>> # Depending on the variant being used, the pipeline call will slightly vary. >>> # Refer to the pipeline documentation for more details. >>> images = pipe( ... image, ... prompt, ... num_inference_steps=50, ... true_cfg_scale=4.0, ... layers=4, ... resolution=640, ... cfg_normalize=False, ... use_en_prompt=True, ... ).images[0] >>> for i, image in enumerate(images): ... image.save(f"{i}.out.png") ``` #### encode_prompt[[diffusers.QwenImageLayeredPipeline.encode_prompt]] ```python encode_prompt(prompt: str | list[str], device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 1024) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_qwenimage_layered.py#L291) **Parameter:** prompt (`str` atau `list[str]`, *opsional*) : prompt yang akan dienkod device : (`torch.device`): perangkat torch num_images_per_prompt (`int`) : jumlah gambar yang harus dihasilkan per prompt 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`. ## QwenImagePipelineOutput[[diffusers.pipelines.qwenimage.pipeline_output.QwenImagePipelineOutput]] #### diffusers.pipelines.qwenimage.pipeline_output.QwenImagePipelineOutput[[diffusers.pipelines.qwenimage.pipeline_output.QwenImagePipelineOutput]] ```python diffusers.pipelines.qwenimage.pipeline_output.QwenImagePipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray) ``` [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/qwenimage/pipeline_output.py#L10) **Parameter:** images (`list[PIL.Image.Image]` atau `np.ndarray`) : daftar gambar PIL yang telah didenois dengan panjang `batch_size` atau array numpy dengan bentuk `(batch_size, height, width, num_channels)`. Gambar PIL atau array numpy menyajikan gambar-gambar yang telah didenois dari pipeline difusi. Kelas output untuk pipeline Stable Diffusion.
#
# Berlisensi di bawah Apache License, Versi 2.0 ("Lisensi");
# Anda mungkin tidak dapat menggunakan file ini kecuali sesuai dengan Lisensi.
# Anda dapat memperoleh salinan Lisensi di
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Kecuali diwajibkan oleh hukum yang berlaku atau disepakati secara tertulis, perangkat lunak
# distribusikan di bawah Lisensi berdasarkan basis "SEBAGAIMANA ADANYA",
# TANPA JAMINAN ATAU SYARAT DALAM BENTUK APAPUN, baik yang dinyatakan maupun yang tersirat.
# Lihat Lisensi untuk bahasa tertentu yang mengatur izin dan
# batasan di bawah Lisensi. -->
# QwenImage
Qwen-Image dari tim Qwen adalah model dasar generasi gambar dalam seri Qwen yang mencapai kemajuan signifikan dalam render teks kompleks dan pengeditan gambar yang presisi. Eksperimen menunjukkan kemampuan umum yang kuat dalam generasi dan pengeditan gambar, dengan kinerja luar biasa dalam render teks, terutama untuk bahasa Mandarin.
Qwen-Image hadir dalam varian berikut:
| tipe model | id model |
|:----------:|:--------:|
| Qwen-Image | [`Qwen/Qwen-Image`](https://huggingface.co/Qwen/Qwen-Image) |
| Qwen-Image-Edit | [`Qwen/Qwen-Image-Edit`](https://huggingface.co/Qwen/Qwen-Image-Edit) |
| Qwen-Image-Edit Plus | [Qwen/Qwen-Image-Edit-2509](https://huggingface.co/Qwen/Qwen-Image-Edit-2509) |
> [!TIP]
> Lihat panduan [Caching](../../optimization/cache) untuk mempercepat inferensi dengan menyimpan dan menggunakan kembali output antara.
## LoRA untuk inferensi yang lebih cepat
Gunakan LoRA dari `lightx2v/Qwen-Image-Lightning` untuk mempercepat inferensi dengan mengurangi jumlah langkah. Lihat cuplikan kode di bawah:
Kode
```py
from diffusers import DiffusionPipeline, FlowMatchEulerDiscreteScheduler
import torch
import math
ckpt_id = "Qwen/Qwen-Image"
# From
# https://github.com/ModelTC/Qwen-Image-Lightning/blob/342260e8f5468d2f24d084ce04f55e101007118b/generate_with_diffusers.py#L82C9-L97C10
scheduler_config = {
"base_image_seq_len": 256,
"base_shift": math.log(3), # We use shift=3 in distillation
"invert_sigmas": False,
"max_image_seq_len": 8192,
"max_shift": math.log(3), # We use shift=3 in distillation
"num_train_timesteps": 1000,
"shift": 1.0,
"shift_terminal": None, # set shift_terminal to None
"stochastic_sampling": False,
"time_shift_type": "exponential",
"use_beta_sigmas": False,
"use_dynamic_shifting": True,
"use_exponential_sigmas": False,
"use_karras_sigmas": False,
}
scheduler = FlowMatchEulerDiscreteScheduler.from_config(scheduler_config)
pipe = DiffusionPipeline.from_pretrained(
ckpt_id, scheduler=scheduler, dtype=torch.bfloat16
).to("cuda") # or "mps", "xpu", "cpu"
pipe.load_lora_weights(
"lightx2v/Qwen-Image-Lightning", weight_name="Qwen-Image-Lightning-8steps-V1.0.safetensors"
)
prompt = "a tiny astronaut hatching from an egg on the moon, Ultra HD, 4K, cinematic composition."
negative_prompt = " "
image = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
width=1024,
height=1024,
num_inference_steps=8,
true_cfg_scale=1.0,
generator=torch.manual_seed(0),
).images[0]
image.save("qwen_fewsteps.png")
```
> [!TIP]
> Parameter `guidance_scale` dalam pipeline ada untuk mendukung model guidance-distilled di masa depan ketika model tersebut tersedia. Perhatikan bahwa meneruskan `guidance_scale` ke pipeline tidak efektif. Untuk mengaktifkan classifier-free guidance, silakan teruskan `true_cfg_scale` dan `negative_prompt` (bahkan negative prompt kosong seperti " ") untuk mengaktifkan komputasi classifier-free guidance.
## Referensi multi-gambar dengan QwenImageEditPlusPipeline
Dengan [QwenImageEditPlusPipeline](/docs/diffusers/main/id/api/pipelines/qwenimage#diffusers.QwenImageEditPlusPipeline), pengguna dapat menyediakan beberapa gambar sebagai referensi input.
```py
import torch
from PIL import Image
from diffusers import QwenImageEditPlusPipeline
from diffusers.utils import load_image
pipe = QwenImageEditPlusPipeline.from_pretrained(
"Qwen/Qwen-Image-Edit-2509", dtype=torch.bfloat16
).to("cuda") # or "mps", "xpu", "cpu"

Xet Storage Details

Size:
108 kB
·
Xet hash:
54172c1837ec3d06c60505c1539a9eff3fcb4fb089ee8f578aa003ecbb21129d

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