Diffusers documentation

JoyAI-Image-Edit-Plus

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

and get access to the augmented documentation experience

to get started

JoyAI-Image-Edit-Plus

JoyAI-Image, görüntü anlama, metinden görüntüye üretim ve talimat yönlendirmeli görüntü düzenleme için birleşik çok modlu temel bir modeldir. 8B'lik Çok Modlu Büyük Dil Modeli (MLLM) ile 16B'lik Çok Modlu Difüzyon Dönüştürücüsünü (MMDiT) birleştirir.

JoyAI-Image-Edit-Plus, birden fazla referans görseli ve bir metin talimatı kabul ederek, talimata göre referanslardaki öğeleri birleştiren yeni bir görsel üreten, çoklu görsel talimat yönlendirmeli düzenleme modelidir. Örnek başına 1–5 referans görselini destekler.

ModelAçıklamaİndir
JoyAI-Image-Edit-PlusBirden fazla referanstan öğe kompozisyonu ile çoklu görüntü talimat yönlendirmeli düzenlemeHugging Face
import torch
from PIL import Image
from diffusers import JoyImageEditPlusPipeline

pipeline = JoyImageEditPlusPipeline.from_pretrained(
    "jdopensource/JoyAI-Image-Edit-Plus-Diffusers", dtype=torch.bfloat16
)
pipeline.to("cuda")  # or "mps", "xpu", "cpu"

images = [
    Image.open("reference_0.png").convert("RGB"),
    Image.open("reference_1.png").convert("RGB"),
]

target_h, target_w = pipeline.image_processor.get_default_height_width(images[-1])

output = pipeline(
    images=images,
    prompt="Combine the person from the second image with the scene from the first image.",
    negative_prompt="low quality, blurry, deformed",
    height=target_h,
    width=target_w,
    num_inference_steps=30,
    guidance_scale=4.0,
    generator=torch.Generator("cuda").manual_seed(42),
).images[0]
output.save("joyimage_edit_plus_output.png")

JoyImageEditPlusPipeline

sınıf diffusers.JoyImageEditPlusPipeline

< >

( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLWantext_encoder: Qwen3VLForConditionalGenerationtokenizer: Qwen2Tokenizertransformer: JoyImageEditPlusTransformer3DModelprocessor: Qwen3VLProcessortext_token_max_length: int = 2048 )

Parametreler

  • scheduler (FlowMatchEulerDiscreteScheduler) — Kodlanmış görüntü latentlerini gürültüden arındırmak için transformer ile birlikte kullanılacak bir zamanlayıcı.
  • vae (AutoencoderKLWan) — Görselleri latent temsillere kodlamak ve bu temsillerden çözmek için kullanılan Varyasyonel Oto-Kodlayıcı (VAE) modeli.
  • text_encoder (Qwen3VLForConditionalGeneration) — Satır içi görüntü anlama ile prompt kodlaması için çok modlu metin kodlayıcı.
  • tokenizer (Qwen2Tokenizer) — Metin işleme için tokenizer.
  • transformer (JoyImageEditPlusTransformer3DModel) — Kodlanmış görüntü latentlerini gürültüden arındırmak için kullanılan Koşullu Transformer (MMDiT) mimarisi.
  • processor (Qwen3VLProcessor) — Çok modlu girdiler (metin + görseller) için işlemci.
  • text_token_max_length (int, varsayılan 2048) — Metin kodlama için maksimum jeton uzunluğu.

JoyImage Edit Plus kullanılarak çoklu görüntü talimat yönlendirmeli düzenleme için difüzyon hattı.

Farklı çözünürlüklere sahip birden fazla referans görüntüsünü destekler. Her referans görüntüsü bağımsız olarak VAE kodlanır ve yamalanır (patchified), ardından ortak gürültü azaltma (joint denoising) için hedef gürültü yamalarıyla birleştirilir.

__call__

< >

( images: list[PIL.Image.Image] | list[list[PIL.Image.Image]] | None = Noneprompt: str | list[str] = Noneheight: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 30timesteps: list = Nonesigmas: list = Noneguidance_scale: float = 4.0negative_prompt: str | list[str] | None = Nonegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Union[typing.Callable[[int, int, dict], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']max_sequence_length: int = 4096 ) → JoyImageEditPlusPipelineOutput or tuple

Parametreler

  • images (list[Image.Image] veya list[list[Image.Image]], isteğe bağlı) — Düzenleme için referans görüntüler. Her görüntünün farklı bir çözünürlüğe sahip olması mümkündür. Düz bir liste sağlanırsa, birden fazla referansa sahip tek bir örnek olarak ele alınır.
  • prompt (str veya list[str], isteğe bağlı) — Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerine prompt_embeds parametresinin geçirilmesi gerekir.
  • height (int, isteğe bağlı) — Oluşturulan görüntünün piksel cinsinden yüksekliği. None ise, son referans görüntüsünden belirlenir.
  • width (int, isteğe bağlı) — Oluşturulan görüntünün piksel cinsinden genişliği. None ise, son referans görüntüsünden belirlenir.
  • num_inference_steps (int, isteğe bağlı, varsayılan 30) — Gürültü azaltma adım sayısı. Daha fazla gürültü azaltma adımı genellikle daha yavaş çıkarım pahasına daha yüksek kaliteli bir görüntüye yol açar.
  • timesteps (list[int], isteğe bağlı) — Gürültüden arındırma süreci için kullanılacak özel zaman adımları. Tanımlanmamışsa, eşit aralıklı dağılım kullanılır.
  • sigmas (list[float], isteğe bağlı) — Gürültü azaltma süreci için kullanılacak özel sigmalar.
  • guidance_scale (float, isteğe bağlı, varsayılan 4.0) — Sınıflandırıcı-ücretsiz yönlendirme ölçeği. Daha yüksek değerler, modelin prompt ile daha uyumlu görseller üretmesini teşvik eder; bunun bedeli ise daha düşük görsel kalitedir.
  • negative_prompt (str veya list[str], isteğe bağlı) — Görsel üretimini yönlendirmemesi istenen istem veya istemler. Tanımlanmazsa, sınıflandırıcı-özgür yönlendirme için boş bir istem kullanılır.
  • generator (torch.Generator veya list[torch.Generator], isteğe bağlı) — Üretimi deterministik hale getirmek için bir veya torch üreteci listesi.
  • latents (torch.Tensor, isteğe bağlı) — Görsel üretimde girdi olarak kullanılacak önceden oluşturulmuş gürültülü latensler.
  • prompt_embeds (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir.
  • prompt_embeds_mask (torch.Tensor, isteğe bağlı) — Önceden oluşturulan metin gömme vektörleri için dikkat maskesi.
  • negative_prompt_embeds (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri.
  • negative_prompt_embeds_mask (torch.Tensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme vektörleri için dikkat maskesi.
  • output_type (str, isteğe bağlı, varsayılan "pil") — Oluşturulan görüntünün çıktı biçimi. "pil" (PIL.Image.Image), "np" (np.ndarray), "pt" (torch.Tensor) veya ham latent çıktı için "latent" arasında seçim yapın.
  • return_dict (bool, isteğe bağlı, varsayılan True) — Düz bir tuple yerine JoyImageEditPlusPipelineOutput döndürülüp döndürülmemesi.
  • callback_on_step_end (Callable, isteğe bağlı) — Her gürültü azaltma adımının sonunda, şu argümanlarla çağrılan bir fonksiyon: pipeline, adım indeksi, timestep ve callback girdi tensörlerinin sözlüğü.
  • callback_on_step_end_tensor_inputs (list[str], isteğe bağlı, varsayılan ["latents"]) — callback_on_step_end işlevi için girdi tensörlerinin listesi.
  • max_sequence_length (int, isteğe bağlı, varsayılan 4096) — Metin kodlayıcısı için maksimum dizi uzunluğu.

Dönüş değeri

JoyImageEditPlusPipelineOutput veya tuple

return_dict True ise JoyImageEditPlusPipelineOutput döndürülür, aksi halde ilk öğesi üretilen görsellerin listesi olan bir tuple döndürülür.

Üretim için pipeline çağrıldığında tetiklenen işlev.

Örnekler:

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

>>> model_id = "jdopensource/JoyAI-Image-Edit-Plus-Diffusers"
>>> pipe = JoyImageEditPlusPipeline.from_pretrained(model_id, torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")

>>> images = [
...     load_image("dog.png"),
...     load_image("person.png"),
... ]
>>> output = pipe(
...     images=images,
...     prompt="Let the person lovingly play with the dog.",
...     height=1024,
...     width=1024,
...     num_inference_steps=30,
...     guidance_scale=4.0,
...     generator=torch.manual_seed(42),
... )
>>> output.images[0].save("output.png")

encode_prompt_multiple_images

< >

( prompt: str | list[str]device: typing.Optional[torch.device] = Noneimages: list[PIL.Image.Image] | None = Nonemax_sequence_length: int | None = None )

Qwen3-VL işlemcisi aracılığıyla satır içi <image> jetonları içeren istemleri kodlayın.

prepare_latents

< >

( batch_size: intnum_channels_latents: intheight: intwidth: intdtype: dtypedevice: devicegenerator: typing.Union[torch.Generator, list[torch.Generator], NoneType]reference_images: list[list[PIL.Image.Image]] | None = Nonelatents: typing.Optional[torch.Tensor] = None ) → padded_latents

Parametreler

  • latents — Hedef slot için isteğe bağlı önceden hesaplanmış gürültü. Şekil (B, C, 1, H', W') olup H' ve W' latent uzay boyutlarıdır. None olduğunda rastgele gürültü örneklenir.

Dönüş değeri

padded_latents

[B, max_patches, C, pt, ph, pw] target_mask: [B, max_patches] (hedef yamalar için True) shape_list: her bileşen için örnek başına (t, h, w) demetlerinin listesi

Hedef gürültü + referans görüntü latentleri ile 6D dolgulu latent tensör hazırlayın.

JoyImageEditPlusPipelineOutput

sınıf diffusers.JoyImageEditPlusPipelineOutput

< >

( images: typing.Union[typing.List[PIL.Image.Image], numpy.ndarray] )

JoyImage Edit Plus çoklu görüntü düzenleme hatları için çıktı sınıfı.

Update on GitHub