玩了几天 Stable Diffusion

Stable Diffusion 是去年就出来的东西了,我没有去早点玩这个东西是因为当时我的电脑算力真的不够,我直接用 Mid Journey 的 Discord 群组凑合体验了一下,换了新电脑自然要玩玩这个东西。

部署

我直接部署stable-diffusion-web-ui,毕竟这已经是一个成熟的方案了。

Clone 仓库

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

修改webui-user.bat

1
2
3
4
5
6
7
8
@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS= --xformers --medvram

call webui.bat

我用的 RTX 3060 Laptop 有6G显存,所以选用--medvram参数。

执行用户,注意这套脚本要使用普通用户(非管理员)执行。

1
2
cd stable-diffusion-webui
webui-user.bat

这套东西只在 Python 3.10.6 上测试过,当时用 Python 3.11 时安装过程出现了报错,如果现在用的是 Python 3.11 记得换成 Python 3.10.6,修改环境变量,然后重启电脑。

DiffusionWrapper has 859.52M params

正常情况下,这套脚本会自动下载所需要的依赖。记得我当时在部署的时候是半夜,挂着终端代理,这个脚本跑了半天。第二天起来,依然卡在昨天晚上的地方,也就是DiffusionWrapper has 859.52M params

上课回来,在网上一搜索,才发现遇到这个问题的人还真不少,Github 上也有人在stable-diffusion-webui的官方库里提了 issue,看起来是hugging-facefile-download.py出现了bug,而非stable-diffusion-webui本身的问题。这是解决方案:Github上的解决方案

修改hugging_face

定位到<INSTALL_FOLDER>\stable-diffusion-webui\venv\Lib\site-packages\huggingface_hub\file_download.py的 1262 行,将其修改为:

1
blob_path = os.path.join(storage_folder, "blobs", etag[3:])

重新运行webui-user.bat,这次 webui 顺利启动了。

stable-diffusion-webui跑在本地默认的端口号是7860,访问http://localhost:7860就可以看到这套 Web UI 了。

stable-diffusion启动

stable-diffusion-webui界面

找模型

部署工作至此已告一段落,但stable-diffusion-webui部署下来自带的模型生成的图片并不符合我的需求和口味,我相信大部分人也不会只用这个默认的模型,那么随后的一件事就是找模型。

去哪找?

起初我也不知道去哪找,于是就傻乎乎的 Google 了一下:stable diffusion anime model。别说,还真奏效了。搜出来的结果里立刻就出现了Hugging faceCivit-AI。Civit-AI还能直观的看到每个模型的预览图。

除此之外,Reddit 等论坛上,像我一样的个人博客上,都可以看到网友们的模型推荐,用这种方式找模型也很不错。

Problem solved.

找到的模型

就这么去了 Civit-AI 的首页,第一眼就被counterfeit模型吸引了。

counterfeit模型

除此之外,Anything也是非常流行的模型,也被我收入囊中。

可以自己训练模型吗?

先说结论:理论上来说,可以。但我这个 3060 Laptop……还是算了吧。

Stable diffusion 有几种主要的训练方法,Textual Inversion, Hyper Network, Dream booth, Lora。即使是配置要求最低的 Lora,也要求至少 8G 的显存,而 3060 Laptop 只有 6G 显存。既然如此,就不折磨自己了,还是直接用训练好的现成模型吧,感谢社区。

开始用

一开始我在 CivitAI 上下载下来Counterfeit-V2.5模型,CivitAI 上只有一个 4.1G 的CounterfeitV25_25.safetensors文件。我将其下载下来丢进了<INSTALL DIR>\stable-diffusion-webui\models\Stable-diffusion文件夹,刷新一下Web UI的模型列表就看到了这个模型,于是我就很顺利的加载了这个模型开始用了。

这……不对啊

先来看看这个时候的生成效果:

00000-2669052925

00012-2065576542

00035-3723924490

这……不对啊。怎么感觉我被这个模型的样图给骗了?

来看看作者生成的样图:

002

007

我们用的真的是同一个模型吗?可以看到我和作者生成了一张大体十分相似的图片,那是我用和作者相同的 Prompt 和种子生成的,作者生成的图片,不论是画面细节,还是色彩,都和我一开始用这个模型的时候生成的几乎完全不是一个东西,难道我是下错模型了?

找问题

我在论坛里翻找遇到相同问题的帖子,发现其实遇到同样问题的人还真不少,大多数人都抱怨生成的图片细节不够,色彩不够鲜艳。根据我的经验,肯定是少装了些什么东西。

EasyNegative

EasyNegative 可以被看做一个 Super Prompt,用于改善模型生成图片的质量。

EasyNegative效果

谷歌 EasyNegative 第一个出来的就是为counterfeit-v2.5模型设计,于是我便下载下来使用了。链接附上:gsdf EasyNegative

This is a Negative Embedding trained with Counterfeit. Please use it in the “\stable-diffusion-webui\embeddings” folder. It can be used with other models, but the effectiveness is not certain.

这套 EasyNegative 同样适用于 AbyssOrangeMix2anything等模型,我愿称之为必备。

到了这一步,我总算是知道为什么所有人的 Prompt 里总要有个EasyNegative了,原来是个 Super Prompt。

装好 Easy Negative,生成的图片就正常多了。

00004-3723924490

但总感觉色彩还是不好看啊……是不是还缺了什么?

VAE

我在 Hugging Face 上看了一下,这里模型作者提供了远远不止一个的文件。

VAE 的全程是 Variational Autoencoder。旨在帮助用户更好的渲染图像,其中也包括了色彩的部分。而不知出于什么原因,作者只在 Hugging Face 上提供了他的 VAE。

装好 VAE,再次生成图像,这下的图像终于完全正常了。

00008-3723924490

这几天生成的图片

这是我挑选的一些图片

00009-3723924490

00019-3798999894

00025-20447565

00006-323134003

阴间的图片

其实上面最后一张图的手指已经是有生成问题的,而生成的图片里还有更阴间的图片。

00022-805092293

00020-2866285131

00021-2462655427

玩玩插件

这套 WebUI 还有插件可玩,这几天又心血来潮玩玩比较出名的插件。

至于怎么安装插件,都是在这套 Web UI 的 Extensions 里。一是从官方仓库里拉取插件列表,二是自己找到插件的仓库链接拉库下载即可。

我们来玩玩插件。

controlnet

controlnet 可以通过草图控制画中人物的姿势,理论上可以解决上面生成的人物阴间的问题。