Diffusers documentation

PRX Pixel

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

PRX Pixel

PRXPixelは、Photoroomによるピクセル空間でのテキストから画像を生成するモデルです。約7BのPRXTransformer2DModelが生のRGB画像を直接デノイズするため、VAEは不要です。このモデルはQwen3-VLテキストエンコーダーで条件付けられ、フローマッチングを用いています。この方式では、トランスフォーマーが各ステップでクリーンな画像を予測します(x-prediction)。生成解像度はタイムステップのモジュレーションに与えられるため、モデルはターゲットサイズを認識できます。

利用可能なモデル

モデル解決説明推奨パラメータ推奨されるdtype
Photoroom/prxpixel-t2i1024Qwen3-VL テキストエンコーダーを備えたピクセル空間の約7Bモデル28ステップ、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

class 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) — 約70億パラメータのPRXデノイザーです。PRXPixelでは、in_channels=3、ボトルネック付きのimg_in、およびresolution_embeds=Trueで構築され、クリーンな画像x0を予測するように学習されます。
  • scheduler (FlowMatchEulerDiscreteScheduler) — (ピクセル空間の) latents をデノイズするために使用される Flow-matching スケジューラー。
  • text_encoder (PreTrainedModel) — プロンプトをエンコードするために使用される Qwen3-VL のテキストバックボーンです(ビジョンタワーは破棄されます)。 last_hidden_state を返す必要があります。
  • tokenizer (PreTrainedTokenizerBase) — text_encoder 用の Tokenizer(通常は AutoTokenizer を介して読み込まれます)。
  • default_sample_size (int、任意、デフォルト値は 1024) — __call__ に高さ/幅が指定されない場合に使用されるデフォルトの高さ/幅です。
  • prompt_max_tokens (int、任意、デフォルトは 256) — エンコード前にプロンプトがパディングまたは切り詰められるテキストトークンの数。
  • noise_scale (float、任意、デフォルト値は 2.0) — 初期ガウスノイズに適用されるスケール。PRXPixel は非 1 の初期ノイズスケールで学習されるため、サンプリングは randn * noise_scale から開始する必要があります。

PRXPixelモデルによるテキストから画像への生成を行うPipelineです。

PRXPixelは、独立したピクセル空間のテキストから画像への生成パイプラインです。約70億パラメータのPRXTransformer2DModelを使用して生RGBを直接ノイズ除去し、VAEは使用しません(生成は完全にピクセル空間で行われるため、ノイズ除去された出力がそのまま画像となります)。プロンプトはQwen3-VLのテキストエンコーダーでエンコードされます(ビジョンタワーは破棄されます)。PRXPipelineとは異なり、このトランスフォーマーはx-predictionで学習されています。各ステップでクリーンな画像x0を予測し、スケジューラーのステップの前にフローマッチングの速度に変換されます。サンプリングはrandn * noise_scale(デフォルトではnoise_scale=2.0)から始まり、デフォルトの解像度は1024pxです。

このモデルは 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[int] = 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[str] = ['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 は、Imagen Paper の式 2 の w として定義されています。guidance_scale > 1 を設定することでガイダンススケールが有効になります。ガイダンススケールを高くすると、prompt のテキストと密接に関連した画像の生成が促されますが、通常は画像の品質が低下する傾向があります。
  • num_images_per_prompt (int、任意、デフォルトは 1) — プロンプトごとに生成する画像の数。
  • generator (torch.Generator または list[torch.Generator]、省略可) — 生成を決定論的にするためのtorch ジェネレーター1つまたはリスト。
  • latents (torch.Tensor, 任意) — 画像生成の入力として使用する、ガウス分布からサンプリングされた事前生成されたノイズ付き潜在変数。異なるプロンプトで同じ生成を調整するために使用できます。指定されない場合、指定されたランダム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) — True の場合、通常のタプルではなく PRXPipelineOutput を返します。
  • 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、任意) — callback_on_step_end 関数へのテンソル入力のリストです。リストで指定されたテンソルは、callback_kwargs 引数として渡されます。含められるのは、._callback_tensor_inputs 属性に列挙されているテンソルのみです。

戻り値

PRXPipelineOutput または tuple

return_dictがTrueの場合、PRXPipelineOutputを返します。それ以外の場合は、`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 は、初期ノイズのスケールが 1 でない状態で学習されるため、サンプリングされたノイズは self.config.noise_scale 倍されます。

PRXPipelineOutput

クラス diffusers.pipelines.prx.PRXPipelineOutput

< >

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

パラメータ

  • images (list[PIL.Image.Image] または np.ndarray) — batch_size 長さのデノイズ済み PIL イメージのリスト、または (batch_size, height, width, num_channels) の形状を持つ numpy 配列。PIL イメージまたは numpy 配列は、拡散パイプラインのデノイズ済みイメージを表します。

PRX パイプライン用の出力クラスです。

Update on GitHub