Stable Diffusion WebUI is All You Need:麻瓜也能学会的AI炼丹

零、写在最前面

你怎么直到我喜提一张4090!?

一、什么是Stable Diffusion / Stable Diffusion WebUI

Stable Diffusion是一个CV(Computer Vision)模型,可以利用文本提示(Prompt)生成图像。正如模型名所描述,该模型使用名为扩散(Diffusion)过程的技术,将图像生成视为一种过程,该过程从一个随机噪声图像开始,然后逐渐增加详细的信息,直到生成所需的图像。

当然,SD模型的原理自然不是上面的三言两语就能解释明白的,但是博主作为CV麻瓜也只能理解到这个程度。但是,这完全不影响我们麻瓜炼丹, Muggle Lives Matter!

我们CV麻瓜想要使用SD自然不可能从代码开写,那是科班魔法师的活。麻瓜使用SD主要依赖的就是Stable Diffusion WebUI,SD WebUI和SD的关系就像是车身和引擎,让我们免去直接驾驭模型本身的烦恼。Stable Diffusion WebUI提供了诸如图像生成、图像修复、图像超分辨率放大等功能,并且支持自定义插件的安装,有着足够高的灵活性和可定制性。

二、如何安装配置Stable Diffution WebUI

1.安装Python & Git & Cuda

a.Python

Stable Diffusion WebUI是基于Python开发的,我们需要在本地安装一个Python环境。Python从 https://www.python.org/downloads/ 下载,根据操作系统选择对应的Win/Linux/Mac版本,博主的Python版本号是3.9.12,选择其他版本应该也没有问题。安装时务必勾选“Add Python to PATH”;如选择自定义安装,务必选择安装PIP。

b.Git

Git是一个开源的分布式版本控制系统,我们可以用Git把SD WebUI的代码同步至本地并在后续进行更新。Git从https://git-scm.com/downloads下载,同样根据操作系统选择对应的版本,版本号随意。

c.Cuda

Cuda是NVDIA开发的并行计算平台和API模型,让开发人员可以使用GPU执行除了图形渲染之外的任务。简单点说,我们想用N卡炼丹就必须安装Cuda。当然,A卡倒也不是不能炼丹,但是对于麻瓜来说用Ort来驾驭A卡并不是一个好选择。

在安装Cuda前,确保已经安装Nvida显卡驱动。Cuda版本和驱动版本的对照表在https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html,根据需要从https://developer.nvidia.com/cuda-downloads下载对应版本的Cuda。

2.安装Stable Diffusion WebUI

a.下载

打开你想要安装SD WebUI的文件夹(建议固态硬盘,机械硬盘加载模型的速度会让你怀疑人生),在地址栏输入“cmd”打开命令行工具,运行下列命令来克隆SD WebUI:

git clone github.com/AUTOMATIC1111/stable-diffusion-webui.git

如果克隆失败,可以运行下列命令使用Ghproxy代理下载:

git clone https://ghproxy.com/https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

b.初始化 & 启动

克隆完成后,打开SD WebUI文件夹,编辑launch.py(建议使用VSCode等工具,都没有用TXT打开也行),替换所有的https://github.com为https://ghproxy.com/https://github.com 。使用Ghproxy进行代理,以安装后续依赖。

理论上来说最好用Venv或者Conda之类的工具创建一个虚拟环境来配置SD WebUI的依赖,但是我们麻瓜大概率也就只用Python配置SD WebUI了,虚拟环境倒也不是那么有必要(绝不是因为博主懒得写了)。

进入到SD WebUI的文件夹,同样输入“cmd”打开命令行工具,使用下列指令安装SD WebUI所需要的依赖项:

pip install -r requirements_versions.txt

然后执行下列命令以初始化并运行SD WebUI:

.\webui-user.bat

至此,我们已经成功安装了SD WebUI。SD WebUI的默认端口是7860,访问http://127.0.0.1:7860/即可打开。

c.远程访问 & 登录设置

先关掉SD WebUI, 打开webui-user.sh,现在有一部分被注释的代码:

# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
#export COMMANDLINE_ARGS=""

在这里进行修改,填入你希望设置的账号密码:

# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
export COMMANDLINE_ARGS="--listen --gradio-auth 用户名:密码"

三、如何使用 Stable Diffution WebUI

1.咒语入门

Prompt就是所谓的咒语,用于描述我们希望生成的图像具有哪些特征;Negative Prompt就是所谓的反咒,用于描述我们希望生成的图像不具有哪些特征,通常用于提高生成图像的质量。

分隔符:通常用,分割,有一定的权重排序功能,逗号前权重高逗号后权重低,建议按照Prompt的重要度进行排序。

权重控制:我们可以根据自己需要调整各Prompt的权重,例如我期望能够强调或是减弱“夜晚”这一要素,那么可以用如下写法调整该元素的权重:

// 权重为1.20
(night:1.20) 
// 权重为1.10
(night) 
// 权重为1.05
{nigth}

// 权重为0.80
(night:0.80 
// 权重除以1.10
[night] 

// 权重符号可以组合使用,权重为1.21
((night))

2.参数详解(txt2img)

采样方法(Sampling method):选择用于生成图像的采样方法。默认情况下,该参数设置为“Eulea”。博主进行初步测试, 不同方法生成的图像会有些微差异,不同方法所需要的迭代步数差别较大,如果换个方法图像质量变差可以尝试增加迭代步数 。

迭代步数(Sampling steps): 指定图像生成的迭代次数。较多的迭代次数通常会导致更好的图像质量,但也需要更长的时间来完成生成。一般建议20-50之间,更多的迭代带来的收益很小。

宽度&高度(Width & Hight):指定图片生成的高度和宽度。较大的高度宽度需要更多的显存计算资源,常用的参数有512、768、1024。不建议直接生成1024*1024及以上的图片,因为训练数据集通常是在512这个尺度上,在1024尺度上生成通常会造成人物畸形,如需生成更高清的图像可以使用Hires.fix、Tilled Didffsion等方法。

生成批次(Batch count):指定批次数量。

每批数量(Batch size):指定每一批次要生成的图像数量。生成的图像总数等于Batch Count * Batch size。

提示词相关性(CFG Scale):变更图像与提示符的一致程度。数值越大,图像更接近你的提示,但过高会让图像色彩过于饱和;数值越小,AI绘图发挥的自我空间越大越有可能产生有创意的结果,但过小会让图像难以从Prompt重获得信息。一般建议选择7-20.

种子(Seed): 指定一个随机种子,将用于初始化图像生成过程。相同的种子值每次都会产生相同的图像集,这对于再现性和一致性很有用。如果将种子值保留为-1,则每次运行时将生成一个随机种子。

优化面部(Restore faces):优绘制面部图像可勾选,头像是近角时勾选貌似容易过度拟合出现虚化,适合在远角时勾选该选项。

可平铺(Tiling):用于生成一个可以平铺的图像。

Hires. fix:勾选该选项可以提高生成图像的分辨率。该部分有两个新的参数:Upscaler决定使用哪种算法;Denoising strength决定算法对图像内容的保留程度,在0处,什么都不会改变,而在1处,会得到一个不相关的图像。

3.插件推荐

写在最前面,SD WebUI在Extensions模块里可以选择“Install from URL”,输入对应插件的Github链接即可安装插件。国内部分地区无法直接访问Github,这种情况下使用梯子从Github下载插件,放入SD WebUI根目录的extensions文件夹中。点击“Apply and restart UI”即可应用插件。

Stable-Diffusion-Webui-Civitai-Helper: 这是一款强大的模型/LORA管理插件,可以自动链接C站(civital)下载缩略图和更新版本。

a1111-sd-webui-tagcomplete:能在输入Tag时提供booru风格(如Danbooru)的TAG自动补全。因为有一些模型是基于这种TAG风格训练的(例如Waifu Diffusion),因此使用这些Tag能获得较为精确的效果。

sd-webui-prompt-all-in-one: 旨在提高提示词/反向提示词输入框的使用体验。它拥有更直观、强大的输入界面功能,它提供了自动翻译、历史记录和收藏等功能。

a1111-sd-webui-lycoris:除了LoRA外,现在有一类新的模型LyCORIS,原生SD WebUI并不支持LyCORIS,安装该插件才能使用。

multidiffusion-upscaler-for-automatc1111:该插件有在有限的显存中进行大型图像绘制、区域提示控制等功能。炼丹进阶插件,对于显存不足的炼丹师很有用。

ControlNet: 通过添加额外控制条件,来引导 Stable Diffusion 按照创作者的创作思路生成图像,从而提升 AI 图像生成的可控性和精度。 炼丹进阶插件,可以更好地实现炼丹师的想法。

4.网站推荐

Civitai:C站,炼丹师必备。发布了海量的Checkpoint、Lora、LyCORIS等,常见的模型都可以在C站找到。 SD WebUI的模型放在根目录的models文件夹中,其中Stable-diffusion子文件夹存放Checkpoint,其他各子文件夹对应各类模型的,例如Lora、VAE、LyCORIS等。

AIGODLIKE社区:AI绘画画廊,图片包含使用的模型、Prompt及各参数,方便用户复现、分享。

片绘:AI绘画社区。

5.VAE

VAE = variational autoencoder(变化自动编码器)。它是神经网络的一部分,用于将图片编码到latent space,以及从latent space中恢复成图片。这么做的目的,是因为latent space空间更小,计算速度更快。

一般来说,VAE的作用比较小。一个优化过的VAE可以在将图片从“潜空间”解码时效果更好,可以恢复更多的细节。例如可以有助于渲染眼睛,以及文本(图片里生成的文本)的细节。笔者使用的直观感受是,VAE比较像AI绘画的滤镜,不同的VAE会为生成的图片带来不同的风格,但不会影响主体。

现在SD WebUI自带一个VAE,各类模型在发布时通常会给出其使用的VAE,目前没有一个统一的发布VAE的网站,炼丹师在使用的时候注意对比、收集。

Leave a Reply

Your email address will not be published. Required fields are marked *