Diffusers documentation
PRX Pixel
PRX Pixel
PRXPixel adalah model generasi teks-ke-gambar di ruang piksel oleh Photoroom. PRXTransformer2DModel berukuran ~7B melakukan denoising pada gambar RGB mentah secara langsung — tidak diperlukan VAE. Model ini dikondisikan oleh encoder teks Qwen3-VL
dan menggunakan flow matching di mana transformer memprediksi gambar bersih pada setiap langkah (x-prediction). Resolusi
generasi dimasukkan ke dalam modulasi timestep sehingga model menyadari ukuran target.
Model yang tersedia
| Model | Resolusi | Deskripsi | Parameter yang disarankan | dtype yang direkomendasikan |
|---|---|---|---|---|
Photoroom/prxpixel-t2i | 1024 | Model ruang piksel ~7B dengan pengkode teks Qwen3-VL | 28 langkah, cfg=5.0 | torch.bfloat16 |
Memuat pipeline
PRXPixelPipeline membutuhkan transformers >= 4.57 (versi yang memperkenalkan Qwen3VLTextModel). Muat dengan 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")Optimasi Memori
Untuk lingkungan dengan keterbatasan memori:
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
kelas 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 )
Parameter
- transformer (
PRXTransformer2DModel) — Denoiser PRX dengan ~7B parameter. Untuk PRXPixel, model ini dibangun denganin_channels=3, bottleneckimg_in, danresolution_embeds=True, serta dilatih untuk memprediksi gambar bersihx0. - scheduler (FlowMatchEulerDiscreteScheduler) — Scheduler flow-matching yang digunakan untuk menghilangkan noise pada latents (ruang piksel).
- text_encoder (
PreTrainedModel) — Backbone teks Qwen3-VL yang digunakan untuk mengkodekan prompt (menara visi dibuang). Harus mengembalikanlast_hidden_state. - tokenizer (
PreTrainedTokenizerBase) — Tokenizer untuktext_encoder(biasanya dimuat melaluiAutoTokenizer). - default_sample_size (
int, opsional, default 1024) — Tinggi/lebar default yang digunakan ketika tidak ada yang diberikan ke__call__. - prompt_max_tokens (
int, opsional, default 256) — Jumlah token teks yang menjadi target padding/truncation prompt sebelum encoding. - noise_scale (
float, opsional, default 2.0) — Skala yang diterapkan pada noise Gaussian awal. PRXPixel dilatih dengan skala noise awal yang tidak satu, sehingga sampling harus dimulai darirandn * noise_scale.
Pipeline untuk generasi teks-ke-gambar dengan model PRXPixel.
PRXPixel adalah pipeline teks-ke-gambar ruang piksel yang berdiri sendiri. Model ini melakukan denoising pada RGB mentah secara langsung dengan PRXTransformer2DModel berparameter ~7B dan tidak memiliki VAE (generasi terjadi sepenuhnya di ruang piksel, sehingga output hasil denoising adalah gambarnya). Prompt dikodekan dengan text encoder Qwen3-VL (vision tower dibuang). Berbeda dengan PRXPipeline, transformer dilatih dengan x-prediction: pada setiap langkah, model memprediksi gambar bersih x0, yang kemudian dikonversi menjadi kecepatan flow-matching sebelum langkah scheduler. Sampling dimulai dari randn * noise_scale (dengan noise_scale=2.0 secara default) dan resolusi default adalah 1024px.
Model ini mewarisi dari DiffusionPipeline. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua pipeline (seperti mengunduh atau menyimpan, menjalankan pada perangkat tertentu, dll.)
Contoh:
>>> 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
Parameter
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embedssebagai gantinya. - negative_prompt (
str, opsional, default"") — Prompt atau prompt-prompt yang tidak digunakan untuk memandu generasi gambar. Diabaikan saat tidak menggunakan panduan (yaitu, diabaikan jikaguidance_scalekurang dari1). - height (
int, opsional, defaultnyadefault_sample_size) — Tinggi gambar yang dihasilkan dalam piksel. - width (
int, opsional, defaultnyadefault_sample_size) — Lebar gambar yang dihasilkan dalam piksel. - num_inference_steps (
int, opsional, default 28) — Jumlah langkah denoising. Semakin banyak langkah denoising, biasanya menghasilkan gambar dengan kualitas lebih tinggi, namun dengan biaya inferensi yang lebih lambat. - timesteps (
list[int], opsional) — Timesteps kustom untuk digunakan dalam proses denoising dengan scheduler yang mendukung argumentimestepsdi metodeset_timestepsmereka. Jika tidak didefinisikan, perilaku default saatnum_inference_stepsdilewatkan akan digunakan. Harus dalam urutan menurun. - guidance_scale (
float, opsional, default 4.0) — Skala panduan seperti yang didefinisikan dalam Classifier-Free Diffusion Guidance.guidance_scaledidefinisikan sebagaiwdari persamaan 2. dari Imagen Paper. Skala panduan diaktifkan dengan mengaturguidance_scale > 1. Skala panduan yang lebih tinggi mendorong generasi gambar yang sangat terkait denganpromptteks, biasanya dengan mengorbankan kualitas gambar yang lebih rendah. - num_images_per_prompt (
int, opsional, default 1) — Jumlah gambar yang akan dihasilkan per prompt. - generator (
torch.Generatorataulist[torch.Generator], opsional) — Satu atau daftar generator torch untuk membuat proses generasi menjadi deterministik. - latents (
torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya, diambil dari distribusi Gaussian, untuk digunakan sebagai input untuk generasi gambar. Dapat digunakan untuk menyesuaikan generasi yang sama dengan prompt yang berbeda. Jika tidak disediakan, tensor latents akan dibuat dengan pengambilan sampel menggunakangeneratoracak yang diberikan. - prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks yang sudah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pemberatan prompt. Jika tidak disediakan, embedding teks akan dihasilkan dari argumen inputprompt. - negative_prompt_embeds (
torch.FloatTensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya. Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya penimbangan prompt. Jika tidak disediakan danguidance_scale > 1, embedding negatif akan dibuat dari string kosong. - prompt_attention_mask (
torch.BoolTensor, opsional) — Attention mask yang telah dibuat sebelumnya untukprompt_embeds. Jika tidak disediakan, attention mask akan dibuat dari argumen inputprompt. - negative_prompt_attention_mask (
torch.BoolTensor, opsional) — Attention mask yang telah dibuat sebelumnya untuknegative_prompt_embeds. Jika tidak disediakan danguidance_scale > 1, attention mask akan dibuat dari string kosong. - output_type (
str, opsional, defaultnya"pil") — Format output dari generate image. Pilih antara PIL:PIL.Image.Imageataunp.array. - return_dict (
bool, opsional, defaultnyaTrue) — Apakah akan mengembalikan PRXPipelineOutput alih-alih tuple biasa. - use_resolution_binning (
bool, opsional, defaultTrue) — Jika diset keTrue, tinggi dan lebar yang diminta pertama kali dipetakan ke resolusi terdekat menggunakan bin rasio aspek yang predefined. Setelah latents yang dihasilkan didekode menjadi gambar, ukuran gambar dikembalikan ke resolusi yang diminta. Berguna untuk menghasilkan gambar non-persegi pada resolusi optimal. - callback_on_step_end (
Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising selama inferensi. Fungsi ini dipanggil dengan argumen berikut:callback_on_step_end(self, step, timestep, callback_kwargs).callback_kwargsakan berisi daftar semua tensor sesuai yang ditentukan olehcallback_on_step_end_tensor_inputs. - callback_on_step_end_tensor_inputs (
list, opsional) — Daftar input tensor untuk fungsicallback_on_step_end. Tensor yang ditentukan dalam daftar akan diteruskan sebagai argumencallback_kwargs. Anda hanya dapat menyertakan tensor yang terdaftar dalam atribut._callback_tensor_inputs.
Mengembalikan
PRXPipelineOutput atau tuple
PRXPipelineOutput jika return_dict bernilai True, selain itu berupa `tuple. Saat mengembalikan tuple, elemen pertama adalah daftar berisi gambar yang dihasilkan.
Fungsi yang dipanggil saat memanggil pipeline untuk generasi.
Contoh:
>>> 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 )
Periksa bahwa semua input berada dalam format yang benar.
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 )
Enkode prompt teks menggunakan encoder teks dan tokenizer standar, atau gunakan embedding yang sudah dihitung sebelumnya.
prepare_latents
< source >( batch_size: intnum_channels_latents: intheight: intwidth: intdtype: dtypedevice: devicegenerator: typing.Optional[torch.Generator] = Nonelatents: typing.Optional[torch.Tensor] = None )
Siapkan latens awal untuk proses difusi.
PRXPixel dilatih dengan skala noise awal yang tidak satu, sehingga noise yang disampelkan dikalikan dengan self.config.noise_scale.
PRXPipelineOutput
kelas diffusers.pipelines.prx.PRXPipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Kelas output untuk pipeline PRX.