Diffusers documentation
JoyAI-Image-Edit-Plus
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.
| Model | Açıklama | İndir |
|---|---|---|
| JoyAI-Image-Edit-Plus | Birden fazla referanstan öğe kompozisyonu ile çoklu görüntü talimat yönlendirmeli düzenleme | Hugging 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
< source >( 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
transformerile 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ılan2048) — 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__
< source >( 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]veyalist[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 (
strveyalist[str], isteğe bağlı) — Görsel üretimi yönlendirmek için istem veya istemler. Tanımlanmadıysa bunun yerineprompt_embedsparametresinin geçirilmesi gerekir. - height (
int, isteğe bağlı) — Oluşturulan görüntünün piksel cinsinden yüksekliği.Noneise, 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.Noneise, son referans görüntüsünden belirlenir. - num_inference_steps (
int, isteğe bağlı, varsayılan30) — 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ılan4.0) — Sınıflandırıcı-ücretsiz yönlendirme ölçeği. Daha yüksek değerler, modelinpromptile daha uyumlu görseller üretmesini teşvik eder; bunun bedeli ise daha düşük görsel kalitedir. - negative_prompt (
strveyalist[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.Generatorveyalist[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ılanTrue) — 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_endişlevi için girdi tensörlerinin listesi. - max_sequence_length (
int, isteğe bağlı, varsayılan4096) — 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
< source >( 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
< source >( 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')olupH'veW'latent uzay boyutlarıdır.Noneolduğ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
< source >( 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ı.