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 es un modelo de generación de texto a imagen en el espacio de píxeles de Photoroom. Un PRXTransformer2DModel de ~7B desruidifica imágenes RGB crudas directamente: no se necesita un VAE. El modelo se condiciona con un codificador de texto Qwen3-VL y utiliza flow matching, donde el transformer predice la imagen limpia en cada paso (x-prediction). La resolución de generación se introduce en la modulación del timestep para que el modelo sea consciente del tamaño objetivo.

Modelos disponibles

ModeloResoluciónDescripciónParámetros sugeridosdtype recomendado
Photoroom/prxpixel-t2i1024Modelo de espacio de píxeles ~7B con codificador de texto Qwen3-VL28 pasos, cfg=5.0torch.bfloat16

Carga del pipeline

PRXPixelPipeline requiere transformers >= 4.57 (la versión que introdujo Qwen3VLTextModel). Cargalo con 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")

Optimización de memoria

Para entornos con limitaciones de memoria:

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

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

Parámetros

  • transformer (PRXTransformer2DModel) — El denoiser PRX de ~7B parámetros. Para PRXPixel se construye con in_channels=3, un cuello de botella img_in y resolution_embeds=True, y se entrena para predecir la imagen limpia x0.
  • scheduler (FlowMatchEulerDiscreteScheduler) — Programador de flujo de correspondencia (flow-matching) utilizado para desruidar los latentes (en el espacio de píxeles).
  • text_encoder (PreTrainedModel) — El backbone de texto de Qwen3-VL utilizado para codificar los prompts (la torre de visión se descarta). Debe devolver un last_hidden_state.
  • tokenizer (PreTrainedTokenizerBase) — Tokenizer para text_encoder (generalmente cargado mediante AutoTokenizer).
  • default_sample_size (int, opcional, valor predeterminado 1024) — Altura/ancho predeterminados utilizados cuando no se proporciona ninguno a __call__.
  • prompt_max_tokens (int, opcional, valor predeterminado 256) — Número de tokens de texto al que se rellena o trunca el prompt antes de codificarlo.
  • noise_scale (float, opcional, valor predeterminado 2.0) — Escala aplicada al ruido gaussiano inicial. PRXPixel se entrena con una escala de ruido inicial no unitaria, por lo que la muestreo debe comenzar desde randn * noise_scale.

Pipeline para la generación de imágenes a partir de texto con el modelo PRXPixel.

PRXPixel es una pipeline independiente de texto a imagen en el espacio de píxeles. Ruidifica directamente el RGB crudo con un PRXTransformer2DModel de ~7B parámetros y no tiene VAE (la generación ocurre por completo en el espacio de píxeles, por lo que la salida desruidada es la imagen). Los prompts se codifican con un codificador de texto Qwen3-VL (la torre de visión se descarta). A diferencia de PRXPipeline, el transformer se entrena con x-predicción: en cada paso predice la imagen limpia x0, que se convierte en una velocidad de flow-matching antes del paso del scheduler. El muestreo comienza desde randn * noise_scale (noise_scale=2.0 por defecto) y la resolución predeterminada es de 1024px.

Este modelo hereda de DiffusionPipeline. Consulta la documentación de la clase superior para los métodos genéricos que la biblioteca implementa para todos los pipelines (como la descarga o el guardado, la ejecución en un dispositivo específico, etc.)

Ejemplos:

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

Parámetros

  • prompt (str o list[str], opcional) — El prompt o los prompts para guiar la generación de la imagen. Si no se define, hay que pasar prompt_embeds en su lugar.
  • negative_prompt (str, opcional, valor predeterminado "") — El prompt o prompts que no deben guiar la generación de la imagen. Se ignora cuando no se usa guía (es decir, se ignora si guidance_scale es menor que 1).
  • height (int, opcional, valor predeterminado default_sample_size) — La altura en píxeles de la imagen generada.
  • width (int, opcional, valor predeterminado default_sample_size) — El ancho en píxeles de la imagen generada.
  • num_inference_steps (int, opcional, valor predeterminado 28) — El número de pasos de desruido. Más pasos de desruido suelen conducir a una imagen de mayor calidad a costa de una inferencia más lenta.
  • timesteps (list[int], opcional) — Pasos de tiempo personalizados para usar en el proceso de desruido con programadores que admiten un argumento timesteps en su método set_timesteps. Si no se define, se usará el comportamiento predeterminado cuando se pase num_inference_steps. Debe estar en orden descendente.
  • guidance_scale (float, opcional, valor predeterminado 4.0) — Escala de guía definida en Classifier-Free Diffusion Guidance. guidance_scale se define como w de la ecuación 2 del Imagen Paper. La escala de guía se habilita estableciendo guidance_scale > 1. Una escala de guía más alta fomenta la generación de imágenes estrechamente vinculadas al prompt de texto, generalmente a costa de una menor calidad de imagen.
  • num_images_per_prompt (int, opcional, valor predeterminado 1) — El número de imágenes que se generarán por indicación.
  • generator (torch.Generator o list[torch.Generator], opcional) — Un generador o una lista de generadores de torch para hacer la generación determinista.
  • latents (torch.Tensor, opcional) — Latentes ruidosos pregenerados, muestreados de una distribución gaussiana, que se usarán como entradas para la generación de imágenes. Se pueden utilizar para ajustar la misma generación con diferentes prompts. Si no se proporcionan, se generará un tensor de latentes mediante muestreo usando el generator aleatorio suministrado.
  • prompt_embeds (torch.FloatTensor, opcional) — Incrustaciones de texto pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. ponderación de prompts. Si no se proporcionan, las incrustaciones de texto se generarán a partir del argumento de entrada prompt.
  • negative_prompt_embeds (torch.FloatTensor, opcional) — Incrustaciones de texto negativas pregeneradas. Se pueden usar para ajustar fácilmente las entradas de texto, p. ej. el ponderado del prompt. Si no se proporcionan y guidance_scale > 1, se generarán incrustaciones negativas a partir de una cadena vacía.
  • prompt_attention_mask (torch.BoolTensor, opcional) — Máscara de atención pregenerada para prompt_embeds. Si no se proporciona, la máscara de atención se generará a partir del argumento de entrada prompt.
  • negative_prompt_attention_mask (torch.BoolTensor, opcional) — Máscara de atención pregenerada para negative_prompt_embeds. Si no se proporciona y guidance_scale > 1, se generará la máscara de atención a partir de una cadena vacía.
  • output_type (str, opcional, valor predeterminado "pil") — El formato de salida de la imagen generada. Elija entre PIL: PIL.Image.Image o np.array.
  • return_dict (bool, opcional, valor predeterminado True) — Indica si se debe devolver un PRXPipelineOutput en lugar de una tupla simple.
  • use_resolution_binning (bool, opcional, valor predeterminado True) — Si se establece en True, la altura y el ancho solicitados se mapean primero a las resoluciones más cercanas utilizando bins de relación de aspecto predefinidos. Después de que los latentes generados se decodifican en imágenes, se redimensionan de nuevo a la resolución solicitada. Útil para generar imágenes no cuadradas en resoluciones óptimas.
  • callback_on_step_end (Callable, opcional) — Una función que se llama al final de cada paso de desruido durante la inferencia. La función se llama con los siguientes argumentos: callback_on_step_end(self, step, timestep, callback_kwargs). callback_kwargs incluirá una lista de todos los tensores especificados por callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, opcional) — La lista de entradas de tensor para la función callback_on_step_end. Los tensores especificados en la lista se pasarán como argumento callback_kwargs. Solo podrá incluir tensores que estén listados en el atributo ._callback_tensor_inputs.

Devuelve

PRXPipelineOutput o tuple

PRXPipelineOutput si return_dict es True, de lo contrario una `tuple. Al devolver una tupla, el primer elemento es una lista con las imágenes generadas.

Función invocada al llamar a la pipeline para la generación.

Ejemplos:

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

Comprueba que todas las entradas estén en el formato correcto.

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 )

Codifica el prompt de texto usando el codificador y el tokenizador de texto estándar, o usa embeddings precalculados.

prepare_latents

< >

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

Prepara los latentes iniciales para el proceso de difusión.

PRXPixel se entrena con una escala de ruido inicial no unitaria, por lo que el ruido muestreado se multiplica por self.config.noise_scale.

PRXPipelineOutput

clase diffusers.pipelines.prx.PRXPipelineOutput

< >

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

Parámetros

  • images (list[PIL.Image.Image] o np.ndarray) — lista de imágenes PIL desruidas de longitud batch_size o array de numpy de forma (batch_size, height, width, num_channels). Las imágenes PIL o el array de numpy presentan las imágenes desruidas del pipeline de difusión.

Clase de salida para las tuberías de PRX.

Update on GitHub