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 هو نموذج أساسي متعدد الوسائط موحّد لفهم الصور، وتوليد الصور من النص، وتحرير الصور وفق تعليمات. يجمع بين نموذج لغة كبير متعدد الوسائط (MLLM) بحجم 8B، ومحوّل انتشار متعدد الوسائط (MMDiT) بحجم 16B.

JoyAI-Image-Edit-Plus هو نموذج لتحرير الصور بتوجيه تعليمات متعددة الصور، حيث يقبل عدة صور مرجعية وتعليمات نصية لتوليد صورة جديدة تجمع بين العناصر من الصور المرجعية وفقاً للتعليمات. يدعم النموذج من 1 إلى 5 صور مرجعية لكل عينة.

النموذجالوصفتنزيل
JoyAI-Image-Edit-Plusالتحرير الموجّه بالتعليمات لصور متعددة مع تركيب العناصر من مراجع متعددة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

فئة diffusers.JoyImageEditPlusPipeline

< >

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

المعاملات

  • scheduler (FlowMatchEulerDiscreteScheduler) — جدول زمني يُستخدم بالاقتران مع transformer لإزالة الضوضاء من كائنات الصورة المُرمّزة.
  • vae (AutoencoderKLWan) — نموذج الترميز التبايني التلقائي (VAE) لتشفير الصور وفك تشفيرها إلى التمثيلات الكامنة ومنها.
  • text_encoder (Qwen3VLForConditionalGeneration) — مُشفِّر نص متعدد الوسائط لتشفير الأوامر مع فهم الصور المضمنة.
  • tokenizer (Qwen2Tokenizer) — مُقسِّم للنصوص لمعالجة النصوص.
  • transformer (JoyImageEditPlusTransformer3DModel) — بنية Transformer الشرطية (MMDiT) لإزالة الضوضاء من كامنات الصورة المُرمّزة.
  • processor (Qwen3VLProcessor) — معالج للمدخلات متعددة الوسائط (نص + صور).
  • text_token_max_length (int، القيمة الافتراضية 2048) — الحد الأقصى لطول الرموز لتشفير النص.

خط أنابيب الانتشار لتحرير الصور متعددة الصور الموجّه بالتعليمات باستخدام JoyImage Edit Plus.

يدعم عدة صور مرجعية بدقة مختلفة. يتم ترميز كل صورة مرجعية بشكل مستقل باستخدام VAE وتقطيعها إلى رقعات (patches)، ثم يتم دمجها مع رقعات الضوضاء المستهدفة لإزالة الضوضاء بشكل مشترك.

__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

المعاملات

  • images (list[Image.Image] أو list[list[Image.Image]]، اختياري) — صور مرجعية للتحرير. يمكن أن يكون لكل صورة دقة مختلفة. إذا تم تقديم قائمة مسطحة، فسيتم اعتبارها عينة واحدة تحتوي على مراجع متعددة.
  • prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.
  • height (int، اختياري) — ارتفاع الصورة المولّدة بالبكسلات. إذا كان None، يُحدَّد من الصورة المرجعية الأخيرة.
  • width (int، اختياري) — عرض الصورة المولدة بالبكسلات. إذا كان None، يُحدَّد من الصورة المرجعية الأخيرة.
  • num_inference_steps (int، اختياري، القيمة الافتراضية 30) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال.
  • timesteps (list[int]، اختياري) — خطوات زمنية مخصصة لاستخدامها في عملية إزالة الضوضاء. إذا لم تُعرَّف، يُستخدم تباعد متساوٍ.
  • sigmas (list[float]، اختياري) — قيم sigmas مخصصة لاستخدامها في عملية إزالة الضوضاء.
  • guidance_scale (float، اختياري، القيمة الافتراضية 4.0) — مقياس التوجيه الحر من التصنيف. تشجع القيم الأعلى النموذج على توليد صور أكثر توافقاً مع prompt على حساب انخفاض جودة الصورة.
  • negative_prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي لا تُستخدم لتوجيه توليد الصورة. إذا لم يُعرَّف، يُستخدم موجّه فارغ للتوجيه الحر من التصنيف.
  • generator (torch.Generator أو list[torch.Generator]، اختياري) — مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.
  • latents (torch.Tensor، اختياري) — كائنات ضجيج مُولّدة مسبقًا تُستخدم كمدخلات لتوليد الصور.
  • prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة.
  • prompt_embeds_mask (torch.Tensor، اختياري) — قناع الانتباه (Attention mask) لتضمينات النص المُولَّدة مسبقًا.
  • negative_prompt_embeds (torch.Tensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا.
  • negative_prompt_embeds_mask (torch.Tensor، اختياري) — قناع الانتباه (Attention mask) لتضمينات النص السلبية المُولَّدة مسبقًا.
  • output_type (str، اختياري، القيمة الافتراضية "pil") — تنسيق الصورة المولّدة. اختر بين "pil" (PIL.Image.Image)، "np" (np.ndarray)، "pt" (torch.Tensor)، أو "latent" للحصول على مخرجات كامنة خام.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع JoyImageEditPlusPipelineOutput بدلاً من tuple عادي.
  • callback_on_step_end (Callable, اختياري) — دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء، مع الحُجج التالية: خط الأنابيب، فهرس الخطوة، خطوة الزمن، وقاموس من مدخلات تينسور الدالة الاستدعائية.
  • callback_on_step_end_tensor_inputs (list[str]، اختياري، القيمة الافتراضية ["latents"]) — قائمة مدخلات المصفوفات (tensors) لدالة callback_on_step_end.
  • max_sequence_length (int، اختياري، القيمة الافتراضية 4096) — أقصى طول للتسلسل في مُشفِّر النص.

يعيد

JoyImageEditPlusPipelineOutput أو tuple

إذا كان return_dict هو True، يُعاد JoyImageEditPlusPipelineOutput، وإلا يُعاد tuple يكون عنصره الأول قائمة من الصور المولّدة.

الدالة التي تُستدعى عند استدعاء خط الأنابيب للتوليد.

أمثلة:

>>> 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 )

ترميز الموجهات التي تحتوي على رموز <image> مضمنة عبر معالج Qwen3-VL.

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

المعاملات

  • latents — ضوضاء مسبقة الحساب اختيارية للفتحة المستهدفة. الشكل (B, C, 1, H', W') حيث H' وW' هما أبعاد فضاء الكمون. عند تعيين None، يتم أخذ عينة عشوائية من الضوضاء.

يعيد

padded_latents

[B, max_patches, C, pt, ph, pw] target_mask: [B, max_patches] (True for target patches) shape_list: قائمة لكل عينة من tuples (t, h, w) لكل مكون

جهّز متجهًا كامنًا مبطنًا بأبعاد 6D يتضمن الضوضاء المستهدفة والمتجهات الكامنة لصورة المرجع.

JoyImageEditPlusPipelineOutput

فئة diffusers.JoyImageEditPlusPipelineOutput

< >

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

فئة الإخراج لخطوط أنابيب تحرير الصور المتعددة في JoyImage Edit Plus.

Update on GitHub