本文是Stable Diffusion系列第二篇。
在上一篇文章中,我们介绍了在本地使用Diffusers运行Stable Diffusion模型,并使用Text to Image技术使用提示词让AI生成了图片。在本篇文章中,我们将介绍如何使用社区提供的LoRA对模型的输出进行微调。
LoRA(Low-Rank Adaptation)是模型训练中的一种模型微调技术,用于在少量数据上快速训练新的模型。LoRA通过冻结基础模型的大部分参数,只对少量参数进行微调来实现这一点。LoRA可以使生成的图片增加更多的细节,例如生成特定的角色、动作、背景等。它可以基于现有模型而不必从头开始训练,优点是训练时间短、占用内存少。因此在hugging face和Civitai上可以下载到大量社区提供的LoRA。
今天我们示例的LoRA如下:
请注意,在详情页关注Base Model选项,根据你运行的模型的Base Model选择合适的LoRA。比如,本文示例的模型为DreamShaper XL,因此选择LoRA时应该对应的Base Model为SDXL 1.0。这在上一篇文章中有提到。
使用如下代码生成基准图片:
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")
注意提示词为一个穿背心裙的长发亚洲女孩(卡通风格),其它参数在上一篇文章中有介绍。

首先在上面给出的网页上下载safetensors格式的LoRA文件,然后在代码中加上一行代码:
pipe.load_lora_weights("your/path", weight_name="lora_name.safetensors")
这里有两个参数,前面一个参数是LoRA所在的目录,第二个参数是LoRA的文件名。
此外,阅读LoRA详情页,一般作者都会提供触发关键词,如果作者未提供关键词,可能该LoRA会自动触发,也可以尝试在提示词中添加这个LoRA的名字。
接下来我们看下分别使用这4个LoRA的效果。
触发关键词:guofeng或Chinese style。

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

触发关键词:pixel。
![]()
触发关键词:(add detail)++++++++。

本文介绍了使用LoRA为本地Stable Diffusion模型进行微调,并介绍了如何下载和使用社区提供的已经训练好的LoRA。使用LoRA可以使生成的图片增加更多的细节。LoRA是Text to Image技术对提示词优化的一种补充。
下一篇将介绍如何使用ControlNet和Adapter,使用Image to Image和Text to Image技术相结合,使用“草稿”对AI生成的图像进行规划和约束。