说明文档
I need to find the README content. Let me check the current directory for the file.
---
license: openrail++
tags:
- text-to-image
- stable-diffusion
---
# SD-XL 1.0-base 模型卡片

## 模型

[SDXL](https://arxiv.org/abs/2307.01952) 由一个用于潜在扩散的[专家集成](https://arxiv.org/abs/2211.01324)流水线组成:
在第一步中,基础模型用于生成(带噪声的)潜变量,
然后使用专门用于最终去噪步骤的细化模型(可在此处获取: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 License](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/blob/main/LICENSE.md)
- **模型描述:** 这是一个可以根据文本提示词生成和修改图像的模型。它是一个[潜在扩散模型](https://arxiv.org/abs/2112.10752),使用两个固定的预训练文本编码器([OpenCLIP-ViT/G](https://github.com/mlfoundations/open_clip) 和 [CLIP-ViT/L](https://github.com/openai/CLIP/tree/main))。
- **更多信息资源:** 请查看我们的 [GitHub 仓库](https://github.com/Stability-AI/generative-models)和 [arXiv 上的 SDXL 报告](https://arxiv.org/abs/2307.01952)。
### 模型来源
出于研究目的,我们推荐使用我们的 `generative-models` Github 仓库,该仓库实现了最流行的扩散框架(包括训练和推理),并且将随时间添加蒸馏等新功能。
[Clipdrop](https://clipdrop.co/stable-diffusion) 提供免费的 SDXL 推理服务。
- **代码仓库:** https://github.com/Stability-AI/generative-models
- **演示:** https://clipdrop.co/stable-diffusion
## 评估

上图表评估了用户对 SDXL(有细化和无细化)相对于 SDXL 0.9 和 Stable Diffusion 1.5 及 2.1 的偏好。
SDXL 基础模型的表现明显优于之前的版本,而与细化模块结合使用的模型则实现了最佳的整体性能。
### 🧨 Diffusers
请确保将 diffusers 升级到 >= 0.19.0:
pip install diffusers --upgrade
此外,请确保安装 `transformers`、`safetensors`、`accelerate` 以及不可见水印工具:
pip install invisible_watermark transformers accelerate safetensors
如果只想使用基础模型,可以运行:
```py
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.compile 将推理速度提高 20-30%。只需在运行流水线之前用 torch compile 包装 unet:
pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True)
如果受到 GPU VRAM 的限制,可以通过调用 pipe.enable_model_cpu_offload
而不是 .to("cuda") 来启用 cpu offloading:
- pipe.to("cuda")
+ pipe.enable_model_cpu_offload()
有关如何使用 diffusers 操作 Stable Diffusion XL 的更多信息,请查看 Stable Diffusion XL 文档。
Optimum
Optimum 提供了一个兼容 OpenVINO 和 ONNX Runtime 的 Stable Diffusion 流水线。
OpenVINO
安装带有 OpenVINO 所需依赖的 Optimum:
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
安装带有 ONNX Runtime 推理所需依赖的 Optimum:
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 文档中找到更多示例。
用途
直接使用
该模型仅用于研究目的。可能的研究领域和任务包括
- 艺术作品的生成以及在设计和其他艺术过程中的应用。
- 教育或创意工具中的应用。
- 生成式模型的研究。
- 安全部署可能生成有害内容的模型。
- 探索和理解生成式模型的局限性和偏见。
排除的用途如下所述。
超出范围的使用
该模型未经训练以成为人物或事件的真实或事实性表征,因此使用该模型生成此类内容超出了该模型的能力范围。
局限性和偏见
局限性
- 该模型无法实现完美的照片级真实感
- 该模型无法渲染清晰的文字
- 该模型在处理更复杂的组合性任务时会遇到困难,例如渲染与"蓝色球体上的红色立方体"对应的图像
- 人脸和人物可能无法正确生成。
- 模型的自编码部分是有损的。
偏见
虽然图像生成模型的功能令人印象深刻,但它们也可能强化或加剧社会偏见。
Fucius/stable-diffusion-xl-base-1.0
作者 Fucius
创建时间: 2024-03-18 05:33:36+00:00
更新时间: 2024-03-18 06:00:09+00:00
在 Hugging Face 上查看