Diffusers代码学习-SDXL 优化图像质量

SDXL包括专门用于对低噪声阶段图像进行去噪,使之可以从基本模型生成更高质量图像的优化器模型。有两种方法可以使用优化程序:

1. 将基础模型和优化器模型一起使用以生成优化的图像

2. 使用基本模型生成图像,然后使用优化器模型为图像添加更多细节(这就是SDXL最初的训练方式)

下面分别介绍一下这两种方式的实现。

1. 基础+优化器模型

当同时使用基本模型和优化器模型来生成图像时,这被称为专家去噪器的集合。与将基本模型的输出传递给优化器模型相比(第二种方式),专家去噪器集合方法需要更少的总体去噪步骤,因此运行速度应该更快。但是,您将无法检查基础模型的输出,因为它仍然包含大量噪声。

作为专家去噪器的集合,基本模型在高噪声扩散阶段充当专家,细化器模型在低噪声扩散阶段用作专家。以下为加载基本模型和优化器模型的代码实现:

 
# 以下代码为程序运行进行设置

import os

os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
rom 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
).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",
).to("cuda")

prompt = "A majestic lion jumping from a big stone at night"
image = base(
prompt=prompt,
num_inference_steps=40,
denoising_end=0.8,
output_type="latent",
).images # 这步的图像输出还不能直接查看
image = refiner(
prompt=prompt,
num_inference_steps=40,
denoising_start=0.8,
image=image,
).images[0]

image.show()

以下为输出结果

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

duhaining1976

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值