Diffusers documentation
Stable Cascade
Stable Cascade
このモデルはWürstchenアーキテクチャを基盤として構築されており、Stable Diffusionなどの他のモデルとの主な違いは、はるかに小さい潜在空間で動作する点にあります。なぜこれが重要なのでしょうか。潜在空間が小さいほど、推論は高速になり、トレーニングのコストは安価になります。潜在空間はどの程度小さいのでしょうか。Stable Diffusionは圧縮率8を使用しており、1024x1024の画像は128x128にエンコードされます。一方、Stable Cascadeは圧縮率42を実現しており、シャープな再構成を維持しながら、1024x1024の画像を24x24にエンコードすることが可能です。その後、テキスト条件付きモデルは、この高圧縮された潜在空間内でトレーニングされます。このアーキテクチャの以前のバージョンでは、Stable Diffusion 1.5と比較して16倍のコスト削減を達成しました。
したがって、この種のモデルは、効率性が重要な用途に適しています。さらに、ファインチューニング、LoRA、ControlNet、IP-Adapter、LCMなどの既知の拡張機能も、この手法で利用可能です。
元のコードベースはStability-AI/StableCascadeで確認できます。
モデル概要
Stable Cascade は、Stage A、Stage B、Stage C の3つのモデルで構成されており、これらがカスケード(段階的処理)として画像を生成します。この仕組みにちなんで「Stable Cascade」という名称が付けられました。
Stage A & B は、Stable Diffusion における VAE の役割と同様に、画像の圧縮に使用されます。 ただし、この構成により、画像の圧縮率を大幅に高めることができます。Stable Diffusion のモデルは空間圧縮係数が 8 であり、1024 x 1024 の解像度の画像を 128 x 128 にエンコードするのに対し、Stable Cascade は圧縮係数 42 を実現しています。これにより、1024 x 1024 の画像を 24 x 24 にエンコードしながら、画像を正確にデコードすることが可能です。これにより、学習と推論のコストが安くなるという大きな利点があります。さらに、Stage C は、テキストプロンプトが与えられた際に、小さな 24 x 24 の潜在変数を生成する役割を担っています。
Stage C モデルは、小さな 24 x 24 の潜在変数 (latents) を処理し、テキストプロンプトを条件として潜在変数のノイズ除去を行います。このモデルは Cascade パイプラインの中で最も大きなコンポーネントであり、StableCascadePriorPipeline と組み合わせて使用することを想定しています。
Stage B と Stage A のモデルは StableCascadeDecoderPipeline と組み合わせて使用され、小さな 24 x 24 の潜在変数から最終的な画像を生成する役割を担います。
Stable Cascade モデルで使用できるデータ型にはいくつかの制限があります。
StableCascadePriorPipelineの公式チェックポイントは、torch.float16データ型をサポートしていません。代わりにtorch.bfloat16を使用してください。
StableCascadeDecoderPipelineでtorch.bfloat16データ型を使用するには、PyTorch 2.2.0 以降のインストールが必要です。StableCascadeCombinedPipelineは内部でStableCascadeDecoderPipelineを呼び出すため、StableCascadeCombinedPipelineでtorch.bfloat16を使用する場合も、PyTorch 2.2.0 以降が必要です。お使いの環境で PyTorch 2.2.0 以上をインストールできない場合、
StableCascadeDecoderPipelineはtorch.float16データ型を単独で使用できます。パイプライン用のフルプレシジョンまたはbf16版の重みをダウンロードし、重みをtorch.float16にキャストしてください。
使用例
import torch
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", variant="bf16", dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", variant="bf16", dtype=torch.float16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings.to(torch.float16),
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")ステージBおよびステージCモデルのLiteバージョンを使用する
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade-prior", subfolder="prior_lite")
decoder_unet = StableCascadeUNet.from_pretrained("stabilityai/stable-cascade", subfolder="decoder_lite")
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade.png")from_single_file で元のチェックポイントをロードする
from_single_file メソッドを通じて、StableCascadeUNet でのオリジナル形式のチェックポイントの読み込みがサポートされています。
import torch
from diffusers import (
StableCascadeDecoderPipeline,
StableCascadePriorPipeline,
StableCascadeUNet,
)
prompt = "an image of a shiba inu, donning a spacesuit and helmet"
negative_prompt = ""
prior_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_bf16.safetensors",
dtype=torch.bfloat16
)
decoder_unet = StableCascadeUNet.from_single_file(
"https://huggingface.co/stabilityai/stable-cascade/blob/main/stage_b_bf16.safetensors",
dtype=torch.bfloat16
)
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", prior=prior_unet, dtype=torch.bfloat16)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", decoder=decoder_unet, dtype=torch.bfloat16)
prior.enable_model_cpu_offload()
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=1,
num_inference_steps=20
)
decoder.enable_model_cpu_offload()
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings,
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images[0]
decoder_output.save("cascade-single-file.png")用途
直接利用
このモデルは、現時点では研究目的での利用を想定しています。研究対象となり得る分野やタスクには、以下が含まれます
- 生成モデルに関する研究。
- 有害なコンテンツを生成する可能性のあるモデルの安全なデプロイ。
- 生成モデルの限界やバイアスを探査し、理解すること。
- アート作品の生成、およびデザインやその他の芸術的プロセスにおける利用。
- 教育ツールやクリエイティブツールへの応用。
除外対象の用途については、以下に説明します。
範囲外の使用
このモデルは、人物や事象の事実的かつ真実的な表現として学習されていません。したがって、このモデルを使用してそのようなコンテンツを生成することは、このモデルの能力の範囲外です。このモデルは、Stability AIの適正利用ポリシーに違反するいかなる方法でも使用しないでください。
制約とバイアス
制約事項
- 顔や人物が正しく生成されない場合があります。
- モデルのオートエンコーディング部分は、損失を伴います。
StableCascadeCombinedPipeline
class diffusers.StableCascadeCombinedPipeline
< source >( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectiondecoder: StableCascadeUNetscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModelprior_prior: StableCascadeUNetprior_text_encoder: CLIPTextModelWithProjectionprior_tokenizer: CLIPTokenizerprior_scheduler: DDPMWuerstchenSchedulerprior_feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneprior_image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None )
パラメータ
- tokenizer (
CLIPTokenizer) — テキスト入力に使用するデコーダのトークナイザです。 - text_encoder (
CLIPTextModelWithProjection) — テキスト入力に使用されるデコーダーのテキストエンコーダー。 - decoder (
StableCascadeUNet) — デコーダー画像生成パイプラインで使用するデコーダーモデル。 - scheduler (
DDPMWuerstchenScheduler) — デコーダー画像生成パイプラインで使用するスケジューラー。 - vqgan (
PaellaVQModel) — デコーダー画像生成パイプラインで使用する VQGAN モデル。 - prior_prior (
StableCascadeUNet) — prior パイプラインで使用される prior モデル。 - prior_text_encoder (
CLIPTextModelWithProjection) — テキスト入力に使用される事前テキストエンコーダー。 - prior_tokenizer (
CLIPTokenizer) — テキスト入力に使用する事前トークナイザーです。 - prior_scheduler (
DDPMWuerstchenScheduler) — prior パイプラインで使用するスケジューラです。 - prior_feature_extractor (CLIPImageProcessor) —
生成された画像から特徴量を抽出し、
image_encoderの入力として使用するモデル。 - prior_image_encoder (
CLIPVisionModelWithProjection) — 凍結された CLIP 画像エンコーダー (clip-vit-large-patch14)。
Stable Cascade を使用したテキストから画像への生成を行う統合 Pipeline。
このモデルは DiffusionPipeline を継承しています。すべてのパイプラインに対してライブラリが実装している汎用的なメソッド(ダウンロードや保存、特定のデバイスでの実行など)については、スーパークラスのドキュメントを参照してください。
__call__
< source >( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 512width: int = 512prior_num_inference_steps: int = 60prior_guidance_scale: float = 4.0num_inference_steps: int = 12decoder_guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueprior_callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Noneprior_callback_on_step_end_tensor_inputs: list = ['latents']callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
パラメータ
- prompt (
strまたはlist[str]) — prior と decoder における画像生成を導くプロンプト、またはプロンプトのリスト。 - images (
torch.Tensor、PIL.Image.Image、list[torch.Tensor]、list[PIL.Image.Image]、任意) — prior の画像生成をガイドするための画像です。 - negative_prompt (
strまたはlist[str]、省略可) — 画像生成をガイドしないプロンプトです。ガイダンスを使用していない場合は無視されます(guidance_scaleが1未満の場合は無視されます)。 - prompt_embeds (
torch.Tensor, 任意) — prior 用の事前生成されたテキスト埋め込みです。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うことができます。指定されない場合、prompt引数からテキスト埋め込みが生成されます。 - prompt_embeds_pooled (
torch.Tensor, 任意) — prior 用の事前生成されたテキスト埋め込みです。テキスト入力の調整、例えばプロンプトの重み付けなどを簡単に実行できます。指定されない場合、prompt引数からテキスト埋め込みが生成されます。 - negative_prompt_embeds (
torch.Tensor, 任意) — prior 用の事前生成されたネガティブテキスト埋め込みです。テキスト入力の調整、例えばプロンプトの重み付けなどを簡単に実行できます。指定されない場合、negative_prompt入力引数から negative_prompt_embeds が生成されます。 - negative_prompt_embeds_pooled (
torch.Tensor, 任意) — Prior 用の事前生成されたネガティブテキスト埋め込みです。テキスト入力の調整、例えばプロンプトの重み付けなどを簡単に実行できます。指定されない場合、negative_prompt入力引数から negative_prompt_embeds が生成されます。 - num_images_per_prompt (
int、任意、デフォルトは 1) — プロンプトごとに生成する画像の数。 - height (
int、任意、デフォルト値は 512) — 生成される画像のピクセル単位の縦幅です。 - width (
int, 任意、デフォルトは 512) — 生成される画像の幅(ピクセル単位)。 - prior_guidance_scale (
float、任意、デフォルト値は 4.0) — Classifier-Free Diffusion Guidance で定義されるガイダンススケールです。prior_guidance_scaleは、Imagen Paper の数式 2 のwとして定義されます。prior_guidance_scale > 1を設定することで、ガイダンススケールが有効になります。ガイダンススケールを高くすると、promptのテキストと密接に関連した画像の生成が促されますが、通常は画像の品質が低下する傾向があります。 - prior_num_inference_steps (
int | dict[float, int]、任意、デフォルト値は 60)— 事前のデノイジングステップ数です。デノイジングステップ数を増やすと、推論速度が遅くなる代わりに、通常はより高品質な画像が得られます。より具体的なタイムステップの間隔を指定する場合は、カスタマイズしたprior_timestepsを渡すことができます。 - num_inference_steps (
int、任意、デフォルト値は 12)— デコーダーのノイズ除去ステップ数です。ステップ数が多いほど、推論速度が遅くなる代わりに、より高品質な画像が得られる傾向があります。より具体的なタイムステップの間隔を指定する場合は、カスタマイズしたtimestepsを渡すことができます。 - decoder_guidance_scale (
float、任意、デフォルト値は 0.0) — Classifier-Free Diffusion Guidance で定義されているガイダンススケールです。guidance_scaleは、Imagen Paper の数式 2 のwとして定義されています。guidance_scale > 1を設定することで、ガイダンススケールが有効になります。ガイダンススケールを高くすると、promptのテキストと密接に関連した画像の生成が促されますが、通常は画像の品質が低下する傾向があります。 - generator (
torch.Generatorまたはlist[torch.Generator]、省略可) — 生成を決定論的にするためのtorch ジェネレーター1つまたはリスト。 - latents (
torch.Tensor, 任意) — 画像生成の入力として使用する、ガウス分布からサンプリングされた事前生成されたノイズ付き潜在変数。異なるプロンプトで同じ生成を調整するために使用できます。指定されない場合、指定されたランダムgeneratorを使用してサンプリングを行い、潜在変数テンソルが生成されます。 - output_type (
str, 省略可能、デフォルトは"pil") — 画像生成の出力形式です。"pil"(PIL.Image.Image)、"np"(np.array)、または"pt"(torch.Tensor) から選択します。 - return_dict (
bool、省略可能、デフォルトはTrue) —Trueの場合、通常のタプルではなく ImagePipelineOutput を返します。 - prior_callback_on_step_end (
Callable, 任意) — 推論中の各デノイジングステップの終了時に呼び出される関数です。この関数は、以下の引数とともに呼び出されます:prior_callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)。 - prior_callback_on_step_end_tensor_inputs (
list、任意) —prior_callback_on_step_end関数へのテンソル入力の一覧です。このリストに指定されたテンソルは、callback_kwargs引数として渡されます。パイプラインクラスの._callback_tensor_inputs属性に列挙されている変数のみを、このリストに含めることができます。 - callback_on_step_end (
Callable, 省略可) — 推論中の各デノイジングステップの終了時に呼び出される関数です。この関数は、以下の引数とともに呼び出されます:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)。callback_kwargsには、callback_on_step_end_tensor_inputsで指定されたすべてのテンソルのリストが含まれます。 - callback_on_step_end_tensor_inputs (
list、任意) —callback_on_step_end関数へのテンソル入力の一覧です。このリストで指定されたテンソルは、callback_kwargs引数として渡されます。パイプラインクラスの._callback_tensor_inputs属性にリストされている変数のみを、このリストに含めることができます。
生成用のパイプラインを呼び出したときに実行される関数。
例:
>>> import torch
>>> from diffusers import StableCascadeCombinedPipeline
>>> pipe = StableCascadeCombinedPipeline.from_pretrained(
... "stabilityai/stable-cascade", variant="bf16", torch_dtype=torch.bfloat16
... )
>>> pipe.enable_model_cpu_offload()
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> images = pipe(prompt=prompt)enable_model_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
enable_sequential_cpu_offload とは異なり、accelerate を使用してすべてのモデルを CPU にオフロードし、パフォーマンスへの影響を最小限に抑えながらメモリ使用量を削減します。このメソッドでは、forward メソッドが呼び出されたときに、モデル全体を一度に GPU へ移動し、次のモデルが実行されるまで GPU に保持されます。enable_sequential_cpu_offload と比較するとメモリ削減効果は低くなりますが、unet の反復的な実行により、パフォーマンスは大幅に向上します。
enable_sequential_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
🤗 Accelerate を使用して、すべてのモデル(unet、text_encoder、vae、および safety checker の state dict)を CPU にオフロードし、メモリ使用量を大幅に削減します。モデルは torch.device('meta') に移動され、特定のサブモジュールの forward メソッドが呼び出されたときにのみ GPU にロードされます。オフロードはサブモジュール単位で行われます。enable_model_cpu_offload を使用する場合よりもメモリ削減効果は高いですが、パフォーマンスは低くなります。
StableCascadePriorPipeline
クラス diffusers.StableCascadePriorPipeline
< source >( tokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionprior: StableCascadeUNetscheduler: DDPMWuerstchenSchedulerresolution_multiple: float = 42.67feature_extractor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = Noneimage_encoder: transformers.models.clip.modeling_clip.CLIPVisionModelWithProjection | None = None )
パラメータ
- prior (
StableCascadeUNet) — テキストおよび/または画像の埋め込みから画像の埋め込みを近似するための Stable Cascade の prior です。 - text_encoder (
CLIPTextModelWithProjection) — 凍結されたテキストエンコーダー (laion/CLIP-ViT-bigG-14-laion2B-39B-b160k)。 - feature_extractor (CLIPImageProcessor) —
生成された画像から特徴を抽出し、
image_encoderの入力として使用するモデル。 - image_encoder (
CLIPVisionModelWithProjection) — 凍結された CLIP 画像エンコーダー (clip-vit-large-patch14)。 - tokenizer (
CLIPTokenizer) — CLIPTokenizer クラスのトークナイザー。 - scheduler (
DDPMWuerstchenScheduler) —priorと組み合わせて画像埋め込みを生成するために使用するスケジューラ。 - resolution_multiple (‘float’、任意、デフォルト値は 42.67) — 生成される複数の画像のデフォルトの解像度です。
Stable Cascade用のイメージ・プライヤーを生成するためのPipeline。
このモデルは DiffusionPipeline を継承しています。すべてのパイプラインに対してライブラリが実装している汎用的なメソッド(ダウンロードや保存、特定のデバイスでの実行など)については、スーパークラスのドキュメントを参照してください。
__call__
< source >( prompt: str | list[str] | None = Noneimages: typing.Union[torch.Tensor, list[torch.Tensor], PIL.Image.Image, list[PIL.Image.Image]] = Noneheight: int = 1024width: int = 1024num_inference_steps: int = 20timesteps: list = Noneguidance_scale: float = 4.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Noneimage_embeds: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int | None = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pt'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
パラメータ
- prompt (
strまたはlist[str]) — 画像生成をガイドするためのプロンプト、またはプロンプトのリスト。 - images (
torch.Tensor、PIL.Image.Image、list[torch.Tensor]またはlist[PIL.Image.Image]、任意) — 事前生成を条件づけるために使用する参照画像です。指定された場合、画像から画像埋め込みが導出され、テキストプロンプトと結合されます。 - height (
int、任意、デフォルト値は 1024) — 生成される画像のピクセル単位の縦幅です。 - width (
int、任意、デフォルト値は 1024) — 生成される画像の幅(ピクセル単位)。 - num_inference_steps (
int、任意、デフォルト値は 60)— デノイジングのステップ数です。デノイジングのステップ数を増やすと、推論速度が遅くなる代わりに、通常はより高品質な画像が得られます。 - timesteps (
list[float], 任意) —timesteps引数をサポートするスケジューラーのset_timestepsメソッドで、デノイジングプロセスに使用するカスタムタイムステップ。未定義の場合、num_inference_stepsが渡された際のデフォルトの動作が使用されます。降順で指定する必要があります。 - guidance_scale (
float、任意、デフォルト値は 8.0) — Classifier-Free Diffusion Guidance で定義されているガイダンススケールです。decoder_guidance_scaleは、Imagen Paper の数式 2 のwとして定義されています。decoder_guidance_scale > 1を設定することで、ガイダンススケールが有効になります。ガイダンススケールを高くすると、promptのテキストと密接に関連した画像の生成が促されますが、通常は画像の品質が低下する傾向があります。 - negative_prompt (
strまたはlist[str]、省略可) — 画像生成をガイドしないプロンプトです。ガイダンスを使用していない場合は無視されます(decoder_guidance_scaleが1未満の場合は無視されます)。 - prompt_embeds (
torch.Tensor, 任意) — 事前に生成されたテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt入力引数からテキスト埋め込みが生成されます。 - prompt_embeds_pooled (
torch.Tensor, 任意) — 事前に生成されたプールのテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うことができます。 指定されない場合、prompt入力引数からプールのテキスト埋め込みが生成されます。 - negative_prompt_embeds (
torch.Tensor, 任意) — 事前に生成されたネガティブなテキスト埋め込みです。テキスト入力の調整、例えばプロンプトの重み付けなどを簡単に実行できます。指定されない場合、negative_prompt入力引数から negative_prompt_embeds が生成されます。 - negative_prompt_embeds_pooled (
torch.Tensor, 省略可) — 事前に生成されたネガティブなプーリング済みテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを簡単に実行できます。指定されない場合、negative_prompt入力引数から negative_prompt_embeds_pooled が生成されます。 - image_embeds (
torch.Tensor, 任意) — 事前に生成された画像埋め込み。画像入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、image引数が存在する場合は、そこから画像埋め込みが生成されます。 - num_images_per_prompt (
int、任意、デフォルトは 1) — プロンプトごとに生成する画像の数。 - generator (
torch.Generatorまたはlist[torch.Generator]、省略可) — 生成を決定論的にするためのtorch ジェネレーター1つまたはリスト。 - latents (
torch.Tensor, 任意) — 画像生成の入力として使用する、ガウス分布からサンプリングされた事前生成されたノイズ付き潜在変数。異なるプロンプトで同じ生成を調整するために使用できます。指定されない場合、指定されたランダムgeneratorを使用してサンプリングを行い、潜在変数テンソルが生成されます。 - output_type (
str, 省略可能、デフォルトは"pil") — 画像生成の出力形式です。"pil"(PIL.Image.Image)、"np"(np.array)、または"pt"(torch.Tensor) から選択します。 - return_dict (
bool、省略可能、デフォルトはTrue) —Trueの場合、通常のタプルではなく ImagePipelineOutput を返します。 - callback_on_step_end (
Callable, 省略可) — 推論中の各デノイジングステップの終了時に呼び出される関数です。この関数は、以下の引数とともに呼び出されます:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)。callback_kwargsには、callback_on_step_end_tensor_inputsで指定されたすべてのテンソルのリストが含まれます。 - callback_on_step_end_tensor_inputs (
list、任意) —callback_on_step_end関数へのテンソル入力の一覧です。このリストで指定されたテンソルは、callback_kwargs引数として渡されます。パイプラインクラスの._callback_tensor_inputs属性にリストされている変数のみを、このリストに含めることができます。
生成用のパイプラインを呼び出したときに実行される関数。
例:
>>> import torch
>>> from diffusers import StableCascadePriorPipeline
>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
... "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)StableCascadePriorPipelineOutput
class diffusers.pipelines.stable_cascade.pipeline_stable_cascade_prior.StableCascadePriorPipelineOutput
< source >( image_embeddings: typing.Union[torch.Tensor, numpy.ndarray]prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray]prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray]negative_prompt_embeds: typing.Union[torch.Tensor, numpy.ndarray]negative_prompt_embeds_pooled: typing.Union[torch.Tensor, numpy.ndarray] )
WuerstchenPriorPipelineの出力クラスです。
StableCascadeDecoderPipeline
class diffusers.StableCascadeDecoderPipeline
< source >( decoder: StableCascadeUNettokenizer: CLIPTokenizertext_encoder: CLIPTextModelWithProjectionscheduler: DDPMWuerstchenSchedulervqgan: PaellaVQModellatent_dim_scale: float = 10.67 )
パラメータ
- tokenizer (
CLIPTokenizer) — CLIPのトークナイザーです。 - text_encoder (
CLIPTextModelWithProjection) — CLIPのテキストエンコーダーです。 - decoder (
StableCascadeUNet) — Stable Cascade のデコーダー unet です。 - vqgan (
PaellaVQModel) — VQGANモデルです。 - scheduler (
DDPMWuerstchenScheduler) —priorと組み合わせて画像埋め込みを生成するために使用するスケジューラ。 - latent_dim_scale (float,
optional, デフォルト値は 10.67) — 画像埋め込みから VQ 潜在空間のサイズを決定するための倍率です。画像埋め込みが height=24、width=24 の場合、トレーニング条件に合わせるために、VQ 潜在形状は height=int(2410.67)=256、width=int(2410.67)=256 である必要があります。
Stable Cascadeモデルから画像を生成するためのPipelineです。
このモデルは DiffusionPipeline を継承しています。すべてのパイプラインに対してライブラリが実装している汎用的なメソッド(ダウンロードや保存、特定のデバイスでの実行など)については、スーパークラスのドキュメントを参照してください。
__call__
< source >( image_embeddings: typing.Union[torch.Tensor, list[torch.Tensor]]prompt: str | list[str] = Nonenum_inference_steps: int = 10guidance_scale: float = 0.0negative_prompt: str | list[str] | None = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_pooled: typing.Optional[torch.Tensor] = Nonenum_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents'] )
パラメータ
- image_embeddings (
torch.Tensorまたはlist[torch.Tensor]) — 画像から抽出された、または Prior Model によって生成された Image Embeddings。 - prompt (
strまたはlist[str]) — 画像生成をガイドするためのプロンプト、またはプロンプトのリスト。 - num_inference_steps (
int、任意、デフォルト値は 12)— デノイジングのステップ数です。デノイジングのステップ数を増やすと、推論速度が遅くなる代わりに、通常はより高品質な画像が得られます。 - guidance_scale (
float、任意、デフォルト値は 0.0) — Classifier-Free Diffusion Guidance で定義されているガイダンススケールです。decoder_guidance_scaleは、Imagen Paper の数式 2 のwとして定義されています。decoder_guidance_scale > 1を設定することで、ガイダンススケールが有効になります。ガイダンススケールを高くすると、promptのテキストと密接に関連した画像の生成が促されますが、通常は画像の品質が低下する傾向があります。 - negative_prompt (
strまたはlist[str]、省略可) — 画像生成をガイドしないプロンプトです。ガイダンスを使用していない場合は無視されます(decoder_guidance_scaleが1未満の場合は無視されます)。 - prompt_embeds (
torch.Tensor, 任意) — 事前に生成されたテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt入力引数からテキスト埋め込みが生成されます。 - prompt_embeds_pooled (
torch.Tensor, 任意) — 事前に生成されたプールのテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うことができます。 指定されない場合、prompt入力引数からプールのテキスト埋め込みが生成されます。 - negative_prompt_embeds (
torch.Tensor, 任意) — 事前に生成されたネガティブなテキスト埋め込みです。テキスト入力の調整、例えばプロンプトの重み付けなどを簡単に実行できます。指定されない場合、negative_prompt入力引数から negative_prompt_embeds が生成されます。 - negative_prompt_embeds_pooled (
torch.Tensor, 省略可) — 事前に生成されたネガティブなプーリング済みテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを簡単に実行できます。指定されない場合、negative_prompt入力引数から negative_prompt_embeds_pooled が生成されます。 - num_images_per_prompt (
int、任意、デフォルトは 1) — プロンプトごとに生成する画像の数。 - generator (
torch.Generatorまたはlist[torch.Generator]、省略可) — 生成を決定論的にするためのtorch ジェネレーター1つまたはリスト。 - latents (
torch.Tensor, 任意) — 画像生成の入力として使用する、ガウス分布からサンプリングされた事前生成されたノイズ付き潜在変数。異なるプロンプトで同じ生成を調整するために使用できます。指定されない場合、指定されたランダムgeneratorを使用してサンプリングを行い、潜在変数テンソルが生成されます。 - output_type (
str, 省略可能、デフォルトは"pil") — 画像生成の出力形式です。"pil"(PIL.Image.Image)、"np"(np.array)、または"pt"(torch.Tensor) から選択します。 - return_dict (
bool、省略可能、デフォルトはTrue) —Trueの場合、通常のタプルではなく ImagePipelineOutput を返します。 - callback_on_step_end (
Callable, 省略可) — 推論中の各デノイジングステップの終了時に呼び出される関数です。この関数は、以下の引数とともに呼び出されます:callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)。callback_kwargsには、callback_on_step_end_tensor_inputsで指定されたすべてのテンソルのリストが含まれます。 - callback_on_step_end_tensor_inputs (
list、任意) —callback_on_step_end関数へのテンソル入力の一覧です。このリストで指定されたテンソルは、callback_kwargs引数として渡されます。パイプラインクラスの._callback_tensor_inputs属性にリストされている変数のみを、このリストに含めることができます。
生成用のパイプラインを呼び出したときに実行される関数。
例:
>>> import torch
>>> from diffusers import StableCascadePriorPipeline, StableCascadeDecoderPipeline
>>> prior_pipe = StableCascadePriorPipeline.from_pretrained(
... "stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16
... ).to("cuda")
>>> gen_pipe = StableCascadeDecoderPipeline.from_pretrain(
... "stabilityai/stable-cascade", torch_dtype=torch.float16
... ).to("cuda")
>>> prompt = "an image of a shiba inu, donning a spacesuit and helmet"
>>> prior_output = pipe(prompt)
>>> images = gen_pipe(prior_output.image_embeddings, prompt=prompt)