Buckets:
Stable Diffusion XL
Stable Diffusion XL (SDXL) は、Dustin Podell、Zion English、Kyle Lacey、Andreas Blattmann、Tim Dockhorn、Jonas Müller、Joe Penna、Robin Rombach によって、SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis で提案されました。
論文の抄録は以下の通りです:
本稿では、テキストから画像を生成するための潜在拡散モデルであるSDXLを提案します。従来のStable Diffusionと比較して、SDXLは3倍大きいUNetバックボーンを活用しています。モデルのパラメータ数の増加は主に、より多くのアテンションブロックと、より大きなクロスアテンションコンテキストによるものです。これは、SDXLが第2のテキストエンコーダーを使用しているためです。私たちは複数の新しい条件付けスキームを設計し、複数のアスペクト比でSDXLを訓練しました。また、事後の画像から画像への技術を用いて、SDXLが生成したサンプルの視覚的忠実度を向上させるために使用されるリファインメントモデルも導入しました。SDXLは、従来のStable Diffusionと比較して性能が大幅に向上しており、ブラックボックスの最先端の画像生成器と競合する結果を達成していることを示しました。
ヒント
- 50ステップ未満でDPM++スケジューラーをSDXLに使用すると、ソルバーが数値的に不安定になるため、視覚的なアーティファクトが発生することが知られています。この問題を修正するには、ODE/SDEソルバーについて推奨事項を記載しているこのPRを参照してください。
- 画像品質を向上させるには、
use_karras_sigmas=Trueまたはlu_lambdas=Trueを設定してください euler_at_final=Trueを設定してください。等間隔ステップサイズを使用するソルバー(DPM++2M または DPM++2M SDE)を使用する場合です。
- 画像品質を向上させるには、
- ほとんどの SDXL チェックポイントは、画像サイズ 1024x1024 で最も良い結果を得られます。768x768 や 512x512 の画像サイズもサポートされていますが、結果の品質は劣ります。512x512 未満のサイズは推奨されず、stabilityai/stable-diffusion-xl-base-1.0 のようなデフォルトのチェックポイントでは、おそらく良好な結果は得られません。
- SDXLでは、学習に使用された各テキストエンコーダーに対して異なるプロンプトを渡すことができます。さらに、同じプロンプトの異なる部分を各テキストエンコーダーに渡すことも可能です。
- SDXLの出力画像は、image-to-image設定でリファイナーモデルを活用することで改善できます。
- SDXLでは、
negative_original_size、negative_crops_coords_top_left、negative_target_sizeを使用して、画像の解像度やクロップパラメータに対してモデルを負の条件付けを行うことができます。
公式のベースモデルとリファイナーモデルのチェックポイントについては、Stability AIのHub組織をご覧ください!
以下のライブラリがインストールされていることを確認してください。
# uncomment to install the necessary libraries in Colab
#!pip install -q diffusers transformers accelerate invisible-watermark>=0.2.0
生成された画像の識別を支援するために、invisible-watermark ライブラリのインストールを推奨します。invisible-watermark ライブラリがインストールされている場合、デフォルトで使用されます。ウォーターマーカーを無効にするには:
pipeline = StableDiffusionXLPipeline.from_pretrained(..., add_watermarker=False)
モデルのチェックポイントを読み込む
モデルの重みが Hub またはローカル上で個別のサブフォルダに保存されている場合、from_pretrained() メソッドを使用する必要があります。
from diffusers import StableDiffusionXLPipeline, StableDiffusionXLImg2ImgPipeline
import torch
pipeline = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
refiner = StableDiffusionXLImg2ImgPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0", dtype=torch.float16, use_safetensors=True, variant="fp16"
).to("cuda")
from_single_file() メソッドを使用して、単一ファイル形式(.ckpt または .safetensors)で保存されたモデルチェックポイントを、Hub からまたはローカルから読み込むこともできます。
from diffusers import StableDiffusionXLPipeline, StableDiffusionXLImg2ImgPipeline
import torch
pipeline = StableDiffusionXLPipeline.from_single_file(
"https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/blob/main/sd_xl_base_1.0.safetensors",
dtype=torch.float16
).to("cuda") # or "mps", "xpu", "cpu"
refiner = StableDiffusionXLImg2ImgPipeline.from_single_file(
"https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/blob/main/sd_xl_refiner_1.0.safetensors", dtype=torch.float16
).to("cuda")
テキストから画像へ
テキストから画像を生成する場合、テキストプロンプトを渡します。デフォルトでは、SDXLは最適な結果を得るために1024x1024の画像を生成します。heightとwidthパラメータを768x768または512x512に設定することもできますが、512x512未満ではうまく動作しない可能性が高いです。
from diffusers import AutoPipelineForText2Image
import torch
pipeline_text2image = AutoPipelineForText2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipeline_text2image(prompt=prompt).images[0]
image
画像から画像へ
画像から画像への生成では、SDXLは768x768から1024x1024の間の画像サイズで特に優れた性能を発揮します。初期画像と、画像を条件付けするためのテキストプロンプトを渡します:
from diffusers import AutoPipelineForImage2Image
from diffusers.utils import load_image, make_image_grid
# use from_pipe to avoid consuming additional memory when loading a checkpoint
pipeline = AutoPipelineForImage2Image.from_pipe(pipeline_text2image).to("cuda") # or "mps", "xpu", "cpu"
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl-text2img.png"
init_image = load_image(url)
prompt = "a dog catching a frisbee in the jungle"
image = pipeline(prompt, image=init_image, strength=0.8, guidance_scale=10.5).images[0]
make_image_grid([init_image, image], rows=1, cols=2)
インペインティング
インペインティングには、元の画像と、元の画像内で置き換えたい部分を指定するマスクが必要です。マスクされた領域に何を置き換えたいかを説明するプロンプトを作成してください。
from diffusers import AutoPipelineForInpainting
from diffusers.utils import load_image, make_image_grid
# use from_pipe to avoid consuming additional memory when loading a checkpoint
pipeline = AutoPipelineForInpainting.from_pipe(pipeline_text2image).to("cuda") # or "mps", "xpu", "cpu"
img_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl-text2img.png"
mask_url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/sdxl-inpaint-mask.png"
init_image = load_image(img_url)
mask_image = load_image(mask_url)
prompt = "A deep sea diver floating"
image = pipeline(prompt=prompt, image=init_image, mask_image=mask_image, strength=0.85, guidance_scale=12.5).images[0]
make_image_grid([init_image, mask_image, image], rows=1, cols=3)
画像品質の向上
SDXLには、ベースモデルからより高品質な画像を生成するために、低ノイズ段階の画像のノイズ除去に特化したリファイナーモデルが含まれています。リファイナーを使用するには、2つの方法があります。
- ベースモデルとリファイナーモデルを併用して、洗練された画像を生成します
- ベースモデルを使用して画像を生成し、その後、リファイナーモデルを使用して画像にさらに詳細を追加します(SDXLが元々トレーニングされていた方法です)。
ベース + リファイナーモデル
ベースモデルとリファイナーモデルを併用して画像を生成する場合、これはエキスパートデノイザーのアンサンブルと呼ばれます。エキスパートデノイザーのアンサンブルアプローチは、ベースモデルの出力をリファイナーモデルに渡す方法よりも、全体のデノイジングステップ数が少なく済むため、実行速度が大幅に速くなります。ただし、ベースモデルの出力にはまだ多くのノイズが含まれているため、その出力を直接確認することはできません。
…
from diffusers import DiffusionPipeline
import torch
base = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
refiner = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0",
text_encoder_2=base.text_encoder_2,
vae=base.vae,
dtype=torch.float16,
use_safetensors=True,
variant="fp16",
).to("cuda")
このアプローチを使用するには、各モデルがそれぞれのステージを処理するためのタイムステップ数を定義する必要があります。ベースモデルでは、これはdenoising_endパラメータによって制御され、リファイナモデルでは、denoising_startパラメータによって制御されます。
denoising_endとdenoising_startパラメータは、0 から 1 までの浮動小数点数である必要があります。これらのパラメータは、スケジューラによって定義される離散タイムステップの割合として表されます。strengthパラメータも使用している場合は、デノイジングステップ数はモデルが学習された離散タイムステップと宣言された小数点のカットオフによって決定されるため、strengthは無視されます。
ベースモデルが高ノイズのタイムステップでデノイジングの最初の80%を実行するようにdenoising_end=0.8を設定し、リファイナーモデルが低ノイズのタイムステップでデノイジングの最後の20%を実行するようにdenoising_start=0.8を設定します。ベースモデルの出力は、PIL画像ではなく潜在空間である必要があります。
prompt = "A majestic lion jumping from a big stone at night"
image = base(
prompt=prompt,
num_inference_steps=40,
denoising_end=0.8,
output_type="latent",
).images
image = refiner(
prompt=prompt,
num_inference_steps=40,
denoising_start=0.8,
image=image,
).images[0]
image
デフォルトのベースモデル
エキスパートデノイザーのアンサンブル
リファイナーモデルは、StableDiffusionXLInpaintPipelineでのインペインティングにも使用できます。
from diffusers import StableDiffusionXLInpaintPipeline
from diffusers.utils import load_image, make_image_grid
import torch
base = StableDiffusionXLInpaintPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
refiner = StableDiffusionXLInpaintPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0",
text_encoder_2=base.text_encoder_2,
vae=base.vae,
dtype=torch.float16,
use_safetensors=True,
variant="fp16",
).to("cuda")
img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
init_image = load_image(img_url)
mask_image = load_image(mask_url)
prompt = "A majestic tiger sitting on a bench"
num_inference_steps = 75
high_noise_frac = 0.7
image = base(
prompt=prompt,
image=init_image,
mask_image=mask_image,
num_inference_steps=num_inference_steps,
denoising_end=high_noise_frac,
output_type="latent",
).images
image = refiner(
prompt=prompt,
image=image,
mask_image=mask_image,
num_inference_steps=num_inference_steps,
denoising_start=high_noise_frac,
).images[0]
make_image_grid([init_image, mask_image, image.resize((512, 512))], rows=1, cols=3)
このエキスパートデノイザーのアンサンブル手法は、利用可能なすべてのスケジューラーで良好に動作します!
ベースモデルからリファイナモデルへ
SDXLは、ベースモデルによって完全にノイズ除去された画像に対して、image-to-image設定でリファイナーモデルを使用し、追加の高品質なディテールを加えることで、画像品質の向上を実現します。
ベースモデルとリファイナーモデルを読み込みます:
from diffusers import DiffusionPipeline
import torch
base = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
refiner = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0",
text_encoder_2=base.text_encoder_2,
vae=base.vae,
dtype=torch.float16,
use_safetensors=True,
variant="fp16",
).to("cuda")
SDXL refinerは、別のベースモデルと組み合わせて使用できます。例えば、Hunyuan-DiTやPixArt-Sigmaのパイプラインを使用して、プロンプトへの忠実度が高い画像を生成できます。画像を生成した後、SDXL refinerモデルに渡すことで、最終的な生成品質を向上させることができます。
ベースモデルから画像を生成し、モデルの出力をlatent空間に設定します:
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = base(prompt=prompt, output_type="latent").images[0]
生成された画像をrefinerモデルに渡します:
image = refiner(prompt=prompt, image=image[None, :]).images[0]
ベースモデル
ベースモデル + リファイナーモデル
インペインティングでは、StableDiffusionXLInpaintPipelineにベースモデルとリファイナモデルを読み込み、denoising_endおよびdenoising_startパラメータを削除し、リファイナにはより少ない推論ステップ数を選択します。
マイクロ条件付け
SDXLの学習には、マイクロコンディショニングと呼ばれるいくつかの追加のコンディショニング技術が含まれます。これには、元の画像サイズ、ターゲット画像サイズ、およびクロッピングパラメータが含まれます。これらのマイクロコンディショニングは、推論時に高品質で中央揃えの画像を生成するために使用できます。
classifier-free guidance により、micro-conditioning パラメータと negative micro-conditioning パラメータの両方を使用できます。これらは StableDiffusionXLPipeline、StableDiffusionXLImg2ImgPipeline、StableDiffusionXLInpaintPipeline、StableDiffusionXLControlNetPipeline で利用可能です。
サイズ条件付け
サイズ条件付けには2つの種類があります。
original_sizeの条件付けは、トレーニングバッチ内のアップスケールされた画像から得られます(トレーニングデータの約40%を占める小さな画像を破棄するのは無駄になるためです)。これにより、SDXL は、高解像度画像にはアップスケールによるアーティファクトが含まれていないことを学習します。推論時には、original_sizeを使用して元の画像の解像度を指定できます。デフォルト値の(1024, 1024)を使用すると、データセット内の 1024x1024 の画像に似た、より高品質な画像が生成されます。一方、(256, 256)のような低い解像度を指定した場合でも、モデルは 1024x1024 の画像を生成しますが、データセット内の低解像度画像(単純なパターン、ぼけ)のような外観になります。target_sizeによる条件付けは、SDXL をファインチューニングして異なる画像のアスペクト比をサポートするために導入されました。推論時に(1024, 1024)のデフォルト値を使用すると、データセット内の正方形の画像の構図に似た画像が生成されます。target_sizeとoriginal_sizeには同じ値を使用することをお勧めしますが、他のオプションを試すことも自由です!
🤗 Diffusers では、画像のサイズに関する負の条件を指定して、特定の解像度での生成を避けることもできます。
from diffusers import StableDiffusionXLPipeline
import torch
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(
prompt=prompt,
negative_original_size=(512, 512),
negative_target_size=(1024, 1024),
).images[0]
解像度が (128, 128)、(256, 256)、および (512, 512) である画像に対するネガティブ条件付き生成の画像。
クロップ条件付け
以前の Stable Diffusion モデルによって生成された画像は、切り取られたように見える場合があります。これは、トレーニング中にバッチ内のすべての画像が同じサイズになるように、画像が実際に切り取られているためです。SDXL は切り取り座標を条件として与えることで、切り取りなし - 座標 (0, 0) - が通常、中央に配置された被写体や完全な顔と相関することを学習します(これは 🤗 Diffusers のデフォルト値です)。オフセンターの構図を生成したい場合は、異なる座標で実験できます!
from diffusers import StableDiffusionXLPipeline
import torch
pipeline = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipeline(prompt=prompt, crops_coords_top_left=(256, 0)).images[0]
image
ネガティブなクロッピング座標を指定することで、特定のクロッピングパラメータから生成を遠ざけることもできます:
from diffusers import StableDiffusionXLPipeline
import torch
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
image = pipe(
prompt=prompt,
negative_original_size=(512, 512),
negative_crops_coords_top_left=(0, 0),
negative_target_size=(1024, 1024),
).images[0]
image
各テキストエンコーダーに異なるプロンプトを使用する
SDXLは2つのテキストエンコーダーを使用しているため、各テキストエンコーダーに異なるプロンプトを渡すことができ、品質を向上させることができます。元のプロンプトをpromptに、2番目のプロンプトをprompt_2に渡してください(ネガティブプロンプトを使用する場合は、negative_promptとnegative_prompt_2を使用します):
from diffusers import StableDiffusionXLPipeline
import torch
pipeline = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", dtype=torch.float16, variant="fp16", use_safetensors=True
).to("cuda") # or "mps", "xpu", "cpu"
# prompt is passed to OAI CLIP-ViT/L-14
prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
# prompt_2 is passed to OpenCLIP-ViT/bigG-14
prompt_2 = "Van Gogh painting"
image = pipeline(prompt=prompt, prompt_2=prompt_2).images[0]
image
デュアルテキストエンコーダーは、textual inversionガイドで説明されているように、別途読み込む必要があるテキストインバージョンの埋め込みもサポートしています。
最適化
SDXL は大規模なモデルであり、お使いのハードウェアで実行するにはメモリを最適化する必要がある場合があります。メモリを節約し、推論を高速化するためのヒントを以下に示します。
- メモリ不足エラーが発生した場合、enable_model_cpu_offload() を使用してモデルを CPU にオフロードします:
- base.to("cuda") # or "mps", "xpu", "cpu"
- refiner.to("cuda")
+ base.enable_model_cpu_offload()
+ refiner.enable_model_cpu_offload()
torch.compileを使用すると、約20%の高速化が期待できます(torch>=2.0が必要です):
+ base.unet = torch.compile(base.unet, mode="reduce-overhead", fullgraph=True)
+ refiner.unet = torch.compile(refiner.unet, mode="reduce-overhead", fullgraph=True)
torch<2.0の場合、SDXL を実行するために xFormers を有効にします:
+ base.enable_xformers_memory_efficient_attention()
+ refiner.enable_xformers_memory_efficient_attention()
リソース
SDXLで使用されているUNet2DConditionModelの最小構成バージョンでの実験にご興味がある場合は、PyTorchで記述され、🤗 Diffusersと直接互換性のあるminSDXLの実装をご覧ください。
StableDiffusionXLPipeline[[diffusers.StableDiffusionXLPipeline]]
diffusers.StableDiffusionXLPipeline[[diffusers.StableDiffusionXLPipeline]]
diffusers.StableDiffusionXLPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None)
パラメータ:
vae (AutoencoderKL) : 画像を潜在表現にエンコードし、潜在表現からデコードするための変分オートエンコーダ(VAE)モデル。
text_encoder (CLIPTextModel) : 凍結されたテキストエンコーダー。Stable Diffusion XL は CLIP のテキスト部分、具体的には clip-vit-large-patch14 バリアントを使用します。
text_encoder_2 ( CLIPTextModelWithProjection) : 2番目の凍結されたテキストエンコーダー。Stable Diffusion XL は CLIP のテキストおよびプール部分を使用しており、具体的には laion/CLIP-ViT-bigG-14-laion2B-39B-b160k バリアントを使用しています。
tokenizer (CLIPTokenizer) : クラス CLIPTokenizer の Tokenizer。
tokenizer_2 (CLIPTokenizer) : クラス CLIPTokenizer の2番目の Tokenizer。
unet (UNet2DConditionModel) : エンコードされた画像の潜在変数をノイズ除去するための条件付き U-Net アーキテクチャ。
scheduler (SchedulerMixin) : unet と組み合わせて、エンコードされた画像の潜在変数をデノイズするために使用するスケジューラ。DDIMScheduler、LMSDiscreteScheduler、または PNDMScheduler のいずれかです。
force_zeros_for_empty_prompt (bool、任意、デフォルトは"True") : 負のプロンプト埋め込みを常に0に設定するかどうか。stabilityai/stable-diffusion-xl-base-1-0の設定も参照してください。
add_watermarker (bool, 任意) : 出力画像にウォーターマークを付与するためにinvisible_watermark ライブラリを使用するかどうかを指定します。未定義の場合、パッケージがインストールされていればデフォルトで True となり、インストールされていなければウォーターマーカーは使用されません。
Stable Diffusion XL を使用したテキストから画像への生成を行う Pipeline。
このモデルは DiffusionPipeline を継承しています。ライブラリがすべてのパイプラインに対して実装している汎用的なメソッド(ダウンロードや保存、特定のデバイスでの実行など)については、スーパークラスのドキュメントを参照してください。
パイプラインは、以下の読み込みメソッドも継承します:
- テキストインバージョンの埋め込みを読み込むためのload_textual_inversion()
.ckptファイルを読み込むためのfrom_single_file()- LoRA重みの読み込みにload_lora_weights()
- LoRA重みの保存にはsave_lora_weights()を使用します
- IP Adapterの読み込みにload_ip_adapter()
call[[diffusers.StableDiffusionXLPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, denoising_end: float | None = None, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, original_size: tuple[int, int] | None = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] | None = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs)
パラメータ:
prompt (str または list[str]、省略可) : 画像生成をガイドするためのプロンプトです。未定義の場合、代わりに prompt_embeds を渡す必要があります。
prompt_2 (str または list[str]、省略可能) : tokenizer_2 および text_encoder_2 に送信するプロンプトです。未定義の場合、両方のテキストエンコーダーで prompt が使用されます。
height (int、optional、デフォルトは self.unet.config.sample_size * self.vae_scale_factor) : 生成される画像のピクセル単位の縦幅です。最適な結果を得るため、デフォルトでは 1024 に設定されています。stabilityai/stable-diffusion-xl-base-1.0 や、低解像度に特化してファインチューニングされていないチェックポイントでは、512 ピクセル未満ではうまく動作しません。
width (int、任意、デフォルトは self.unet.config.sample_size * self.vae_scale_factor) : 生成される画像の幅(ピクセル単位)です。最適な結果を得るため、デフォルトでは 1024 に設定されています。stabilityai/stable-diffusion-xl-base-1.0 や、低解像度に特化してファインチューニングされていないチェックポイントでは、512 ピクセル未満ではうまく動作しません。
num_inference_steps (int、任意、デフォルト値は 50) : デノイジングのステップ数です。デノイジングのステップ数を増やすと、推論速度が遅くなる代わりに、通常はより高品質な画像が得られます。
timesteps (list[int]、任意) : set_timesteps メソッドで timesteps 引数をサポートするスケジューラーにおいて、デノイジングプロセスに使用するカスタムタイムステップ。num_inference_steps が渡された場合のデフォルトの動作が使用されます。降順で指定する必要があります。
sigmas (list[float], 任意) : set_timesteps メソッドで sigmas 引数をサポートするスケジューラーにおいて、デノイジングプロセスに使用するカスタムシグマ。num_inference_steps が渡された場合のデフォルトの動作が使用されます。
denoising_end (float, 任意) : 指定すると、デノイジング全体のどの割合(0.0 から 1.0 の間)で処理を意図的に早期終了させるかを決定します。その結果、スケジューラによって選択された離散タイムステップによって決定されるように、返されるサンプルには依然としてかなりの量のノイズが残ります。画像出力の洗練 に詳述されているように、このパラメータは、このパイプラインが「Mixture of Denoisers」マルチパイプライン構成の一部を形成する場合に、理想的には利用されるべきです。
guidance_scale (float、任意、デフォルト値は 5.0) : Classifier-Free Diffusion Guidanceで定義されているガイダンススケールです。guidance_scale は、Imagen Paperの式 2 の w として定義されています。guidance_scale > 1 を設定することで、ガイダンススケールが有効になります。ガイダンススケールを高くすると、prompt のテキストと密接に関連した画像の生成が促されますが、通常は画像の品質が低下する傾向があります。
negative_prompt (str または list[str]、省略可能) : 画像生成をガイドしないプロンプトです。定義されていない場合、代わりに negative_prompt_embeds を渡す必要があります。ガイドを使用していない場合は無視されます(guidance_scale が 1 未満の場合は無視されます)。
negative_prompt_2 (str または list[str]、省略可) : tokenizer_2 および text_encoder_2 に送信する、画像生成を誘導しないプロンプトです。定義されていない場合、negative_prompt が両方のテキストエンコーダーで使用されます。
num_images_per_prompt (int、任意、デフォルトは 1) : プロンプトごとに生成する画像の数。
eta (float、任意、デフォルト値は 0.0) : DDIM 論文におけるパラメータ eta (η) に相当します: https://huggingface.co/papers/2010.02502。[schedulers.DDIMScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/ddim#diffusers.DDIMScheduler) にのみ適用され、それ以外のスケジューラーでは無視されます。
generator (torch.Generator または list[torch.Generator]、任意) : 生成を決定論的にするための torch ジェネレーター 1 つまたはそのリスト。
latents (torch.Tensor, 任意) : イメージ生成の入力として使用される、ガウス分布からサンプリングされた事前生成されたノイジー・ラテンツ。異なるプロンプトで同じ生成を調整するために使用できます。指定されない場合、指定されたランダムなgeneratorを使用してサンプリングを行い、ラテンツのテンソルが生成されます。
prompt_embeds (torch.Tensor, 任意) : 事前生成されたテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からテキスト埋め込みが生成されます。
negative_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたネガティブなテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、negative_prompt 入力引数から negative_prompt_embeds が生成されます。
pooled_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたプーリング済みテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からプーリング済みテキスト埋め込みが生成されます。
negative_pooled_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたネガティブなプールのテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、negative_prompt 入力引数からプールの negative_prompt_embeds が生成されます。
ip_adapter_image : (PipelineImageInput、任意): IP Adapter で使用する任意の画像入力。
ip_adapter_image_embeds (list[torch.Tensor], 任意) : IP-Adapter 用の事前生成された画像埋め込みです。IP-Adapter の数と同じ長さのリストである必要があります。各要素は、(batch_size, num_images, emb_dim) の形状を持つテンソルである必要があります。do_classifier_free_guidance が True に設定されている場合、負の画像埋め込みを含む必要があります。指定されない場合、ip_adapter_image 入力引数から埋め込みが計算されます。
output_type (str、任意、デフォルトは "pil") : 生成画像の出力形式。PIL(PIL.Image.Image)または np.array から選択します。
return_dict (bool、任意、デフォルトはTrue) : プレーンなタプルではなく~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutputを返すかどうか。
cross_attention_kwargs (dict, 任意) : 指定された場合、diffusers.models.attention_processor の self.processor で定義されている AttentionProcessor に渡される kwargs の辞書です。
guidance_rescale (float, optional, defaults to 0.0) : Guidance rescale factor proposed by Common Diffusion Noise Schedules and Sample Steps are Flawed guidance_scale is defined as φ in equation 16. of Common Diffusion Noise Schedules and Sample Steps are Flawed. Guidance rescale factor should fix overexposure when using zero terminal SNR.
original_size (tuple[int]、optional、デフォルト値は (1024, 1024)) : original_size が target_size と異なる場合、画像はダウンサンプリングまたはアップサンプリングされたように見えます。original_size は、指定されていない場合、デフォルトで (height, width) になります。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロコンディショニングの一部です。
crops_coords_top_left (tuple[int]、optional、デフォルト値は (0, 0)) : crops_coords_top_left を使用すると、crops_coords_top_left の位置から下方向に「切り抜かれた」ように見える画像を生成できます。crops_coords_top_left を (0, 0) に設定することで、通常は良好で中央が整った画像が得られます。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。
target_size (tuple[int]、optional、デフォルト値は (1024, 1024)) : ほとんどの場合、target_size は生成される画像の希望する高さおよび幅に設定する必要があります。指定されない場合、デフォルトで (height, width) が使用されます。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。
negative_original_size (tuple[int]、optional、デフォルト値は (1024, 1024)) : 特定の画像解像度に基づいて、生成プロセスをネガティブに条件付けます。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。詳細については、この issue スレッドを参照してください: https://github.com/huggingface/diffusers/issues/4208。
negative_crops_coords_top_left (tuple[int]、optional、デフォルト値は (0, 0)) : 特定のクロップ座標に基づいて、生成プロセスを負の条件として設定します。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。詳細については、この issue スレッドを参照してください: https://github.com/huggingface/diffusers/issues/4208。
negative_target_size (tuple[int]、optional、デフォルト値は (1024, 1024)) : 目標画像の解像度に基づいて、生成プロセスをネガティブに条件付けます。ほとんどの場合、target_size と同じである必要があります。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。詳細については、この issue スレッドを参照してください: https://github.com/huggingface/diffusers/issues/4208。
clip_skip (int, optional) : プロンプト埋め込みを計算する際に、CLIPからスキップするレイヤー数。値が1の場合、プロンプト埋め込みの計算に最終レイヤーの直前のレイヤーの出力が使用されます。
callback_on_step_end (Callable、PipelineCallback、MultiPipelineCallbacks、任意) : 推論中の各デノイジングステップの終了時に呼び出される関数、または PipelineCallback または MultiPipelineCallbacks のサブクラスです。以下の引数を持ちます: 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 属性に列挙された変数のみを、リストに含めることができます。
戻り値: ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput または tuple
return_dict が True の場合は ~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput、それ以外の場合は tuple を返します。tuple を返す場合、最初の要素は生成された画像のリストです。
生成用のパイプラインを呼び出したときに実行される関数。
例:
>>> import torch
>>> from diffusers import StableDiffusionXLPipeline
>>> pipe = StableDiffusionXLPipeline.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt).images[0]
encode_prompt[[diffusers.StableDiffusionXLPipeline.encode_prompt]]
encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)
パラメータ:
prompt (str または list[str]、省略可能) : エンコードするプロンプト
prompt_2 (str または list[str]、省略可能) : tokenizer_2 および text_encoder_2 に送信するプロンプトです。未定義の場合、両方のテキストエンコーダーで prompt が使用されます。
device : (torch.device): torch デバイス
num_images_per_prompt (int) : プロンプトごとに生成すべき画像の数
do_classifier_free_guidance (bool) : classifier free guidance を使用するかどうか
negative_prompt (str または list[str]、省略可能) : 画像生成をガイドしないプロンプトです。定義されていない場合、代わりに negative_prompt_embeds を渡す必要があります。ガイドを使用していない場合は無視されます(guidance_scale が 1 未満の場合は無視されます)。
negative_prompt_2 (str または list[str]、省略可) : tokenizer_2 および text_encoder_2 に送信する、画像生成を誘導しないプロンプトです。定義されていない場合、negative_prompt が両方のテキストエンコーダーで使用されます。
prompt_embeds (torch.Tensor, 任意) : 事前生成されたテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からテキスト埋め込みが生成されます。
negative_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたネガティブなテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、negative_prompt 入力引数から negative_prompt_embeds が生成されます。
pooled_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたプーリング済みテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からプーリング済みテキスト埋め込みが生成されます。
negative_pooled_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたネガティブなプールのテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、negative_prompt 入力引数からプールの negative_prompt_embeds が生成されます。
lora_scale (float、任意) : LoRAレイヤーが読み込まれている場合、テキストエンコーダーのすべてのLoRAレイヤーに適用されるLoRAスケールです。
clip_skip (int, optional) : プロンプト埋め込みを計算する際に、CLIPからスキップするレイヤー数。値が1の場合、プロンプト埋め込みの計算に最終レイヤーの直前のレイヤーの出力が使用されます。
プロンプトをテキストエンコーダーの隠れ状態にエンコードします。
get_guidance_scale_embedding[[diffusers.StableDiffusionXLPipeline.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
パラメータ:
w (torch.Tensor) : 指定されたガイダンススケールで埋め込みベクトルを生成し、タイムステップ埋め込みを後で強化します。
embedding_dim (int、任意、デフォルトは 512) : 生成する埋め込みの次元数。
dtype (torch.dtype、任意、デフォルトはtorch.float32) : 生成される埋め込みのデータ型。
戻り値: torch.Tensor
(len(w), embedding_dim) の形状を持つ埋め込みベクトル。
StableDiffusionXLImg2ImgPipeline[[diffusers.StableDiffusionXLImg2ImgPipeline]]
diffusers.StableDiffusionXLImg2ImgPipeline[[diffusers.StableDiffusionXLImg2ImgPipeline]]
diffusers.StableDiffusionXLImg2ImgPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None, requires_aesthetics_score: bool = False, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None)
パラメータ:
vae (AutoencoderKL) : 画像を潜在表現にエンコードし、潜在表現からデコードするための変分オートエンコーダ(VAE)モデル。
text_encoder (CLIPTextModel) : 凍結されたテキストエンコーダー。Stable Diffusion XL は CLIP のテキスト部分、具体的には clip-vit-large-patch14 バリアントを使用します。
text_encoder_2 ( CLIPTextModelWithProjection) : 2番目の凍結されたテキストエンコーダー。Stable Diffusion XL は CLIP のテキストおよびプール部分を使用しており、具体的には laion/CLIP-ViT-bigG-14-laion2B-39B-b160k バリアントを使用しています。
tokenizer (CLIPTokenizer) : クラス CLIPTokenizer の Tokenizer。
tokenizer_2 (CLIPTokenizer) : クラス CLIPTokenizer の2番目の Tokenizer。
unet (UNet2DConditionModel) : エンコードされた画像の潜在変数をノイズ除去するための条件付き U-Net アーキテクチャ。
scheduler (SchedulerMixin) : unet と組み合わせて、エンコードされた画像の潜在変数をデノイズするために使用するスケジューラ。DDIMScheduler、LMSDiscreteScheduler、または PNDMScheduler のいずれかです。
requires_aesthetics_score (bool、任意、デフォルトは"False") : 推論時にunetがaesthetic_score条件の受け渡しを必要とするかどうか。stabilityai/stable-diffusion-xl-refiner-1-0の設定も参照してください。
force_zeros_for_empty_prompt (bool、任意、デフォルトは"True") : 負のプロンプト埋め込みを常に0に設定するかどうか。stabilityai/stable-diffusion-xl-base-1-0の設定も参照してください。
add_watermarker (bool, 任意) : 出力画像にウォーターマークを付与するためにinvisible_watermark ライブラリを使用するかどうかを指定します。未定義の場合、パッケージがインストールされていればデフォルトで True となり、インストールされていなければウォーターマーカーは使用されません。
Stable Diffusion XL を使用したテキストから画像への生成を行う Pipeline。
このモデルは DiffusionPipeline を継承しています。ライブラリがすべてのパイプラインに対して実装している汎用的なメソッド(ダウンロードや保存、特定のデバイスでの実行など)については、スーパークラスのドキュメントを参照してください。
パイプラインは、以下の読み込みメソッドも継承します:
- テキストインバージョンの埋め込みを読み込むためのload_textual_inversion()
.ckptファイルを読み込むためのfrom_single_file()- LoRA重みの読み込みにload_lora_weights()
- LoRA重みの保存にはsave_lora_weights()を使用します
- IP Adapterの読み込みにload_ip_adapter()
call[[diffusers.StableDiffusionXLImg2ImgPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, strength: float = 0.3, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, denoising_start: float | None = None, denoising_end: float | None = None, guidance_scale: float = 5.0, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, aesthetic_score: float = 6.0, negative_aesthetic_score: float = 2.5, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs)
パラメータ:
prompt (str または list[str]、省略可) : 画像生成をガイドするためのプロンプトです。未定義の場合、代わりに prompt_embeds を渡す必要があります。
prompt_2 (str または list[str]、省略可能) : tokenizer_2 および text_encoder_2 に送信するプロンプトです。未定義の場合、両方のテキストエンコーダーで prompt が使用されます。
image (torch.Tensor または PIL.Image.Image または np.ndarray または list[torch.Tensor] または list[PIL.Image.Image] または list[np.ndarray]) : パイプラインで処理する画像です。
strength (float, optional, デフォルト値は 0.3) : 概念的には、参照 image をどの程度変換するかを示します。0 から 1 の間の値である必要があります。 image は開始点として使用され、 strength が大きいほど、それに加えられるノイズが増えます。デノイジングのステップ数は、最初に追加されるノイズの量に依存します。 strength が 1 の場合、追加されるノイズは最大となり、デノイジングプロセスは num_inference_steps で指定された全イテレーション数分実行されます。したがって、値が 1 の場合、 image は実質的に無視されます。 denoising_start が整数として宣言されている場合、 strength の値は無視されることに注意してください。
num_inference_steps (int、任意、デフォルト値は 50) : デノイジングのステップ数です。デノイジングのステップ数を増やすと、推論速度が遅くなる代わりに、通常はより高品質な画像が得られます。
timesteps (list[int]、任意) : set_timesteps メソッドで timesteps 引数をサポートするスケジューラーにおいて、デノイジングプロセスに使用するカスタムタイムステップ。num_inference_steps が渡された場合のデフォルトの動作が使用されます。降順で指定する必要があります。
sigmas (list[float], 任意) : set_timesteps メソッドで sigmas 引数をサポートするスケジューラーにおいて、デノイジングプロセスに使用するカスタムシグマ。num_inference_steps が渡された場合のデフォルトの動作が使用されます。
denoising_start (float, 任意) : 指定した場合、デノイジング処理の開始前にバイパスする割合(0.0 から 1.0 の間)を示します。これにより、デノイジング処理の初期部分がスキップされ、渡された image が部分的にデノイズされた画像であるとみなされます。なお、このパラメータが指定されると、strength は無視されます。denoising_start パラメータは、画像品質の向上 に詳述されている「Mixture of Denoisers」マルチパイプライン構成にこのパイプラインを統合する場合に特に有用です。
denoising_end (float, オプション) : 指定すると、デノイジング全体のどの割合(0.0 から 1.0 の間)で処理を意図的に早期終了させるかを決定します。その結果、返されるサンプルには依然としてかなりの量のノイズが残ります(約最後の 20% のタイムステップがまだ必要です)。そのため、denoising_start が 0.8 に設定された後続のパイプラインでデノイジングを行い、スケジューラの最後の 20% だけデノイジングするようにする必要があります。画像品質の向上 に詳述されているように、このパラメータは、このパイプラインが「Mixture of Denoisers」マルチパイプライン構成の一部を形成する場合に、理想的には利用されるべきです。
guidance_scale (float、任意、デフォルト値は 7.5) : Classifier-Free Diffusion Guidance で定義されているガイダンススケールです。guidance_scale は、Imagen Paper の数式 2 の w として定義されています。guidance_scale > 1 を設定することで、ガイダンススケールが有効になります。ガイダンススケールを高くすると、prompt のテキストと密接に関連する画像の生成が促されますが、通常は画像の品質が低下する傾向があります。
negative_prompt (str または list[str]、省略可能) : 画像生成をガイドしないプロンプトです。定義されていない場合、代わりに negative_prompt_embeds を渡す必要があります。ガイドを使用していない場合は無視されます(guidance_scale が 1 未満の場合は無視されます)。
negative_prompt_2 (str または list[str]、省略可) : tokenizer_2 および text_encoder_2 に送信する、画像生成を誘導しないプロンプトです。定義されていない場合、negative_prompt が両方のテキストエンコーダーで使用されます。
num_images_per_prompt (int、任意、デフォルトは 1) : プロンプトごとに生成する画像の数。
eta (float、任意、デフォルト値は 0.0) : DDIM 論文におけるパラメータ eta (η) に相当します: https://huggingface.co/papers/2010.02502。[schedulers.DDIMScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/ddim#diffusers.DDIMScheduler) にのみ適用され、それ以外のスケジューラーでは無視されます。
generator (torch.Generator または list[torch.Generator]、任意) : 生成を決定論的にするための torch ジェネレーター 1 つまたはそのリスト。
latents (torch.Tensor, 任意) : イメージ生成の入力として使用される、ガウス分布からサンプリングされた事前生成されたノイジー・ラテンツ。異なるプロンプトで同じ生成を調整するために使用できます。指定されない場合、指定されたランダムなgeneratorを使用してサンプリングを行い、ラテンツのテンソルが生成されます。
prompt_embeds (torch.Tensor, 任意) : 事前生成されたテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からテキスト埋め込みが生成されます。
negative_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたネガティブなテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、negative_prompt 入力引数から negative_prompt_embeds が生成されます。
pooled_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたプーリング済みテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からプーリング済みテキスト埋め込みが生成されます。
negative_pooled_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたネガティブなプールのテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、negative_prompt 入力引数からプールの negative_prompt_embeds が生成されます。
ip_adapter_image : (PipelineImageInput、任意): IP Adapter で使用する任意の画像入力。
ip_adapter_image_embeds (list[torch.Tensor], 任意) : IP-Adapter 用の事前生成された画像埋め込みです。IP-Adapter の数と同じ長さのリストである必要があります。各要素は、(batch_size, num_images, emb_dim) の形状を持つテンソルである必要があります。do_classifier_free_guidance が True に設定されている場合、負の画像埋め込みを含む必要があります。指定されない場合、ip_adapter_image 入力引数から埋め込みが計算されます。
output_type (str、任意、デフォルトは "pil") : 生成画像の出力形式。PIL(PIL.Image.Image)または np.array から選択します。
return_dict (bool、任意、デフォルトはTrue) : プレーンなタプルではなく~pipelines.stable_diffusion.StableDiffusionXLPipelineOutputを返すかどうか。
cross_attention_kwargs (dict, 任意) : 指定された場合、diffusers.models.attention_processor の self.processor で定義されている AttentionProcessor に渡される kwargs の辞書です。
guidance_rescale (float, optional, defaults to 0.0) : Guidance rescale factor proposed by Common Diffusion Noise Schedules and Sample Steps are Flawed guidance_scale is defined as φ in equation 16. of Common Diffusion Noise Schedules and Sample Steps are Flawed. Guidance rescale factor should fix overexposure when using zero terminal SNR.
original_size (tuple[int]、optional、デフォルト値は (1024, 1024)) : original_size が target_size と異なる場合、画像はダウンサンプリングまたはアップサンプリングされたように見えます。original_size は、指定されていない場合、デフォルトで (height, width) になります。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロコンディショニングの一部です。
crops_coords_top_left (tuple[int]、optional、デフォルト値は (0, 0)) : crops_coords_top_left を使用すると、crops_coords_top_left の位置から下方向に「切り抜かれた」ように見える画像を生成できます。crops_coords_top_left を (0, 0) に設定することで、通常は良好で中央が整った画像が得られます。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。
target_size (tuple[int]、optional、デフォルト値は (1024, 1024)) : ほとんどの場合、target_size は生成される画像の希望する高さおよび幅に設定する必要があります。指定されない場合、デフォルトで (height, width) が使用されます。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。
negative_original_size (tuple[int]、optional、デフォルト値は (1024, 1024)) : 特定の画像解像度に基づいて、生成プロセスをネガティブに条件付けます。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。詳細については、この issue スレッドを参照してください: https://github.com/huggingface/diffusers/issues/4208。
negative_crops_coords_top_left (tuple[int]、optional、デフォルト値は (0, 0)) : 特定のクロップ座標に基づいて、生成プロセスを負の条件として設定します。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。詳細については、この issue スレッドを参照してください: https://github.com/huggingface/diffusers/issues/4208。
negative_target_size (tuple[int]、optional、デフォルト値は (1024, 1024)) : 目標画像の解像度に基づいて、生成プロセスをネガティブに条件付けます。ほとんどの場合、target_size と同じである必要があります。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。詳細については、この issue スレッドを参照してください: https://github.com/huggingface/diffusers/issues/4208。
aesthetic_score (float、任意、デフォルト値は 6.0) : 正のテキスト条件に影響を与えることで、生成された画像の審美スコアをシミュレートするために使用されます。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。
negative_aesthetic_score (float、optional、デフォルト値は 2.5) : https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL の micro-conditioning の一部です。ネガティブなテキスト条件に影響を与えることで、生成された画像の美観スコアをシミュレートするために使用できます。
clip_skip (int, optional) : プロンプト埋め込みを計算する際に、CLIPからスキップするレイヤー数。値が1の場合、プロンプト埋め込みの計算に最終レイヤーの直前のレイヤーの出力が使用されます。
callback_on_step_end (Callable、PipelineCallback、MultiPipelineCallbacks、任意) : 推論中の各デノイジングステップの終了時に呼び出される関数、または PipelineCallback または MultiPipelineCallbacks のサブクラスです。以下の引数を持ちます: 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 属性に列挙された変数のみを、リストに含めることができます。
戻り値: ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput または tuple
return_dict が True の場合は ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput、それ以外の場合は `tuple が返されます。tuple を返す場合、最初の要素は生成された画像のリストです。
生成用のパイプラインを呼び出したときに実行される関数。
例:
>>> import torch
>>> from diffusers import StableDiffusionXLImg2ImgPipeline
>>> from diffusers.utils import load_image
>>> pipe = StableDiffusionXLImg2ImgPipeline.from_pretrained(
... "stabilityai/stable-diffusion-xl-refiner-1.0", torch_dtype=torch.float16
... )
>>> pipe = pipe.to("cuda")
>>> url = "https://huggingface.co/datasets/patrickvonplaten/images/resolve/main/aa_xl/000000009.png"
>>> init_image = load_image(url).convert("RGB")
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> image = pipe(prompt, image=init_image).images[0]
encode_prompt[[diffusers.StableDiffusionXLImg2ImgPipeline.encode_prompt]]
encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)
パラメータ:
prompt (str または list[str]、省略可能) : エンコードするプロンプト
prompt_2 (str または list[str]、省略可能) : tokenizer_2 および text_encoder_2 に送信するプロンプトです。未定義の場合、両方のテキストエンコーダーで prompt が使用されます。
device : (torch.device): torch デバイス
num_images_per_prompt (int) : プロンプトごとに生成すべき画像の数
do_classifier_free_guidance (bool) : classifier free guidance を使用するかどうか
negative_prompt (str または list[str]、省略可能) : 画像生成をガイドしないプロンプトです。定義されていない場合、代わりに negative_prompt_embeds を渡す必要があります。ガイドを使用していない場合は無視されます(guidance_scale が 1 未満の場合は無視されます)。
negative_prompt_2 (str または list[str]、省略可) : tokenizer_2 および text_encoder_2 に送信する、画像生成を誘導しないプロンプトです。定義されていない場合、negative_prompt が両方のテキストエンコーダーで使用されます。
prompt_embeds (torch.Tensor, 任意) : 事前生成されたテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からテキスト埋め込みが生成されます。
negative_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたネガティブなテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、negative_prompt 入力引数から negative_prompt_embeds が生成されます。
pooled_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたプーリング済みテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からプーリング済みテキスト埋め込みが生成されます。
negative_pooled_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたネガティブなプールのテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、negative_prompt 入力引数からプールの negative_prompt_embeds が生成されます。
lora_scale (float、任意) : LoRAレイヤーが読み込まれている場合、テキストエンコーダーのすべてのLoRAレイヤーに適用されるLoRAスケールです。
clip_skip (int, optional) : プロンプト埋め込みを計算する際に、CLIPからスキップするレイヤー数。値が1の場合、プロンプト埋め込みの計算に最終レイヤーの直前のレイヤーの出力が使用されます。
プロンプトをテキストエンコーダーの隠れ状態にエンコードします。
get_guidance_scale_embedding[[diffusers.StableDiffusionXLImg2ImgPipeline.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
パラメータ:
w (torch.Tensor) : 指定されたガイダンススケールで埋め込みベクトルを生成し、タイムステップ埋め込みを後で強化します。
embedding_dim (int、任意、デフォルトは 512) : 生成する埋め込みの次元数。
dtype (torch.dtype、任意、デフォルトはtorch.float32) : 生成される埋め込みのデータ型。
戻り値: torch.Tensor
(len(w), embedding_dim) の形状を持つ埋め込みベクトル。
StableDiffusionXLInpaintPipeline[[diffusers.StableDiffusionXLInpaintPipeline]]
diffusers.StableDiffusionXLInpaintPipeline[[diffusers.StableDiffusionXLInpaintPipeline]]
diffusers.StableDiffusionXLInpaintPipeline(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: KarrasDiffusionSchedulers, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None, requires_aesthetics_score: bool = False, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None)
パラメータ:
vae (AutoencoderKL) : 画像を潜在表現にエンコードし、潜在表現からデコードするための変分オートエンコーダ(VAE)モデル。
text_encoder (CLIPTextModel) : 凍結されたテキストエンコーダー。Stable Diffusion XL は CLIP のテキスト部分、具体的には clip-vit-large-patch14 バリアントを使用します。
text_encoder_2 ( CLIPTextModelWithProjection) : 2番目の凍結されたテキストエンコーダー。Stable Diffusion XL は CLIP のテキストおよびプール部分を使用しており、具体的には laion/CLIP-ViT-bigG-14-laion2B-39B-b160k バリアントを使用しています。
tokenizer (CLIPTokenizer) : クラス CLIPTokenizer の Tokenizer。
tokenizer_2 (CLIPTokenizer) : クラス CLIPTokenizer の2番目の Tokenizer。
unet (UNet2DConditionModel) : エンコードされた画像の潜在変数をノイズ除去するための条件付き U-Net アーキテクチャ。
scheduler (SchedulerMixin) : unet と組み合わせて、エンコードされた画像の潜在変数をデノイズするために使用するスケジューラ。DDIMScheduler、LMSDiscreteScheduler、または PNDMScheduler のいずれかです。
requires_aesthetics_score (bool、任意、デフォルトは"False") : 推論時にunetにaesthetic_score条件を渡す必要があるかどうかを示します。stabilityai/stable-diffusion-xl-refiner-1-0の設定も参照してください。
force_zeros_for_empty_prompt (bool、任意、デフォルトは"True") : 負のプロンプト埋め込みを常に0に設定するかどうか。stabilityai/stable-diffusion-xl-base-1-0の設定も参照してください。
add_watermarker (bool, 任意) : 出力画像にウォーターマークを付与するためにinvisible_watermark ライブラリを使用するかどうかを指定します。未定義の場合、パッケージがインストールされていればデフォルトで True となり、インストールされていなければウォーターマーカーは使用されません。
Stable Diffusion XL を使用したテキストから画像への生成を行う Pipeline。
このモデルは DiffusionPipeline を継承しています。ライブラリがすべてのパイプラインに対して実装している汎用的なメソッド(ダウンロードや保存、特定のデバイスでの実行など)については、スーパークラスのドキュメントを参照してください。
パイプラインは、以下の読み込みメソッドも継承します:
- テキストインバージョンの埋め込みを読み込むためのload_textual_inversion()
.ckptファイルを読み込むためのfrom_single_file()- LoRA重みの読み込みにload_lora_weights()
- LoRA重みの保存にはsave_lora_weights()を使用します
- IP Adapterの読み込みにload_ip_adapter()
call[[diffusers.StableDiffusionXLInpaintPipeline.call]]
__call__(prompt: str | list[str] = None, prompt_2: str | list[str] | None = None, image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, mask_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = None, masked_image_latents: Tensor = None, height: int | None = None, width: int | None = None, padding_mask_crop: int | None = None, strength: float = 0.9999, num_inference_steps: int = 50, timesteps: list[int] = None, sigmas: list[float] = None, denoising_start: float | None = None, denoising_end: float | None = None, guidance_scale: float = 7.5, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, num_images_per_prompt: int | None = 1, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, ip_adapter_image_embeds: list[torch.Tensor] | None = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, original_size: tuple[int, int] = None, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] = None, negative_original_size: tuple[int, int] | None = None, negative_crops_coords_top_left: tuple[int, int] = (0, 0), negative_target_size: tuple[int, int] | None = None, aesthetic_score: float = 6.0, negative_aesthetic_score: float = 2.5, clip_skip: int | None = None, callback_on_step_end: typing.Union[typing.Callable[[int, int], NoneType], diffusers.callbacks.PipelineCallback, diffusers.callbacks.MultiPipelineCallbacks, NoneType] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs)
パラメータ:
prompt (str または list[str]、省略可) : 画像生成をガイドするためのプロンプトです。未定義の場合、代わりに prompt_embeds を渡す必要があります。
prompt_2 (str または list[str]、省略可能) : tokenizer_2 および text_encoder_2 に送信するプロンプトです。未定義の場合、両方のテキストエンコーダーで prompt が使用されます。
image (PIL.Image.Image) : Image、またはインペイント対象の画像バッチを表すテンソル。つまり、画像の一部がmask_imageでマスクされ、promptに従って再描画されます。
mask_image (PIL.Image.Image) : Image、または画像バッチを表すテンソル。imageにマスクを適用します。マスクの白いピクセルは再描画され、黒いピクセルは保持されます。mask_imageがPIL画像の場合、使用の前に単一チャネル(輝度)に変換されます。テンソルの場合は、3つのカラーチャネルではなく1つのカラーチャネル(L)を含む必要があります。したがって、期待される形状は(B, H, W, 1)です。
masked_image_latents (torch.Tensor, 任意) : マスクされた画像の事前エンコード済み潜在変数(インペインティング用)。
height (int、optional、デフォルトは self.unet.config.sample_size * self.vae_scale_factor) : 生成される画像のピクセル単位の縦幅です。最適な結果を得るため、デフォルトでは 1024 に設定されています。stabilityai/stable-diffusion-xl-base-1.0 や、低解像度に特化してファインチューニングされていないチェックポイントでは、512 ピクセル未満ではうまく動作しません。
width (int、任意、デフォルトは self.unet.config.sample_size * self.vae_scale_factor) : 生成される画像の幅(ピクセル単位)です。最適な結果を得るため、デフォルトでは 1024 に設定されています。stabilityai/stable-diffusion-xl-base-1.0 や、低解像度に特化してファインチューニングされていないチェックポイントでは、512 ピクセル未満ではうまく動作しません。
padding_mask_crop (int, 任意、デフォルトは None) : 画像とマスクに適用するクロップの余白サイズ。None の場合、画像および mask_image にはクロップが適用されません。padding_mask_crop が None でない場合、まず画像と同じアスペクト比を持ち、すべてのマスク領域を含む長方形の領域を特定し、その後 padding_mask_crop に基づいてその領域を拡大します。その後、インペインティングのために元の画像サイズにリサイズする前に、拡大された領域に基づいて画像と mask_image がクロップされます。これは、マスク領域が小さく、画像が大きく、背景などインペインティングに関連しない情報が含まれている場合に有用です。
strength (float, optional, デフォルト値は 0.9999) : 概念的には、参照 image のマスクされた部分をどの程度変換するかを示します。0 から 1 の間の値である必要があります。 image が起点として使用され、 strength が大きいほど、それにより多くのノイズが追加されます。デノイジングのステップ数は、最初に追加されるノイズの量に依存します。 strength が 1 の場合、追加されるノイズは最大となり、デノイジングプロセスは num_inference_steps で指定された全イテレーション数分実行されます。したがって、値が 1 である場合、参照 image のマスクされた部分は実質的に無視されます。 denoising_start が整数として宣言されている場合、 strength の値は無視されることに注意してください。
num_inference_steps (int、任意、デフォルト値は 50) : デノイジングのステップ数です。デノイジングのステップ数を増やすと、推論速度が遅くなる代わりに、通常はより高品質な画像が得られます。
timesteps (list[int]、任意) : set_timesteps メソッドで timesteps 引数をサポートするスケジューラーにおいて、デノイジングプロセスに使用するカスタムタイムステップ。num_inference_steps が渡された場合のデフォルトの動作が使用されます。降順で指定する必要があります。
sigmas (list[float], 任意) : set_timesteps メソッドで sigmas 引数をサポートするスケジューラーにおいて、デノイジングプロセスに使用するカスタムシグマ。num_inference_steps が渡された場合のデフォルトの動作が使用されます。
denoising_start (float, 任意) : 指定した場合、デノイジングプロセス全体の中で、開始前にバイパスされる割合(0.0から1.0の間)を示します。これにより、デノイジングプロセスの初期部分がスキップされ、渡されたimageは部分的にデノイズされた画像であるとみなされます。なお、このパラメータが指定されると、strengthは無視されます。denoising_startパラメータは、画像出力の洗練に詳述されている「Mixture of Denoisers」マルチパイプライン構成にこのパイプラインを統合する場合に特に有用です。
denoising_end (float, optional) : When specified, determines the fraction (between 0.0 and 1.0) of the total denoising process to be completed before it is intentionally prematurely terminated. As a result, the returned sample will still retain a substantial amount of noise (ca. final 20% of timesteps still needed) and should be denoised by a successor pipeline that has denoising_start set to 0.8 so that it only denoises the final 20% of the scheduler. The denoising_end parameter should ideally be utilized when this pipeline forms a part of a "Mixture of Denoisers" multi-pipeline setup, as elaborated in Refining the Image Output.
guidance_scale (float、任意、デフォルト値は 7.5) : Classifier-Free Diffusion Guidance で定義されているガイダンススケールです。guidance_scale は、Imagen Paper の数式 2 の w として定義されています。guidance_scale > 1 を設定することで、ガイダンススケールが有効になります。ガイダンススケールを高くすると、prompt のテキストと密接に関連する画像の生成が促されますが、通常は画像の品質が低下する傾向があります。
negative_prompt (str または list[str]、省略可能) : 画像生成をガイドしないプロンプトです。定義されていない場合、代わりに negative_prompt_embeds を渡す必要があります。ガイドを使用していない場合は無視されます(guidance_scale が 1 未満の場合は無視されます)。
negative_prompt_2 (str または list[str]、省略可) : tokenizer_2 および text_encoder_2 に送信する、画像生成を誘導しないプロンプトです。定義されていない場合、negative_prompt が両方のテキストエンコーダーで使用されます。
prompt_embeds (torch.Tensor, 任意) : 事前生成されたテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からテキスト埋め込みが生成されます。
negative_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたネガティブなテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、negative_prompt 入力引数から negative_prompt_embeds が生成されます。
pooled_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたプーリング済みテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からプーリング済みテキスト埋め込みが生成されます。
negative_pooled_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたネガティブなプールのテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、negative_prompt 入力引数からプールの negative_prompt_embeds が生成されます。
ip_adapter_image : (PipelineImageInput、任意): IP Adapter で使用する任意の画像入力。
ip_adapter_image_embeds (list[torch.Tensor], 任意) : IP-Adapter 用の事前生成された画像埋め込みです。IP-Adapter の数と同じ長さのリストである必要があります。各要素は、(batch_size, num_images, emb_dim) の形状を持つテンソルである必要があります。do_classifier_free_guidance が True に設定されている場合、負の画像埋め込みを含む必要があります。指定されない場合、ip_adapter_image 入力引数から埋め込みが計算されます。
num_images_per_prompt (int、任意、デフォルトは 1) : プロンプトごとに生成する画像の数。
eta (float、任意、デフォルト値は 0.0) : DDIM 論文におけるパラメータ eta (η) に相当します: https://huggingface.co/papers/2010.02502。[schedulers.DDIMScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/ddim#diffusers.DDIMScheduler) にのみ適用され、それ以外のスケジューラーでは無視されます。
generator (torch.Generator, 任意) : 生成を決定論的にするためのtorchジェネレーター1つまたはそのリスト。
latents (torch.Tensor, 任意) : イメージ生成の入力として使用される、ガウス分布からサンプリングされた事前生成されたノイジー・ラテンツ。異なるプロンプトで同じ生成を調整するために使用できます。指定されない場合、指定されたランダムなgeneratorを使用してサンプリングを行い、ラテンツのテンソルが生成されます。
output_type (str、任意、デフォルトは "pil") : 生成画像の出力形式。PIL(PIL.Image.Image)または np.array から選択します。
return_dict (bool、任意、デフォルトはTrue) : プレーンなタプルではなく、StableDiffusionPipelineOutputを返すかどうか。
cross_attention_kwargs (dict, 任意) : 指定された場合、diffusers.models.attention_processor の self.processor で定義されている AttentionProcessor に渡される kwargs の辞書です。
original_size (tuple[int]、optional、デフォルト値は (1024, 1024)) : original_size が target_size と異なる場合、画像はダウンサンプリングまたはアップサンプリングされたように見えます。original_size は、指定されていない場合、デフォルトで (height, width) になります。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロコンディショニングの一部です。
crops_coords_top_left (tuple[int]、optional、デフォルト値は (0, 0)) : crops_coords_top_left を使用すると、crops_coords_top_left の位置から下方向に「切り抜かれた」ように見える画像を生成できます。crops_coords_top_left を (0, 0) に設定することで、通常は良好で中央が整った画像が得られます。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。
target_size (tuple[int]、optional、デフォルト値は (1024, 1024)) : ほとんどの場合、target_size は生成される画像の希望する高さおよび幅に設定する必要があります。指定されない場合、デフォルトで (height, width) が使用されます。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。
negative_original_size (tuple[int]、optional、デフォルト値は (1024, 1024)) : 特定の画像解像度に基づいて、生成プロセスをネガティブに条件付けます。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。詳細については、この issue スレッドを参照してください: https://github.com/huggingface/diffusers/issues/4208。
negative_crops_coords_top_left (tuple[int]、optional、デフォルト値は (0, 0)) : 特定のクロップ座標に基づいて、生成プロセスを負の条件として設定します。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。詳細については、この issue スレッドを参照してください: https://github.com/huggingface/diffusers/issues/4208。
negative_target_size (tuple[int]、optional、デフォルト値は (1024, 1024)) : 目標画像の解像度に基づいて、生成プロセスをネガティブに条件付けます。ほとんどの場合、target_size と同じである必要があります。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。詳細については、この issue スレッドを参照してください: https://github.com/huggingface/diffusers/issues/4208。
aesthetic_score (float、任意、デフォルト値は 6.0) : 正のテキスト条件に影響を与えることで、生成された画像の審美スコアをシミュレートするために使用されます。https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。
negative_aesthetic_score (float、optional、デフォルト値は 2.5) : https://huggingface.co/papers/2307.01952 のセクション 2.2 で説明されている SDXL の micro-conditioning の一部です。ネガティブなテキスト条件に影響を与えることで、生成された画像の美観スコアをシミュレートするために使用できます。
guidance_rescale (float, optional, defaults to 0.0) : Guidance rescale factor from Common Diffusion Noise Schedules and Sample Steps are Flawed.
clip_skip (int, optional) : プロンプト埋め込みを計算する際に、CLIPからスキップするレイヤー数。値が1の場合、プロンプト埋め込みの計算に最終レイヤーの直前のレイヤーの出力が使用されます。
callback_on_step_end (Callable、PipelineCallback、MultiPipelineCallbacks、任意) : 推論中の各デノイジングステップの終了時に呼び出される関数、または PipelineCallback または MultiPipelineCallbacks のサブクラスです。以下の引数を持ちます: 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 属性に列挙された変数のみを、リストに含めることができます。
戻り値: ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput または tuple
return_dict が True の場合は ~pipelines.stable_diffusion.StableDiffusionXLPipelineOutput、それ以外の場合は tuple. tuple を返します。tuple を返す場合、最初の要素は生成された画像のリストです。
生成用のパイプラインを呼び出したときに実行される関数。
例:
>>> import torch
>>> from diffusers import StableDiffusionXLInpaintPipeline
>>> from diffusers.utils import load_image
>>> pipe = StableDiffusionXLInpaintPipeline.from_pretrained(
... "stabilityai/stable-diffusion-xl-base-1.0",
... torch_dtype=torch.float16,
... variant="fp16",
... use_safetensors=True,
... )
>>> pipe.to("cuda")
>>> img_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo.png"
>>> mask_url = "https://raw.githubusercontent.com/CompVis/latent-diffusion/main/data/inpainting_examples/overture-creations-5sI6fQgYIuo_mask.png"
>>> init_image = load_image(img_url).convert("RGB")
>>> mask_image = load_image(mask_url).convert("RGB")
>>> prompt = "A majestic tiger sitting on a bench"
>>> image = pipe(
... prompt=prompt, image=init_image, mask_image=mask_image, num_inference_steps=50, strength=0.80
... ).images[0]
encode_prompt[[diffusers.StableDiffusionXLInpaintPipeline.encode_prompt]]
encode_prompt(prompt: str, prompt_2: str | None = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, do_classifier_free_guidance: bool = True, negative_prompt: str | None = None, negative_prompt_2: str | None = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)
パラメータ:
prompt (str または list[str]、省略可能) : エンコードするプロンプト
prompt_2 (str または list[str]、省略可能) : tokenizer_2 および text_encoder_2 に送信するプロンプトです。未定義の場合、両方のテキストエンコーダーで prompt が使用されます。
device : (torch.device): torch デバイス
num_images_per_prompt (int) : プロンプトごとに生成すべき画像の数
do_classifier_free_guidance (bool) : classifier free guidance を使用するかどうか
negative_prompt (str または list[str]、省略可能) : 画像生成をガイドしないプロンプトです。定義されていない場合、代わりに negative_prompt_embeds を渡す必要があります。ガイドを使用していない場合は無視されます(guidance_scale が 1 未満の場合は無視されます)。
negative_prompt_2 (str または list[str]、省略可) : tokenizer_2 および text_encoder_2 に送信する、画像生成を誘導しないプロンプトです。定義されていない場合、negative_prompt が両方のテキストエンコーダーで使用されます。
prompt_embeds (torch.Tensor, 任意) : 事前生成されたテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からテキスト埋め込みが生成されます。
negative_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたネガティブなテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、negative_prompt 入力引数から negative_prompt_embeds が生成されます。
pooled_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたプーリング済みテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、prompt 入力引数からプーリング済みテキスト埋め込みが生成されます。
negative_pooled_prompt_embeds (torch.Tensor, 任意) : 事前に生成されたネガティブなプールのテキスト埋め込み。テキスト入力の調整、例えばプロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、negative_prompt 入力引数からプールの negative_prompt_embeds が生成されます。
lora_scale (float、任意) : LoRAレイヤーが読み込まれている場合、テキストエンコーダーのすべてのLoRAレイヤーに適用されるLoRAスケールです。
clip_skip (int, optional) : プロンプト埋め込みを計算する際に、CLIPからスキップするレイヤー数。値が1の場合、プロンプト埋め込みの計算に最終レイヤーの直前のレイヤーの出力が使用されます。
プロンプトをテキストエンコーダーの隠れ状態にエンコードします。
get_guidance_scale_embedding[[diffusers.StableDiffusionXLInpaintPipeline.get_guidance_scale_embedding]]
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
パラメータ:
w (torch.Tensor) : 指定されたガイダンススケールで埋め込みベクトルを生成し、タイムステップ埋め込みを後で強化します。
embedding_dim (int、任意、デフォルトは 512) : 生成する埋め込みの次元数。
dtype (torch.dtype、任意、デフォルトはtorch.float32) : 生成される埋め込みのデータ型。
戻り値: torch.Tensor
(len(w), embedding_dim) の形状を持つ埋め込みベクトル。
Xet Storage Details
- Size:
- 113 kB
- Xet hash:
- f2d6689d366e0e338e7e80e5fa79de717bb10be0dbebbc2aa1e3fe912cb147b8
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.