Diffusers documentation
PRX Pixel
PRX Pixel
PRXPixel, Photoroom tarafından geliştirilen piksel uzayında metinden görüntüye üretim modelidir. ~7B parametreli PRXTransformer2DModel, ham RGB görüntülerini doğrudan gürültüden arındırır — VAE gerekmez. Model, Qwen3-VL metin kodlayıcısıyla koşullandırılır ve akış eşleştirmesi (flow matching) kullanır; bu yöntemde dönüştürücü (transformer), her adımda temiz görüntüyü tahmin eder (x-prediction). Üretim çözünürlüğü, zaman adımı modülasyonuna (timestep modulation) aktarılır, böylece model hedef boyutun farkındadır.
Mevcut modeller
| Model | Çözüm | Açıklama | Önerilen parametreler | Önerilen dtype |
|---|---|---|---|---|
Photoroom/prxpixel-t2i | 1024 | Qwen3-VL metin kodlayıcılı, piksel uzayında ~7B model | 28 adım, cfg=5.0 | torch.bfloat16 |
Hattın yüklenmesi
PRXPixelPipeline, Qwen3VLTextModel'i tanıtan sürüm olan transformers >= 4.57 sürümünü gerektirir. from_pretrained() ile yükleyin:
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")Bellek Optimizasyonu
Bellek kısıtlamalı ortamlar için:
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
sınıf diffusers.PRXPixelPipeline
< source >( 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 )
Parametreler
- transformer (
PRXTransformer2DModel) — ~7B parametreli PRX gürültü azaltıcı. PRXPixel içinin_channels=3, bir darboğazimg_inveresolution_embeds=Trueile oluşturulur ve temiz görüntüyüx0tahmin etmesi için eğitilir. - scheduler (FlowMatchEulerDiscreteScheduler) — (piksel uzayındaki) latentleri gürültüden arındırmak için kullanılan akış eşleştirme zamanlayıcısı.
- text_encoder (
PreTrainedModel) — İfadeleri kodlamak için kullanılan Qwen3-VL metin omurgası (görüntü kulesi atılır). Birlast_hidden_statedöndürmelidir. - tokenizer (
PreTrainedTokenizerBase) —text_encoderiçin tokenizer (genellikleAutoTokenizerüzerinden yüklenir). - default_sample_size (
int, isteğe bağlı, varsayılan 1024) —__call__'e yükseklik/genişlik verilmediğinde kullanılan varsayılan yükseklik/genişlik. - prompt_max_tokens (
int, isteğe bağlı, varsayılan 256) — Kodlamadan önce prompt'un doldurulacağı/kısaltılacağı metin token sayısı. - noise_scale (
float, isteğe bağlı, varsayılan 2.0) — Başlangıç Gauss gürültüsüne uygulanan ölçek. PRXPixel, birim olmayan bir başlangıç gürültü ölçeğiyle eğitildiğinden örneklemerandn * noise_scaleile başlamalıdır.
PRXPixel modeliyle metinden görüntüye üretim hattı.
PRXPixel bağımsız, piksel uzayında metinden görüntüye bir iş akışıdır. Ham RGB verisini doğrudan ~7B parametreli PRXTransformer2DModel ile gürültüden arındırır ve VAE içermez (üretim tamamen piksel uzayında gerçekleştiği için gürültüsü arındırılmış çıktı görseldir). İfadeler, Qwen3-VL metin kodlayıcısıyla kodlanır (görüntü kulesi atılır). PRXPipeline'den farklı olarak, dönüştürücü x-prediction ile eğitilir: her adımda temiz görüntüyü x0 tahmin eder ve bu, zamanlayıcı adımı öncesinde akış eşleştirme hızına dönüştürülür. Örnekleme randn * noise_scale ile başlar (varsayılan noise_scale=2.0) ve varsayılan çözünürlük 1024px'tir.
Bu model DiffusionPipeline sınıfından devralır. Kütüphanenin tüm pipeline'lar için uyguladığı genel yöntemler (indirme veya kaydetme, belirli bir cihazda çalıştırma vb.) için üst sınıf belgelendirmesine bakın.
Örnekler:
>>> 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__
< source >( 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
Parametreler
- 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. - negative_prompt (
str, isteğe bağlı, varsayılan"") — Görsel üretimini yönlendirmemesi istenen istem veya istemler. Yönlendirme kullanılmadığında yok sayılır (yaniguidance_scale1'den küçükse yok sayılır). - height (
int, isteğe bağlı, varsayılandefault_sample_size) — Oluşturulan görüntünün piksel cinsinden yüksekliği. - width (
int, isteğe bağlı, varsayılandefault_sample_size) — Oluşturulan görüntünün piksel cinsinden genişliği. - num_inference_steps (
int, isteğe bağlı, varsayılan 28) — 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ı) —timestepsargümanını destekleyen zamanlayıcılarla gürültü azaltma süreci için kullanılacak özel zaman adımları.set_timestepsyönteminde. Tanımlanmamışsa,num_inference_stepsgeçirildiğinde varsayılan davranış kullanılacaktır. Azalan sırada olmalıdır. - guidance_scale (
float, isteğe bağlı, varsayılan 4.0) — Classifier-Free Diffusion Guidance'de tanımlandığı gibi yönlendirme ölçeği.guidance_scale, Imagen Paper'daki 2. denkleminw'si olarak tanımlanır. Yönlendirme ölçeği,guidance_scale > 1olarak ayarlanarak etkinleştirilir. Daha yüksek yönlendirme ölçeği,promptile yakından ilişkili görsellerin üretilmesini teşvik eder, genellikle daha düşük görsel kalitesi pahasına. - num_images_per_prompt (
int, isteğe bağlı, varsayılan 1) — Her istem için oluşturulacak görsel sayısı. - 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ı) — Gaussian dağılımdan örneklenmiş, gürültülü ve önceden oluşturulmuş latents; görüntü üretimi için girdi olarak kullanılabilir. Farklı istemlerle aynı üretimi ayarlamak için kullanılabilir. Sağlanmazsa, sağlanan rastgelegeneratorkullanılarak örneklemeye dayalı bir latents tensörü oluşturulur. - prompt_embeds (
torch.FloatTensor, isteğe bağlı) — Önceden oluşturulmuş metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. prompt ağırlıklandırma. Sağlanmazsa, metin gömme değerleripromptgirdi argümanından oluşturulur. - negative_prompt_embeds (
torch.FloatTensor, isteğe bağlı) — Önceden oluşturulmuş negatif metin gömme değerleri. Metin girdilerini kolayca ayarlamak için kullanılabilir, ör. istem ağırlıklandırması. Sağlanmazsa veguidance_scale > 1ise, negatif gömme değerleri boş bir diziden oluşturulur. - prompt_attention_mask (
torch.BoolTensor, isteğe bağlı) —prompt_embedsiçin önceden oluşturulmuş dikkat maskesi. Sağlanmazsa, dikkat maskesipromptgirdi argümanından oluşturulur. - negative_prompt_attention_mask (
torch.BoolTensor, isteğe bağlı) —negative_prompt_embedsiçin önceden oluşturulmuş dikkat maskesi. Sağlanmazsa veguidance_scale > 1ise, dikkat maskesi boş bir diziden oluşturulur. - output_type (
str, isteğe bağlı, varsayılan"pil") — Görsel oluşturma çıktısının biçimi. Şunlardan birini seçin: PIL:PIL.Image.Imageveyanp.array. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — Düz bir tuple yerine PRXPipelineOutput döndürülüp döndürülmemesi. - use_resolution_binning (
bool, isteğe bağlı, varsayılanTrue) —Trueolarak ayarlanırsa, istenen yükseklik ve genişlik, önceden tanımlı en-boy oranı sınıfları kullanılarak en yakın çözümlere eşlenir. Oluşturulan latentler görüntülere çözümlendikten sonra, istenen çözünürlüğe yeniden boyutlandırılır. Optimal çözünürlüklerde kare olmayan görüntüler üretmek için faydalıdır. - callback_on_step_end (
Callable, isteğe bağlı) — Çıkarım sırasında her gürültü azaltma adımının sonunda çağrılan bir işlev. İşlev aşağıdaki argümanlarla çağrılır:callback_on_step_end(self, step, timestep, callback_kwargs).callback_kwargs,callback_on_step_end_tensor_inputsile belirtilen tüm tensörlerin listesini içerir. - callback_on_step_end_tensor_inputs (
list, isteğe bağlı) —callback_on_step_endişlevi için girdi tensörlerinin listesi. Listede belirtilen tensörlercallback_kwargsargümanı olarak geçirilir. Yalnızca._callback_tensor_inputsözniteliğinde listelenen tensörleri dahil edebilirsiniz.
Dönüş değeri
PRXPipelineOutput veya tuple
return_dict True ise PRXPipelineOutput, aksi halde bir `tuple döner. Tuple döndürüldüğünde, ilk öğe üretilen görsellerin listesidir.
Üretim için pipeline çağrıldığında tetiklenen işlev.
Örnekler:
>>> 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
< source >( 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 )
Tüm girdilerin doğru formatta olduğunu kontrol edin.
encode_prompt
< source >( 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 )
Standart metin kodlayıcı ve belirteçleyiciyi kullanarak metin komutunu kodlayın veya önceden hesaplanmış gömme değerlerini kullanın.
prepare_latents
< source >( batch_size: intnum_channels_latents: intheight: intwidth: intdtype: dtypedevice: devicegenerator: typing.Optional[torch.Generator] = Nonelatents: typing.Optional[torch.Tensor] = None )
Difüzyon süreci için başlangıç latenslerini hazırlar.
PRXPixel, birim olmayan bir başlangıç gürültü ölçeğiyle eğitilir; bu nedenle örneklenen gürültü self.config.noise_scale ile çarpılır.
PRXPipelineOutput
sınıf diffusers.pipelines.prx.PRXPipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Parametreler
PRX hatları için çıktı sınıfı.