模型概述
模型特點
模型能力
使用案例
🚀 SD-XL 1.0-base 模型卡片
SD-XL 1.0-base 是一款基於擴散模型的文本到圖像生成模型,可根據文本提示生成和修改圖像。它採用了集成專家的潛在擴散管道,能生成高質量的圖像,在藝術創作、教育工具等研究領域有廣泛應用。
🚀 快速開始
安裝依賴
在使用模型之前,需要安裝必要的依賴庫。確保將 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")
# if using torch < 2.0
# pipe.enable_xformers_memory_efficient_attention()
prompt = "An astronaut riding a green horse"
images = pipe(prompt=prompt).images[0]
使用基礎模型 + 精煉器管道
若要使用基礎模型和精煉器組成的集成專家管道,可以運行以下代碼:
from diffusers import DiffusionPipeline
import torch
# load both base & refiner
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")
# Define how many steps and what % of steps to be run on each experts (80/20) here
n_steps = 40
high_noise_frac = 0.8
prompt = "A majestic lion jumping from a big stone at night"
# run both experts
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)
當使用 torch >= 2.0
時,可以通過 torch.compile
提高推理速度,在運行管道之前用 torch.compile
包裝 unet
:
pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True)
GPU 顯存受限處理
如果受 GPU 顯存限制,可以調用 pipe.enable_model_cpu_offload
啟用 CPU 卸載,而不是使用 .to("cuda")
:
- pipe.to("cuda")
+ pipe.enable_model_cpu_offload()
更多關於使用 diffusers
運行 Stable Diffusion XL 的信息,請參考 Stable Diffusion XL 文檔。
✨ 主要特性
- 集成專家管道:採用集成專家的潛在擴散管道,先由基礎模型生成(有噪聲的)潛在變量,再由精煉模型進行最終去噪處理。
- 多種使用方式:基礎模型可單獨使用,也可與精煉模型結合使用,還能採用兩階段管道生成高分辨率圖像。
- 多框架支持:支持
diffusers
和Optimum
框架,Optimum
還兼容 OpenVINO 和 ONNX Runtime。
📦 安裝指南
安裝 Optimum(OpenVINO 支持)
若要使用 OpenVINO 運行模型,需安裝帶有 OpenVINO 依賴的 Optimum
:
pip install optimum[openvino]
安裝 Optimum(ONNX Runtime 支持)
若要使用 ONNX Runtime 運行模型,需安裝帶有 ONNX Runtime 推理依賴的 Optimum
:
pip install optimum[onnxruntime]
💻 使用示例
基礎用法
上述“快速開始”部分的代碼示例展示瞭如何使用基礎模型和基礎模型 + 精煉器管道生成圖像。
高級用法
OpenVINO 推理
以下是使用 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]
更多示例(如靜態重塑和模型編譯)可在 Optimum 文檔 中找到。
ONNX 推理
以下是使用 ONNX Runtime 運行推理的示例代碼:
- 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 文檔 中找到。
📚 詳細文檔
模型介紹
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 找到。
模型詳情
屬性 | 詳情 |
---|---|
開發者 | Stability AI |
模型類型 | 基於擴散的文本到圖像生成模型 |
許可證 | CreativeML Open RAIL++-M 許可證 |
模型描述 | 這是一個可根據文本提示生成和修改圖像的模型。它是一個 潛在擴散模型,使用兩個固定的預訓練文本編碼器(OpenCLIP-ViT/G 和 CLIP-ViT/L)。 |
更多信息資源 | 查看我們的 GitHub 倉庫 和 arXiv 上的 SDXL 報告。 |
模型來源
出於研究目的,我們推薦使用 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 基礎模型的性能明顯優於之前的版本,與精煉模塊結合使用時,整體性能最佳。
使用範圍
直接使用
該模型僅用於研究目的。可能的研究領域和任務包括:
- 藝術品生成,以及在設計和其他藝術過程中的應用。
- 教育或創意工具中的應用。
- 生成模型的研究。
- 對有可能生成有害內容的模型進行安全部署。
- 探索和理解生成模型的侷限性和偏差。
排除的使用情況如下所述。
超出範圍的使用
該模型並非用於生成真實或準確反映人物或事件的內容,因此使用該模型生成此類內容超出了其能力範圍。
侷限性和偏差
侷限性
- 模型無法實現完美的照片級真實感。
- 模型無法渲染清晰可讀的文本。
- 模型在處理涉及組合性的更復雜任務時存在困難,例如渲染與 “A red cube on top of a blue sphere” 對應的圖像。
- 面部和人物的生成可能不太理想。
- 模型的自動編碼部分存在信息損失。
偏差
雖然圖像生成模型的能力令人印象深刻,但它們也可能強化或加劇社會偏差。
📄 許可證
本模型採用 CreativeML Open RAIL++-M 許可證。

