Diffusers documentation

PRX Pixel

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

PRX Pixel

PRXPixel هو نموذج لتوليد الصور من النص في فضاء البكسلات من تطوير Photoroom. يقوم نموذج PRXTransformer2DModel بحجم ~7B بإزالة الضوضاء من صور RGB الخام مباشرةً — دون الحاجة إلى VAE. يعتمد النموذج على مشفر نصي Qwen3-VL، ويستخدم مطابقة التدفق حيث يتنبأ الترانسفورمر بالصورة النظيفة في كل خطوة (تنبؤ x). يُدخل دقة التوليد في تعديل خطوة الزمن ليصبح النموذج على دراية بالحجم المستهدف.

النماذج المتاحة

النموذجدقةالوصفالمعلمات المقترحةنوع البيانات الموصى به
Photoroom/prxpixel-t2i1024نموذج في فضاء البكسل بحجم ~7B مع مشفّر نصوص Qwen3-VL28 خطوة، cfg=5.0torch.bfloat16

تحميل خط الأنابيب

يتطلب PRXPixelPipeline استخدام transformers >= 4.57 (الإصدار الذي أدخل Qwen3VLTextModel). حمّله باستخدام from_pretrained():

import torch
from diffusers import PRXPixelPipeline

pipe = PRXPixelPipeline.from_pretrained("Photoroom/prxpixel-t2i", dtype=torch.bfloat16)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

prompt = "A front-facing portrait of a lion in the golden savanna at sunset."
image = pipe(prompt, num_inference_steps=28, guidance_scale=5.0).images[0]
image.save("prxpixel_output.png")

تحسين الذاكرة

للمحيطات ذات القيود على الذاكرة:

import torch
from diffusers import PRXPixelPipeline

pipe = PRXPixelPipeline.from_pretrained("Photoroom/prxpixel-t2i", dtype=torch.bfloat16)
pipe.enable_model_cpu_offload()

# Or use sequential CPU offload for even lower memory
pipe.enable_sequential_cpu_offload()

PRXPixelPipeline

فئة diffusers.PRXPixelPipeline

< >

( transformer: PRXTransformer2DModelscheduler: FlowMatchEulerDiscreteSchedulertext_encoder: PreTrainedModeltokenizer: transformers.models.auto.tokenization_auto.AutoTokenizer | transformers.tokenization_utils_base.PreTrainedTokenizerBasedefault_sample_size: int | None = 1024prompt_max_tokens: int = 256noise_scale: float = 2.0 )

المعاملات

  • transformer (PRXTransformer2DModel) — مزيل الضوضاء PRX ذو حوالي 7 مليارات من المعاملات. في حالة PRXPixel، يُبنى هذا النموذج باستخدام in_channels=3، وعنق زجاجة img_in، و resolution_embeds=True، ويُدرَّب على التنبؤ بالصورة النظيفة x0.
  • scheduler (FlowMatchEulerDiscreteScheduler) — جدول زمني لتطابق التدفق (Flow-matching) يُستخدم لإزالة الضوضاء من الكمونيات (في فضاء البكسلات).
  • text_encoder (PreTrainedModel) — جذع النص الخاص بـ Qwen3-VL المستخدم لتشفير الأوامر (يتم استبعاد برج الرؤية). يجب أن يعيد last_hidden_state.
  • tokenizer (PreTrainedTokenizerBase) — مُقسِّم النصوص الخاص بـ text_encoder (يُحمَّل عادةً عبر AutoTokenizer).
  • default_sample_size (int، اختياري، القيمة الافتراضية 1024) — الارتفاع/العرض الافتراضي المستخدم عندما لا يُمرَّر أيٌّ منهما إلى __call__.
  • prompt_max_tokens (int، اختياري، القيمة الافتراضية 256) — عدد رموز النص التي يتم ملء/قصّ المُوجِّه (prompt) إليها قبل الترميز.
  • noise_scale (float، اختياري، القيمة الافتراضية 2.0) — المقياس المطبَّق على الضوضاء الغاوسية الأولية. يتم تدريب PRXPixel بمقياس ضوضاء أولية غير وحدة، لذا يجب أن يبدأ أخذ العينات من randn * noise_scale.

خط أنابيب لتوليد الصور من النص باستخدام نموذج PRXPixel.

PRXPixel هو خط أنابيب مستقل لتوليد الصور من النص في فضاء البكسل. يقوم بإزالة الضوضاء من بيانات RGB الخام مباشرةً باستخدام نموذج PRXTransformer2DModel بحجم حوالي 7 مليارات معامل، ولا يحتوي على VAE (حيث يحدث التوليد بالكامل في فضاء البكسل، لذا فإن المخرج بعد إزالة الضوضاء هو الصورة نفسها). يتم ترميز الأوامر النصية باستخدام مشفر نصوص Qwen3-VL (مع استبعاد برج الرؤية). على عكس PRXPipeline، يتم تدريب المحوّل باستخدام التنبؤ بـ x: ففي كل خطوة يتنبأ بالصورة النظيفة x0، والتي تُحوَّل إلى سرعة مطابقة للتدفق قبل خطوة المجدول. يبدأ العينة من randn * noise_scale (القيمة الافتراضية لـ noise_scale=2.0)، والدقة الافتراضية هي 1024 بكسل.

يرث هذا النموذج من DiffusionPipeline. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع خطوط الأنابيب (مثل التنزيل أو الحفظ، أو التشغيل على جهاز معين، وما إلى ذلك).

أمثلة:

>>> import torch
>>> from diffusers import PRXPixelPipeline

>>> pipe = PRXPixelPipeline.from_pretrained("Photoroom/prxpixel-t2i", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")

>>> prompt = "A front-facing portrait of a lion in the golden savanna at sunset."
>>> image = pipe(prompt, num_inference_steps=28, guidance_scale=5.0).images[0]
>>> image.save("prxpixel_output.png")

__call__

< >

( prompt: str | list[str] = Nonenegative_prompt: str = ''height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 28timesteps: list = Noneguidance_scale: float = 4.0num_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneprompt_attention_mask: typing.Optional[torch.BoolTensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.BoolTensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueuse_resolution_binning: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] ) → PRXPipelineOutput or tuple

المعاملات

  • prompt (str أو list[str]، اختياري) — الموجّه أو الموجّهات التي تُوجّه توليد الصورة. إذا لم يُعرَّف، يجب تمرير prompt_embeds بدلاً من ذلك.
  • negative_prompt (str، اختياري، القيمة الافتراضية "") — الموجّه أو الموجّهات التي لا ينبغي استخدامها لتوجيه توليد الصورة. يتم تجاهلها عند عدم استخدام التوجيه (أي يتم تجاهلها إذا كانت قيمة guidance_scale أقل من 1).
  • height (int، اختياري، القيمة الافتراضية default_sample_size) — ارتفاع الصورة المولّدة بالبكسل.
  • width (int، اختياري، القيمة الافتراضية default_sample_size) — عرض الصورة المولدة بالبكسل.
  • num_inference_steps (int، اختياري، القيمة الافتراضية 28) — عدد خطوات إزالة الضوضاء. تؤدي زيادة عدد خطوات إزالة الضوضاء عادةً إلى صورة بجودة أعلى على حساب بطء الاستدلال.
  • timesteps (list[int], اختياري) — خطوات زمنية مخصصة لاستخدامها في عملية إزالة الضوضاء مع المجدولين الذين يدعمون معامل timesteps في طريقة set_timesteps الخاصة بهم. إذا لم يُعرَّف، فسيتم استخدام السلوك الافتراضي عند تمرير num_inference_steps. يجب أن تكون بترتيب تنازلي.
  • guidance_scale (float، اختياري، القيمة الافتراضية 4.0) — مقياس التوجيه كما هو مُعرَّف في Classifier-Free Diffusion Guidance. يُعرَّف guidance_scale على أنه w من المعادلة 2 في Imagen Paper. يتم تفعيل مقياس التوجيه عن طريق تعيين guidance_scale > 1. يشجع مقياس التوجيه الأعلى على توليد صور مرتبطة ارتباطًا وثيقًا بـ prompt النصي، وعادةً على حساب انخفاض جودة الصورة.
  • num_images_per_prompt (int، اختياري، القيمة الافتراضية 1) — عدد الصور التي سيتم توليدها لكل موجه.
  • generator (torch.Generator أو list[torch.Generator]، اختياري) — مولّد واحد أو قائمة من مولّدات torch لجعل التوليد حتميًا.
  • latents (torch.Tensor، اختياري) — كائنات latents ضجيجية مُولّدة مسبقًا، مُستخرجة من توزيع غاوسي، تُستخدم كمدخلات لتوليد الصور. يمكن استخدامها لتعديل نفس التوليد باستخدام أوامر مختلفة. إذا لم تُقدَّم، سيتم توليد كائن latents عن طريق الاستخراج باستخدام generator العشوائي المُقدَّم.
  • prompt_embeds (torch.FloatTensor, اختياري) — تضمينات نصية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم، فسيتم توليد تضمينات النص من معامل الإدخال prompt.
  • negative_prompt_embeds (torch.FloatTensor، اختياري) — تضمينات نصية سلبية مُولّدة مسبقًا. يمكن استخدامها لتعديل مدخلات النص بسهولة، مثلًا وزن الموجه. إذا لم تُقدَّم وكانت guidance_scale > 1، فسيتم توليد التضمينات السلبية من سلسلة فارغة.
  • prompt_attention_mask (torch.BoolTensor، اختياري) — قناع الانتباه المُولَّد مسبقًا لـprompt_embeds. إذا لم يُقدَّم، فسيتم توليد قناع الانتباه من معامل الإدخال prompt.
  • negative_prompt_attention_mask (torch.BoolTensor، اختياري) — قناع الانتباه المُولَّد مسبقًا لـnegative_prompt_embeds. إذا لم يُقدَّم وكان guidance_scale > 1، سيتم توليد قناع الانتباه من نص فارغ.
  • output_type (str، اختياري، القيمة الافتراضية "pil") — صيغة مخرجات توليد الصورة. اختر بين PIL: PIL.Image.Image أو np.array.
  • return_dict (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إرجاع PRXPipelineOutput بدلاً من tuple عادي.
  • use_resolution_binning (bool، اختياري، القيمة الافتراضية True) — إذا تم ضبطه على True، فإن الارتفاع والعرض المطلوبين يُخضعان أولاً لعملية إسقاط إلى أقرب دقة باستخدام صناديق نسبة العرض إلى الارتفاع المعرّفة مسبقاً. وبعد فك ترميز الكمّيات الكامنة الناتجة إلى صور، يتم تغيير حجمها مرة أخرى إلى الدقة المطلوبة. مفيد لتوليد صور غير مربعة بأدقّ دقة ممكنة.
  • callback_on_step_end (Callable، اختياري) — دالة تُستدعى في نهاية كل خطوة إزالة ضوضاء أثناء الاستدلال. تُستدعى الدالة بالحجج التالية: callback_on_step_end(self, step, timestep, callback_kwargs). ستتضمن callback_kwargs قائمة بجميع المصفوفات كما حددتها callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list، اختياري) — قائمة مدخلات المصفوفات (tensors) الخاصة بدالة callback_on_step_end. سيتم تمرير المصفوفات المحددة في القائمة كحجة callback_kwargs. لن تتمكن من تضمين سوى المصفوفات المدرجة في الخاصية ._callback_tensor_inputs.

يعيد

PRXPipelineOutput أو tuple

PRXPipelineOutput إذا كان return_dict True، وإلا فسيكون `tuple. عند إرجاع tuple، يكون العنصر الأول قائمة تحتوي على الصور المولّدة.

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

أمثلة:

>>> import torch
>>> from diffusers import PRXPixelPipeline

>>> pipe = PRXPixelPipeline.from_pretrained("Photoroom/prxpixel-t2i", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")

>>> prompt = "A front-facing portrait of a lion in the golden savanna at sunset."
>>> image = pipe(prompt, num_inference_steps=28, guidance_scale=5.0).images[0]
>>> image.save("prxpixel_output.png")

check_inputs

< >

( prompt: str | list[str]height: intwidth: intguidance_scale: floatcallback_on_step_end_tensor_inputs: list[str] | None = Noneprompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = None )

تحقق من أن جميع المدخلات بصيغة صحيحة.

encode_prompt

< >

( prompt: str | list[str]device: typing.Optional[torch.device] = Nonedo_classifier_free_guidance: bool = Truenegative_prompt: str = ''num_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.FloatTensor] = Nonenegative_prompt_embeds: typing.Optional[torch.FloatTensor] = Noneprompt_attention_mask: typing.Optional[torch.BoolTensor] = Nonenegative_prompt_attention_mask: typing.Optional[torch.BoolTensor] = Nonetokenizer_max_length: int | None = Noneskip_text_cleaning: bool = False )

ترميز موجه النص باستخدام مُرمِّز النص ومُجزِّئ النص القياسيين، أو استخدام التضمينات المحسوبة مسبقًا.

prepare_latents

< >

( batch_size: intnum_channels_latents: intheight: intwidth: intdtype: dtypedevice: devicegenerator: typing.Optional[torch.Generator] = Nonelatents: typing.Optional[torch.Tensor] = None )

جهّز الكمونيات الأولية لعملية الانتشار.

تتدرّب PRXPixel باستخدام مقياس ضوضاء أولي غير موحد، لذا تُضرب الضوضاء المُستخرجة في self.config.noise_scale.

PRXPipelineOutput

فئة diffusers.pipelines.prx.PRXPipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarray )

المعاملات

  • images (list[PIL.Image.Image] أو np.ndarray) — قائمة من صور PIL منزوعة الضوضاء بطول batch_size أو مصفوفة numpy بأبعاد (batch_size, height, width, num_channels). تمثل صور PIL أو مصفوفة numpy الصور منزوعة الضوضاء من خط أنابيب الانتشار.

فئة الإخراج لخطوط أنابيب PRX.

Update on GitHub