Diffusers documentation
PRX Pixel
PRX Pixel
PRXPixelは、Photoroomによるピクセル空間でのテキストから画像を生成するモデルです。約7BのPRXTransformer2DModelが生のRGB画像を直接デノイズするため、VAEは不要です。このモデルはQwen3-VLテキストエンコーダーで条件付けられ、フローマッチングを用いています。この方式では、トランスフォーマーが各ステップでクリーンな画像を予測します(x-prediction)。生成解像度はタイムステップのモジュレーションに与えられるため、モデルはターゲットサイズを認識できます。
利用可能なモデル
| モデル | 解決 | 説明 | 推奨パラメータ | 推奨されるdtype |
|---|---|---|---|---|
Photoroom/prxpixel-t2i | 1024 | Qwen3-VL テキストエンコーダーを備えたピクセル空間の約7Bモデル | 28ステップ、cfg=5.0 | torch.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
< 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 )
パラメータ
- 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__
< 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
パラメータ
- 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
< 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 )
すべての入力が正しい形式であることを確認してください。
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 )
標準的なテキストエンコーダーとトークナイザーを使用してテキストプロンプトをエンコードするか、事前計算された埋め込みを使用します。
prepare_latents
< source >( 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
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
PRX パイプライン用の出力クラスです。