author: "路边的阿不" title: 在本地跑一个AI模型(6) - Stable Diffusion模型微调 slug: run-stable-diffusion-locally-with-lora description: "Learn how to fine-tune your local Stable Diffusion model with LoRA, a low-rank adaptation technique that adds more details to generated images. Discover how to download and use pre-trained LoRA models from the community, and explore examples of using LoRA with different styles, such as Chinese illustration and pixel art." date: 2024-04-22 11:53:55 draft: false ShowToc: true TocOpen: true tags:
本文是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
生成的图像进行规划和约束。