除了SD Web UI 或comfyUI,还有更简单的运行SDXL的方法吗?
想要从你的机器上生成令人惊叹的 AI 图像吗?你可能知道SD WebUI 或者 comfyUI,如果不想安装这些终端软件,又想快速体验,最快的方式是什么?本次以Stable Diffusion XL为例,它是当前最优秀的本地图像生成器之一,一起快速生成图片吧!
注意:你需要一张良好的显卡。至少需要 4G 的 VRAM;如果有 8G 或更多则效果会更好。
这里将在 Linux
系统上使用 Stable Diffusion XL
。如果你使用 WSL,那么在 Mac 或 Windows 上的操作步骤相同。
步骤 1:创建 Python 虚拟环境
建立一个 Python 虚拟环境。这有助于管理依赖项并保持项目的整洁。
python -m venv stablediff
激活虚拟环境:
source stablediff/bin/activate
应该在prompt之前看到环境的名称,以确保它已经生效:
步骤 2:安装依赖项
接下来,需要安装依赖项:
pip install invisible_watermark transformers accelerate safetensors xformers
最后,安装 diffusers,因为它会降级软件包以确保一切协同工作:
pip install diffusers
现在已经准备好创建你的 Python 文件并生成一些图像了!
步骤 3:创建一个简单的生成器
创建一个名为 app.py
或者你喜欢的其他名称的文件。
在那个文件中,导入库:
from diffusers import DiffusionPipeline
import torch
接下来,初始化 pipeline 来生成图像。将使用 stable-diffusion-xl-base-1.0
预训练模型。
设置数据类型为 float16 以提高内存效率,并启用 safetensors 的使用:
pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, use_safetensors=True, variant="fp16")
把 pipeline 发送到 GPU:
pipe.to("cuda")
提供文本提示,发送给模型。prompt提示词可以写任意所希望的内容。
prompt = "A anthropomorphic poodle riding a dirt bike through the forest"
可能想要添加的一件事是启用 transformers 以提高内存效率:
pipe.enable_xformers_memory_efficient_attention()
现在,可以生成图片啦~
images = pipe(prompt=prompt).images[0]
生成图像后,可以将其保存:
images.save("output.png")
步骤 4:运行它!
现在运行文件并获得一个酷炫的图像!
你应该在提示下看到类似以下的内容:
现在将会生成一张图像(output.png)!
相当惊艳,不是吗?
使用基础模型和优化器
你可以使用“专家集合”的模式,使用一个基础模型和一个优化器来获得更高质量的图像:
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 anthropomorphic poodle riding a dirt bike through the forest"
# 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]
这会产生一些不错的结果,你可以调整设置来得到更好的效果。
结论
这是我知道的运行 Stable Diffusion XL 最简单、最低成本的方法。如果你愿意,你也可以使用 Stable Diffusion Web UI 或者comfyUI,它提供了易于访问的许多控件,并允许你轻松地切换模型和优化器。
参考文献
[1] How to Generate AI Images with Stable Diffusion XL in Five Minutes
https://medium.com/generative-ai-today/how-to-generate-ai-images-with-stable-diffusion-xl-in-five-minutes-7a78c57f4be1
更多精彩内容,请关注公众号:AI生成未来
欢迎加群交流AIGC技术,添加小助手
更多推荐
所有评论(0)