ONNX 模型库
返回模型

说明文档

SD-XL 1.0-base 模型卡

row01

模型

pipeline

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

评估

comparison 上图评估了用户对 SDXL(带和不带精炼)与 SDXL 0.9 及 Stable Diffusion 1.5 和 2.1 的偏好。 SDXL 基础模型的性能明显优于之前的版本,而结合精炼模块的模型实现了最佳整体性能。

🧨 Diffusers

请确保将 diffusers 升级到 >= 0.19.0:

pip install diffusers --upgrade

此外,请确保安装 transformerssafetensorsaccelerate 以及隐形水印:

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")

# 如果使用 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

# 加载基础模型和精炼模型
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")

# 在此定义每个专家运行的步数以及步数百分比(80/20)
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 时,您可以通过 torch.compile 将推理速度提高 20-30%。只需在运行管道之前用 torch compile 包装 unet:

pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True)

如果您的 GPU 显存受限,您可以通过调用 pipe.enable_model_cpu_offload 来启用 CPU 卸载,而不是 .to("cuda")

- pipe.to("cuda")
+ pipe.enable_model_cpu_offload()

有关如何使用 diffusers 的 Stable Diffusion XL 的更多信息,请查看 Stable Diffusion XL 文档

Optimum

Optimum 提供了一个与 OpenVINOONNX 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 文档中找到更多示例。

使用

直接使用

该模型仅用于研究目的。可能的 研究领域和任务包括:

  • 艺术品生成以及在设计和其他艺术过程中的应用。
  • 教育或创意工具中的应用。
  • 生成模型研究。
  • 安全部署可能生成有害内容的模型。
  • 探查和理解生成模型的局限性和偏见。

下文描述了排除的使用场景。

范围外使用

该模型并未训练为事实性或真实的人物或事件表示,因此使用该模型生成此类内容超出了该模型的能力范围。

局限性和偏见

局限性

  • 该模型无法实现完美的照片级真实感
  • 该模型无法渲染可辨认的文字
  • 该模型在更复杂的组合性任务中表现困难,例如渲染"蓝色球体上的红色立方体"对应的图像
  • 人脸和一般人物可能无法正确生成。
  • 模型的自动编码部分是有损的。

偏见

虽然图像生成模型的能力令人印象深刻,但它们也可能加强或加剧社会偏见。

stabilityai/stable-diffusion-xl-base-1.0

作者 stabilityai

text-to-image diffusers
↓ 2.2M ♥ 7.5K

创建时间: 2023-07-25 13:25:51+00:00

更新时间: 2023-10-30 16:03:47+00:00

在 Hugging Face 上查看

文件 (57)

.gitattributes
01.png
LICENSE.md
README.md
comparison.png
model_index.json
pipeline.png
scheduler/scheduler_config.json
sd_xl_base_1.0.safetensors
sd_xl_base_1.0_0.9vae.safetensors
sd_xl_offset_example-lora_1.0.safetensors
text_encoder/config.json
text_encoder/flax_model.msgpack
text_encoder/model.fp16.safetensors
text_encoder/model.onnx ONNX
text_encoder/model.safetensors
text_encoder/openvino_model.bin
text_encoder/openvino_model.xml
text_encoder_2/config.json
text_encoder_2/flax_model.msgpack
text_encoder_2/model.fp16.safetensors
text_encoder_2/model.onnx ONNX
text_encoder_2/model.onnx_data
text_encoder_2/model.safetensors
text_encoder_2/openvino_model.bin
text_encoder_2/openvino_model.xml
tokenizer/merges.txt
tokenizer/special_tokens_map.json
tokenizer/tokenizer_config.json
tokenizer/vocab.json
tokenizer_2/merges.txt
tokenizer_2/special_tokens_map.json
tokenizer_2/tokenizer_config.json
tokenizer_2/vocab.json
unet/config.json
unet/diffusion_flax_model.msgpack
unet/diffusion_pytorch_model.fp16.safetensors
unet/diffusion_pytorch_model.safetensors
unet/model.onnx ONNX
unet/model.onnx_data
unet/openvino_model.bin
unet/openvino_model.xml
vae/config.json
vae/diffusion_flax_model.msgpack
vae/diffusion_pytorch_model.fp16.safetensors
vae/diffusion_pytorch_model.safetensors
vae_1_0/config.json
vae_1_0/diffusion_pytorch_model.fp16.safetensors
vae_1_0/diffusion_pytorch_model.safetensors
vae_decoder/config.json
vae_decoder/model.onnx ONNX
vae_decoder/openvino_model.bin
vae_decoder/openvino_model.xml
vae_encoder/config.json
vae_encoder/model.onnx ONNX
vae_encoder/openvino_model.bin
vae_encoder/openvino_model.xml