在stable-diffusion-webui中愉快地玩耍

抽空记录中,不研究内容prompt,目前在别人写的prompt下用不同工具调优。

目前的感觉是,场景物体细节越多的图,人物手和面容(眼睛、睫毛)的正常生成非常困难,即使有相关的Lora和negative prompt的进行加持,但基本上只在肢体离镜头比较近的时候才能正常work。既要保证场景内容丰富,又要保证肢体正常绘制,基本不可能一次正确生成,目前的策略是在喜欢的构图上进行肢体细节调优。

基于stable-diffusion-webui 1.6.0写的使用说明,版本更新时间是20230928

预训练模型下载网站:

  1. https://civitai.com/
  2. https://www.liblibai.com/
  3. https://tusi.art/
  4. https://www.esheep.com/

基本使用方法

项目安装

项目地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui

windows 环境下用 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 下载到本地,双击执行 webui-user.bat 以自动安装环境。

目录说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- modules 				// 网络定义
- models // 预训练模型存放位置
- Codeformer // 人脸修复模型,包括检测和语义分割模型
- ControlNet // ControlNet
- deepbooru // TODO
- ESRGAN // 通用图像超分模型
- GFPGAN // 特定域图像超分模型
- hypernetworks // 超参数网络模型
- karlo // TODO
- LDSR // 利用LDM提高图像分辨率
- RealESRGAN // 面相真实世界的通用图像超分模型
- Stable-Diffusion // stable-diffusion模型,包括Dreambooth
- SwinIR // 通用图像超分模型,基于Transformer
- VAE // VAE,用途如调整图像色彩分布
- VAE-aaprox // TO understanding
- embeddings // textual inversion权重存放位置
- extensions // 存放了从extensions中下载的其他功能的repository

启动参数

webui-user.bat

1
2
3
4
5
6
7
8
@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--no-gradio-queue --ad-no-huggingface --xformers

call webui.bat

参数获取

只需要在 PNG info 中拖入图片就可以获取生成时使用的相关参数,这看起来是因为SD-webui会将参数信息植入到图像中进行保存,如果 parameters 返回 None,则说明该图片可能不由SD-webui生成,或许是由 Midjourney 生成。

使用相关参数大概率可以复现出该图,但需要注意的是需要自己下载 positive prompt 中的 Lora 模型以及 negative prompt 中的 embedding,即便确保无误也无法完全复现,则证明该图是经过本人多次处理如Inpainting、Outpainting得到的结果。

get parameters

插件安装

一般有两种安装方法,一种是在 Extensions/Avaliable 中从 https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json 读取可安装的插件列表,想安装什么插件就搜索关键字然后找到 stars 最多的那个;另外一种是从 Extensions/install from URL 中从 git repository 中下载。

Civitai Helper

该插件能扫描所有模型,从Civitai下载模型信息和预览图进行显示。

安装完成后,需要先在tag页面中进行扫描操作:

Civitai helper scan

这个操作可以从civitai上下载匹配的模型对应的缩略图,需要等待一段时间(取决于下载模型的多少):

Civitai helper download thumbnail

扫描完成后,点击图标:

Show extra network

即可显示模型和对应的缩略图,更多使用方法请见 github

Civitai Helper

注:没有缩略图显示部分需要在对应模型目录下补一个同名图片。

ADetailer

可以用yolo模型检测手和脸的位置,并为这些部位进行单独重绘。

ADetailer model

ADetailer

提示词

a1111-sd-webui-tagcomplete

一个prompt自动补全插件。可以在youtube获取中文翻译。具体步骤如下:

  1. google drive中下载danbooru-SC.csv简体中文翻译文件。
  2. danbooru-SC.csv放在extensions\a1111-sd-webui-tagcomplete\tags中。
  3. 于stable-diffusion-webui的配置中,Settings\Tag AutocompleteTag filenameTranslation filename选项中分别设置danbooru-SC.csv

​ 安装完成后可以在txt2img和img2img的prompt中看到相关选项:tagcomplete

sd-webui-prompt-all-in-one

sd-webui-prompt-all-in-one旨在提高提示词/反向提示词输入框的使用体验。它拥有更直观、强大的输入界面功能,它提供了自动翻译、历史记录和收藏等功能。可以结合a1111-sd-webui-tagcomplete使用。如果页面在sd-webui初次启动时没有正常显示该插件内容,可以 F5 刷新页面。

prompt all in one

分块扩散

multidiffusion-upscaler-for-automatic1111

基于 Mixture of DiffusersMultiDiffusion 的分块扩散模型。

感觉 Tile VAE 部分可以正常使用,但是 Tile Diffusion 在 size 比较大的图像上容易导致内容重复绘制。

安装完成后可以在txt2img和img2img的选项卡中看到相关选项:

Tiled diffusion and tiled VAE

ControlNet相关

sd-webui-controlnet

基于 ControlNet 的条件扩散模型。

安装完成后可以在txt2img和img2img的选项卡中看到相关选项:

ControlNet

sd-webui-depth-lib

sd-webui-depth-lib

可以在对应位置摆上和调整手势深度图作为controlNet的输入。

900 Hands Library for Depth Library | ControlNet 网站上可以下载更多的不同手势的深度图。

900 Hands Library for Depth Library  ControlNet

下载后的 .zip 文件解压后里面的图片和 extensions/sd-webui-depth-lib/map 的深度图手势进行融合。

OpenPose Editor Tab

这个插件可以生成2D的openpose

OpenPose Editor

sd-webui-3d-open-pose-editor

3D OpenPose Editor

基于SD的超分

sd-webui-stablesr

基于StableSR的图像超分模型。

因为工作内容相关,所以对这个模型理解比较深入。

安装完成后可以在img2img的Script的选项卡中选择以看到相关选项:

StableSR

​ 下载好的StableSR预训练模型需要放置在extensions\sd-webui-stablesr\models

LyCORIS

“All its features have been integrated into the native LoRA extension
LyCORIS models can now be used as if there are regular LoRA models”

看起来后面的stable-diffusion-webui把这个功能集成了。

a1111-sd-webui-lycoris

安装插件后,需要在 model 的目录下创建一个文件名为 LyCoris 的文件夹,然后将模型保存其中,调用模型需在 prompt 中写入 <lyco:model:1>的形式。

界面设置

sd_vae显示

Setting->Show all pages中找到Quicksetting list,在其中加上sd_vae,如下图所示:

sd_vae

随后点击Apply settings之后Reload UI,可以看到页面上出现VAE的选项:

sd_vae

Face Restoration

从1.5.0更新到1.6.0之后页面不再显示这个页面,需要到 Setting/Show all pages 中找到 Options in main UI,搜索 face_resotrationface_restoration_mode 等都选上才能显示。

face restoration显示设置

模型

Stable Diffusion

对于Stable Diffusion而言,1.99GB的一般是fp16的模型,更大的一般是fp32的模型。

  1. SHMILY梦幻水彩,水彩风图像。

  2. ghostmix_v20Bakedvae,类似攻壳机动队图像。

  3. XXMix_9realistic,景深风格人像居多。

  4. majicMIX系列,如:

    1. majicMIX fantasy 麦橘幻想
    2. majicMIX lux 麦橘奇幻
    3. majicMIX realistic 麦橘写实
  5. Dark Sushi Mix 大颗寿司Mix,二次元画风。

  6. Counterfeit

VAE

  1. vae-ft-mse-840000-ema-pruned-vae.pt:该模型可以使生成的图片对比度更高,色彩更加丰富。

下面是例子:

woVAE1__woVAE2__wVAE1__wVAE2

  1. ClearVAE

LoRA

  1. add_detail,用以增加细节。
  2. more_detail,用来增加细节。
  3. Jellyfish-noise,用来生成水母森林。
  4. loong2-000015,用来生成中国龙。
  5. NijiExpressive_v2,用来生成忍者风格的人物。
  6. epi_noiseoffset,提高暗场景下单的对比度。

  7. iu_v35,画的是IU。

  8. BeautyNwsjMajic2-01,画的是娜乌斯嘉。
  9. sxz-death-knight,魔兽世界的骑士风格。
  10. hipoly_3dcg_v7-epoch,可以增加手部出图的稳定性。
  11. geometric_shapes,几何形状。
  12. Ink scenery,山水墨画。
  13. reference sheet-model,绘制参考图
  14. 焱落纱_v1.0,熔岩衣服
  15. Sun and Shadow(LAS),强烈的光影对比。
  16. FilmVelvia2, 胶片风。
  17. anxiang, 中国古风。
  18. circrex,机甲风

LyCORIS

  1. GoodHand,用来增加手部稳定出图概率。

embedding

大部分是在做手,一部分在做肢体。

  1. ng_deepnegative_v1_75t
  2. verybadimagenegative_v1.3
  3. easynegative
  4. badhandv4
  5. badhandsv5-neg
  6. Hires.fix

上采样方法

  1. 4x-UltrSharp
  2. R-ESRGAN 4x+Anime6B
  3. 8x_NMKD-Superscale_150000_G
  4. StableSR

功能

Inpainting

尽量使用和 text2img 相同的 prompt、negative prompt 和 sampling method 等。

Outpainting

一种使用场景是当相同的prompt无法在指定图像长宽比例生成对应的内容时,如 1024X1024 产生正常内容,而相同的prompt在 1024x1536 中可能产生多个主体,此时可以使用Outpainting进行在 1024X1024 的大小进行外拓展,以在期望图像比例达到类似的效果。

一种方法是在 img2img 的 tab 中使用 scriptOutpainting mk2,如下图设置将 1024X1024 的图片展成 1024X1536 的图片:

Outpainting mk2

结果图如下,当然我对其中不合理的倒影部分进行了 Inpainting :

after outpainting__before outpainting

Gif效果展示:

Script

prompt matrix

貌似是使用在prompt中使用语法|prompt1 | prompt2 | prompt3,然后进行抽奖。

手部调整

参考:https://www.youtube.com/watch?v=f7zanMM2FEc

embedding(textural inversion)

有的是面向通用模型,有的只是针对特定模型,结合prompt matrix进行。

LyCORIS/LORA

基于LyCORIS或者LORA模型控制:

如:

  1. GoodHand系列

My Case

[1] 在stable diffusion修复手姿的原理、分析与实践