本文是Stable Diffusion系列第二篇。

上一篇文章中,我们介绍了在本地使用Diffusers运行Stable Diffusion模型,并使用Text to Image技术使用提示词让AI生成了图片。在本篇文章中,我们将介绍如何使用社区提供的LoRA对模型的输出进行微调。

LoRA

LoRA(Low-Rank Adaptation)是模型训练中的一种模型微调技术,用于在少量数据上快速训练新的模型。LoRA通过冻结基础模型的大部分参数,只对少量参数进行微调来实现这一点。LoRA可以使生成的图片增加更多的细节,例如生成特定的角色、动作、背景等。它可以基于现有模型而不必从头开始训练,优点是训练时间短、占用内存少。因此在hugging faceCivitai上可以下载到大量社区提供的LoRA

今天我们示例的LoRA如下:

请注意,在详情页关注Base Model选项,根据你运行的模型的Base Model选择合适的LoRA。比如,本文示例的模型为DreamShaper XL,因此选择LoRA时应该对应的Base ModelSDXL 1.0。这在上一篇文章中有提到。

基准图片

使用如下代码生成基准图片:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from diffusers import StableDiffusionXLPipeline, DPMSolverSinglestepScheduler


device = 'mps'

pipe = StableDiffusionXLPipeline.from_single_file(
    "your/path/dreamshaperXL_v21TurboDPMSDE.safetensors",
    use_safetensors=True
).to(device)
pipe.scheduler = DPMSolverSinglestepScheduler.from_config(pipe.scheduler.config, use_karras_sigmas=True)
# Recommended if your computer has < 64 GB of RAM
pipe.enable_attention_slicing()

prompt = "masterpiece, 1girl, long hair, asian, sundress, cartoon, add detail"
negative_prompt = 'low quality, bad quality, sketches'

image = pipe(
    prompt,
    negative_prompt=negative_prompt,
    num_inference_steps=6,
    guidance_scale=2,
).images[0]
image.save("data/out.jpg")

注意提示词为一个穿背心裙的长发亚洲女孩(卡通风格),其它参数在上一篇文章中有介绍。

使用LoRA

首先在上面给出的网页上下载safetensors格式的LoRA文件,然后在代码中加上一行代码:

1
pipe.load_lora_weights("your/path", weight_name="lora_name.safetensors")

这里有两个参数,前面一个参数是LoRA所在的目录,第二个参数是LoRA的文件名。

此外,阅读LoRA详情页,一般作者都会提供触发关键词,如果作者未提供关键词,可能该LoRA会自动触发,也可以尝试在提示词中添加这个LoRA的名字。

接下来我们看下分别使用这4个LoRA的效果。

国风插画

触发关键词:guofengChinese style

电影照片

触发关键词:无(自动触发)。

像素风格

触发关键词:pixel

添加细节

触发关键词:(add detail)++++++++

总结

本文介绍了使用LoRA为本地Stable Diffusion模型进行微调,并介绍了如何下载和使用社区提供的已经训练好的LoRA。使用LoRA可以使生成的图片增加更多的细节。LoRAText to Image技术对提示词优化的一种补充。

下一篇将介绍如何使用ControlNetAdapter,使用Image to ImageText to Image技术相结合,使用“草稿”对AI生成的图像进行规划和约束。