使用Stable Diffusion绘图

Stable Diffusion是一种新兴的生成对抗网络模型,主要用于通过文本描述生成图像。其基于DDPM和LDM,能够根据文本生成符合描述的图片,对于Stable Diffusion的详细原理,可以参考DDPMLDM的两篇论文。本文简单将介绍如何使用Stable Diffusion Webui进行绘图。

Stable Diffusion Webui环境搭建

本文主要介绍在本地进行Stable Diffusion绘图的方法,如果你想要使用Stable Diffusion Webui进行绘图,可以参考在线AI服务列表

计算机环境要求

Stable Diffusion基于Pytorch,因此要使用Stable Diffusion, 请先安装Python,Stable Diffusion Webui建议的Python 版本为 3.10.6,安装时请勾选将Python加入环境变量path,为了方便安装SD-Webui运行所必需的各类第三方库,请网络环境不好的用户为pip更换国内源或合理使用全局代理; GPU具有很强的并行计算能力,使用CUDA加速可以大幅提升Stable Diffusion的训练及使用速度,因此建议使用Nvidia显卡并安装CUDA开发环境,CUDA的安装及配置可以参考我的这篇博客,建议的CUDA版本为11.8,对于使用AMD显卡的用户,可以参考Webui Wiki中的解决方法;Stable Diffusion Webui有大量的插件支持,为了方便下载插件及更新SD-Webui,建议安装Git,关于Git的安装可以参考我的这篇博客,如果您的网络环境不能流畅访问Github,建议为Git设置代理或使用全局代理。

安装Stable Diffusion Webui

对于Windows用户,请在Powershell中运行以上和之后的命令,Linux用户应该不用我教了吧。

1
2
3
4
5
6
7
8
9
10
11
12
# 下载Stable Diffusion Webui
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

# 进入Stable Diffusion Webui目录
cd ./stable-diffusion-webui

#更新Stable Diffusion Webui
git pull

# 运行Stable Diffusion Webui一键脚本
./webui-user.bat

初次运行时,SD-Webui会自动创建虚拟环境和下载第三方库及实例模型,第一次运行之后,只要直接运行Stable Diffusion Webui一键脚本就可以启动了,在命令行使用 Ctrl+C 或者直接关闭命令行窗口退出。运行成功终端会显示如下信息:

1
Running on local URL:  http://127.0.0.1:7860

在浏览器访问上述链接即可进入Webui页面。

Stable Diffusion Webui插件安装

在 Webui 的 Extensions 页面可以安装插件,插件的安装方法有两种,一种是通过URL安装,一种是通过本地文件安装,本地文件安装需要将插件文件夹放在./stable-diffusion-webui/extensions目录下,URL安装则需要在插件页面输入Github仓库地址,例如:

1
2
3
4
5
# ControlNet插件
https://github.com/Mikubill/sd-webui-controlnet.git

# 方便下载模型的插件
https://github.com/LianZiZhou/sd-webui-pixink-console

使用Stable Diffusion Webui绘图的tricks

关于运行参数

运行参数在 stable-diffusion-webui/webui-user.bat 中可以设置,更改set COMMANDLINE_ARGS=后的内容即可,下面给出几个常用的参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 使用xformers优化
--xformers

# 禁用fp16,可以解决16系显卡提示A tensor with all NaNs was produced in Unet,同时对T4的性能可能有提升
--no-half

# 使用缩放点积注意力优化,对pytorch2.0及以上版本有效
--opt-sdp-attention

# 使用Doggettx's cross-attention layer优化,仅对CUDA加速生效
--opt-split-attention

# 牺牲部分速度以提升较小显存下的稳定性,6GB显存以下建议使用,6GB显存建议使用--medvram
--lowvram

关于提示词

  1. 可以使用tags、自然语言、emoji、颜文字作为prompt
  2. 合理调整权重,[]代表权重0.952,{}代表权重1.05,()代表权重1.1,不同括号叠加使用代表的权重相乘,建议使用小括号调整权重,如(purple_hair:1.2),权重越大,生成图片中该特征越明显,主要元素使用1以上的权重,次要元素使用1以下的权重,权重为1.5以上的元素会对画面产生较大影响。
  3. 使用中括号可以控制prompt出现的步数,如[pink|white|blue]_hair会在每三步交替使用pink_hairblue_hairwhite_hair,配合multicolored_hair可实现挑染发色效果,[girl:9]代表在第9步开始加入 girl 作为prompt,[girl:12]代表在第12步开始从prompt删除 girl ,[girl:dog:0.9]表示总步数的前90%使用 girl,其余使用 dog

关于i2i

合理使用i2i有助于更快跑出想要的图,可以先用t2i+ControlNet跑出大量构图好但是分辨率较低的大致图像,然后使用i2i打磨细节,或者使用Inpaint对局部进行修改;也可以使用t2i先跑出大致风格,然后再通过调整prompt和ControlNet对构图和人物动作进行调整。 通过调整 Denoising strength 可以调整i2i对图像的重构程度。以下是一个例子:

  1. 使用t2i+ControlNet进行构图:
    使用t2i+ControlNet进行构图

  2. 在i2i使用相同prompt和不同模型改变画风:
    在i2i使用相同prompt和不同模型改变画风

  3. 使用Inpaint对局部进行修改+Upscaling提高分辨率
    使用Inpaint对局部进行修改+Upscaling提高分辨率

关于模型下载

使用别人训练好的模型可以大幅提升绘图速度,如果想要针对个别特征进行调整,可以自行训练Lora,别人训练好的模型或Lora一般从网站社群(CivitaiHugging FacePix.ink)或者社交平台的社群获取。

结语

AI绘图是一项非常有趣的技术,Stable Diffusion是一种非常有潜力的模型,希望本文能够帮助到你,如果你有任何问题或者有任何值得分享的建议,欢迎在评论区提出。

1gitl, (touhou project), daylight , bluesky, high quality, 8k wallpaper, anime,
(Shameimaru_Aya:1.5), (wings:1.3), (full body:1.2), a camera in hands, 😘, (loli:1.4), cute
leaving center part of the screen blank,

作者

Jinyao

发布于

2024-12-06

更新于

2025-04-28

许可协议

评论