🚀 SD-XL 1.0-baseモデルカード
このモデルは、テキストプロンプトに基づいて画像を生成および変更するために使用できます。潜在拡散モデルを利用し、2つの事前学習済みのテキストエンコーダを使用しています。
🚀 クイックスタート
必要なライブラリのインストール
diffusersをバージョン0.19.0以上にアップグレードし、transformers
、safetensors
、accelerate
、およびinvisible watermarkをインストールします。
pip install diffusers --upgrade
pip install invisible_watermark transformers accelerate safetensors
ベースモデルの使用例
from diffusers import DiffusionPipeline
import torch
pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, use_safetensors=True, variant="fp16")
pipe.to("cuda")
prompt = "An astronaut riding a green horse"
images = pipe(prompt=prompt).images[0]
ベース + リファイナーパイプラインの使用例
from diffusers import DiffusionPipeline
import torch
base = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, variant="fp16", use_safetensors=True
)
base.to("cuda")
refiner = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0",
text_encoder_2=base.text_encoder_2,
vae=base.vae,
torch_dtype=torch.float16,
use_safetensors=True,
variant="fp16",
)
refiner.to("cuda")
n_steps = 40
high_noise_frac = 0.8
prompt = "A majestic lion jumping from a big stone at night"
image = base(
prompt=prompt,
num_inference_steps=n_steps,
denoising_end=high_noise_frac,
output_type="latent",
).images
image = refiner(
prompt=prompt,
num_inference_steps=n_steps,
denoising_start=high_noise_frac,
image=image,
).images[0]
torch >= 2.0の場合の高速化
pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True)
GPU VRAMが限られている場合
- pipe.to("cuda")
+ pipe.enable_model_cpu_offload()
✨ 主な機能
モデル構成
SDXL は、潜在拡散のための エキスパートアンサンブル パイプラインで構成されています。最初に、ベースモデルを使用して(ノイズのある)潜在変数を生成し、それをさらにリファインモデル(https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/ で入手可能)で最終的なノイズ除去ステップを行います。ベースモデルは単独でも使用できます。
または、以下のような2段階のパイプラインを使用することもできます。まず、ベースモデルを使用して目的の出力サイズの潜在変数を生成します。次に、特殊な高解像度モデルを使用し、SDEdit(https://arxiv.org/abs/2108.01073、「img2img」とも呼ばれる)という手法を最初のステップで生成された潜在変数に適用します。この手法は、最初の方法よりも少し遅く、より多くの関数評価が必要です。
ソースコードは、https://github.com/Stability-AI/generative-models で入手できます。
モデルの詳細
モデルのソース
研究目的では、最も人気のある拡散フレームワーク(トレーニングと推論の両方)を実装し、蒸留などの新機能が随時追加される generative-models
のGithubリポジトリ(https://github.com/Stability-AI/generative-models)をお勧めします。
Clipdrop は、無料のSDXL推論を提供しています。
- リポジトリ: https://github.com/Stability-AI/generative-models
- デモ: https://clipdrop.co/stable-diffusion
評価
上のグラフは、SDXL(リファインありとなし)に対するユーザーの好みをSDXL 0.9、Stable Diffusion 1.5、および2.1と比較して評価しています。SDXLベースモデルは、以前のバリアントよりも大幅に優れており、リファインモジュールと組み合わせたモデルは全体的に最良のパフォーマンスを達成します。
Optimumの利用
Optimum は、OpenVINO と ONNX Runtime の両方と互換性のあるStable Diffusionパイプラインを提供します。
OpenVINO
OptimumをOpenVINO用の依存関係とともにインストールします。
pip install optimum[openvino]
OpenVINOモデルをロードし、OpenVINO Runtimeで推論を実行するには、StableDiffusionXLPipeline
をOptimumの OVStableDiffusionXLPipeline
に置き換えます。PyTorchモデルをロードしてオンザフライでOpenVINO形式に変換する場合は、export=True
を設定できます。
- from diffusers import StableDiffusionXLPipeline
+ from optimum.intel import OVStableDiffusionXLPipeline
model_id = "stabilityai/stable-diffusion-xl-base-1.0"
- pipeline = StableDiffusionXLPipeline.from_pretrained(model_id)
+ pipeline = OVStableDiffusionXLPipeline.from_pretrained(model_id)
prompt = "A majestic lion jumping from a big stone at night"
image = pipeline(prompt).images[0]
詳細な例(静的リシェイピングやモデルコンパイルなど)は、Optimumの ドキュメント を参照してください。
ONNX
OptimumをONNX Runtime推論用の依存関係とともにインストールします。
pip install optimum[onnxruntime]
ONNXモデルをロードし、ONNX Runtimeで推論を実行するには、StableDiffusionXLPipeline
をOptimumの ORTStableDiffusionXLPipeline
に置き換えます。PyTorchモデルをロードしてオンザフライでONNX形式に変換する場合は、export=True
を設定できます。
- from diffusers import StableDiffusionXLPipeline
+ from optimum.onnxruntime import ORTStableDiffusionXLPipeline
model_id = "stabilityai/stable-diffusion-xl-base-1.0"
- pipeline = StableDiffusionXLPipeline.from_pretrained(model_id)
+ pipeline = ORTStableDiffusionXLPipeline.from_pretrained(model_id)
prompt = "A majestic lion jumping from a big stone at night"
image = pipeline(prompt).images[0]
詳細な例は、Optimumの ドキュメント を参照してください。
📦 使用方法
直接使用
このモデルは研究目的のみを想定しています。可能な研究分野やタスクには以下のようなものがあります。
- アートワークの生成とデザインやその他の芸術的なプロセスでの使用。
- 教育または創造的なツールでのアプリケーション。
- 生成モデルに関する研究。
- 有害な内容を生成する可能性のあるモデルの安全なデプロイ。
- 生成モデルの制限とバイアスの調査と理解。
以下に除外される使用方法を説明します。
想定外の使用
このモデルは、人や出来事の事実的または真実の表現を生成するように訓練されていないため、そのような内容を生成するためにモデルを使用することは、このモデルの能力範囲外です。
🔧 制限とバイアス
制限
- このモデルは完全な写真的リアリズムを達成できません。
- このモデルは読み取り可能なテキストをレンダリングできません。
- このモデルは、「青い球の上に赤い立方体」に対応する画像をレンダリングするなど、構成性を伴うより難しいタスクに苦労します。
- 顔や人物全体が適切に生成されない場合があります。
- このモデルのオートエンコーディング部分は損失があります。
バイアス
画像生成モデルの能力は印象的ですが、社会的バイアスを強化または悪化させる可能性もあります。
📄 ライセンス
このモデルは CreativeML Open RAIL++-M License の下で提供されています。