Diffusers documentation
JoyAI-Image-Edit-Plus
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
< source >( 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__
< 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
المعاملات
- 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
< source >( 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
< 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
المعاملات
- 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
< source >( images: typing.Union[typing.List[PIL.Image.Image], numpy.ndarray] )
فئة الإخراج لخطوط أنابيب تحرير الصور المتعددة في JoyImage Edit Plus.