🚀 SD-XL 1.0-baseモデルカード
[SDXL 1.0-base]は、テキストプロンプトに基づいて画像を生成および変更することができる拡散ベースのテキスト-to-画像生成モデルです。潜在拡散のためのエキスパートアンサンブルパイプラインを使用しており、高品質な画像生成が可能です。
🚀 クイックスタート
このモデルを使用する前に、必要なライブラリをインストールしましょう。
まず、diffusers
をバージョン0.19.0以上にアップグレードします。
pip install diffusers --upgrade
さらに、transformers
、safetensors
、accelerate
、およびinvisible_watermark
をインストールします。
pip install invisible_watermark transformers accelerate safetensors
✨ 主な機能
- 画像生成: テキストプロンプトに基づいて高品質な画像を生成します。
- 二段階パイプライン: 基本モデルとリファイナーモデルを組み合わせた二段階パイプラインを使用して、さらに良質な画像を生成できます。
- 複数の推論方法:
diffusers
やOptimum
を使用して、異なる推論方法でモデルを実行できます。
📦 インストール
diffusersを使用する場合
pip install diffusers --upgrade
pip install invisible_watermark transformers accelerate safetensors
Optimumを使用する場合
OpenVINO用の依存関係をインストール
pip install optimum[openvino]
ONNX Runtime推論用の依存関係をインストール
pip install optimum[onnxruntime]
💻 使用例
基本的な使用法
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が制限されている場合、CPUオフロードを有効にする
- pipe.to("cuda")
+ pipe.enable_model_cpu_offload()
📚 ドキュメント
モデルの詳細
SDXLは、潜在拡散のためのエキスパートアンサンブルパイプラインで構成されています。最初に、基本モデルを使用して(ノイズのある)潜在変数を生成し、それをさらにリファイナーモデル(https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/ で入手可能)で最終的なノイズ除去ステップを行います。基本モデルは、単独で使用することもできます。
または、以下のような二段階パイプラインを使用することもできます。まず、基本モデルを使用して目的の出力サイズの潜在変数を生成します。次に、特殊な高解像度モデルを使用し、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の使用方法
OpenVINO
- 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]
ONNX
- 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]
🔧 技術詳細
このモデルは、潜在拡散モデルをベースにしており、2つの固定された事前学習済みテキストエンコーダー(OpenCLIP-ViT/GとCLIP-ViT/L)を使用しています。エキスパートアンサンブルパイプラインを使用して、高品質な画像生成を実現しています。
📄 ライセンス
このモデルは、CreativeML Open RAIL++-M Licenseの下で提供されています。
用途
直接的な使用
このモデルは、研究目的のみを想定しています。可能な研究分野やタスクには、以下のようなものがあります。
- アートワークの生成と、デザインやその他の芸術的プロセスでの使用。
- 教育または創造的なツールでのアプリケーション。
- 生成モデルに関する研究。
- 有害なコンテンツを生成する可能性のあるモデルの安全な展開。
- 生成モデルの制限とバイアスの調査と理解。
以下に記載されている使用方法は除外されます。
想定外の使用
このモデルは、人やイベントの事実的または真実の表現を生成するように訓練されていないため、そのようなコンテンツを生成するためにモデルを使用することは、このモデルの能力範囲外です。
制限とバイアス
制限
- モデルは完全な写真的リアリズムを達成しません。
- モデルは読み取り可能なテキストをレンダリングすることができません。
- モデルは、「青い球の上に赤い立方体」のような構成性を伴うより難しいタスクに苦労します。
- 顔や人全体が適切に生成されない場合があります。
- モデルのオートエンコーダー部分は損失があります。
バイアス
画像生成モデルの能力は印象的ですが、社会的バイアスを強化または悪化させる可能性もあります。