Stable Diffusion攻略集(Stable Diffusion官方文档、kaggle notebook、webui资源帖)

news2025/1/18 7:35:14

文章目录

  • 第一部分
    • 一、 Features:Textual Inversion(文本反转)
      • 1.1 Textual Inversion 简介
        • 1.1.1 摘要
        • 1.1.2 算法
        • 1.1.3 模型效果
      • 1.2 Textual Inversion of webai
        • 1.2.1 预训练embedding用于图片生成
        • 1.2.2 训练embedding
        • 1.2.3 Finding embeddings online
        • 1.2.4 Hypernetworks
    • 二、 Features: Negative prompt
    • 三、Xformers依赖
    • 四、NVidia GPUs安装
      • 4.1 自动安装
      • 4.2 自定义安装
    • 五、命令行参数和优化
    • 六、安装和使用自定义脚本
  • 第二部分 kaggle notebook
    • 一、模型部署
      • 1.1 kaggle notebook
      • 1.2 colab、windows部署
    • 二、进阶教程
      • 2.1 Prompt运用规则及技巧
      • 2.2 Model资源
      • 2.3 Embedding/ Hypernetwork使用及训练
      • 2.4 Dreambooth使用及训练
      • 2.5 插件介绍

第一部分

本文翻译自stable-diffusion-webui官方文档

一、 Features:Textual Inversion(文本反转)

Textual Inversion:论文、博客,知乎贴、《paper笔记》

1.1 Textual Inversion 简介

1.1.1 摘要

  文生图模型为通过自然语言指导创作提供了前所未有的自由。然而,目前尚不清楚如何运用这种自由来生成特定独特概念的图像,修改其外观,或将其合成新角色和新场景。换言之,要把现实中的一些新概念(new concept)引入到生成中,单从文本出发还是不够的。

  本文提出了 personalized text-to-image generation,即个性化的文转图生成。可以基于文本+用户给的3-5张图(“new concepts”)来生成新的图像。

  提出了textual inversions,用于把图片概念转换成pseudo-words(伪单词)。然后一起合并到prompt中,从而生成一些具备这样概念的图片。

1.1.2 算法

  在大多数文生图模型的文本编码阶段,第一步是将prompt 转换为数字表示,而这通常是通过将words转换为tokens来完成的,每个token相当于模型字典中的一个条目(entry)。然后将这些entries转换为embeddings进行训练。

  我们发现了可以添加用户提供的special token (S*,表示新概念)来作为新的embedding。然后,将这个embedding link到新的伪单词,伪单词可以同其它词一样被合并到新的句子中。在某种意义上,我们正在对冻结模型的文本嵌入空间进行反转,所以我们称这个过程为Textual Inversion(文本反转)。

  我的理解,之前都是将文本编码为embedding进行训练,而Textual Inversion是将用户提供的图片(“A photo of S*”)以embedding的形式链接到某个伪单词上来表示一种概念。即embedding→文本,和之前是相反的过程。

模型结构如下图所示:
在这里插入图片描述

  • 本文是基于latent diffusion做的,只改进了其中text encoder部分的词表部分,添加S*来表达新概念,其它token的embedding不变,从而实现与新概念的组合。
  • 为了训练S*对应的文本编码v*,使用prompt “A photo of S*”生成新的图片,我们希望这个概念生成图片和用户给的图片相符合,从而学习到v*这个新概念。学到之后就可以利用S*来做新的生成了。
  • 损失函数:让通过这个句子prompt产生的图片和用户给的small sample(3~5张图)越近越好:
    在这里插入图片描述

1.1.3 模型效果

  1. Image Variations:相似图生成
      因为embedding 的学习目标本身就是要生成一摸一样的图片,所以本文的相似图生成效果很好:
    在这里插入图片描述
  2. Text-guided synthesis(文本引导生成)
    下面是基于学到的新概念的生成:

在这里插入图片描述

  和CLIP guided的方法的对比:最相近的工作是PALAVRA——把新概念图片先得到image embedding,再用对比学习的方法转成text embedding,然后再进行生成,而本文是直接学习pseudo-word。在guided diffusion中,有init image的生成效果会好很多,但是还是会出现原来图片变形的问题。

  1. Style transfer(风格迁移)
    通过in the style of 这样的prompt可以实现风格迁移:

在这里插入图片描述

Textual Inversion可以用来表示广泛的概念,包括视觉艺术风格。在某种意义上,我们可以学习一个代表特定艺术家或新艺术运动的伪词,并在未来的创作中模仿它。

  1. Concept compositions(概念组合)
    不同图片概念,组合起来进行生成,Unfortunately, this doesn’t yet work for relational prompts, so we can’t show you our cat on a fishing trip with our clock.
    在这里插入图片描述

  2. Downstream applications
    我们的伪词适用于下游模型。例如,将旧照片添加一些新元素来增加它们的趣味性:(把第二排图片中蓝色部分替换为第一排的元素)
    在这里插入图片描述

  3. Reducing Biases(减少偏见,略)

1.2 Textual Inversion of webai

参考《Features:Textual Inversion》

   webai允许用户使用Textual Inversion 将自己的图片进行训练,得到一个embedding(预训练的embedding),用于指导新图片的生成。这个预训练embedding是一个.pt.bin文件(前者是原始作者使用的格式,后者是diffusers library使用的格式)。

1.2.1 预训练embedding用于图片生成

  将预训练好的embedding(嵌入)放入embeddings目录,并在prompt中使用其文件名,无需重新启动程序即可生成新的图片。例如,下面是webai作者在WD1.2模型上,用53张图片(增强成119张)训练19500步后得到的Usada Pekora embedding。

在这里插入图片描述

prompt:portrait of usada pekora,Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 4077357776, Size: 512x512, Model hash: 45dee52b

您可以在一个prompt中组合多个embedding:(相比上图prompt多加了一个词——mignon)

在这里插入图片描述

prompt:portrait of usada pekora,mignon,Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 4077357776, Size: 512x512, Model hash: 45dee52b

  使用embedding生成新的图片时的模型,最好和训练这个embedding时的模型保持一致,否则生成效果可能不好。下面是WD1.2模型训练的usada pekora embedding,用在stable diffusion 1.4上进行生成的效果:(prompt和参数保持不变,但是生成的图片不是最开始的风格了)
在这里插入图片描述

prompt:portrait of usada pekora,Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 4077357776, Size: 512x512, Model hash: 45dee52b

1.2.2 训练embedding

  1. embedding训练说明

    • 该功能非常原始,使用风险自负
    • 创建一个新的empty embedding,选择待训练图像的目录,进行embedding训练。
    • 启用半精度浮点运算,但需试验开启前后效果是不是一样好。如果显存足够,使用--no-half --precision full更安全
    • 用于UI自动运行图像预处理的部分。
    • 中断后重启训练,不会丢失任何数据
    • 不支持batch sizes 或 gradient accumulation(梯度累积,用于显存不足),不支持–lowvram 和 --medvram flags。
  2. 参数说明

    • Creating an embedding
      • name:embedding的文件名。后续在prompt使用这个embedding时就用这个名字。
      • Initialization text(初始化文本):用于新建empty embedding的初始化。
        • 新建后会用Initialization text的embedding填充empty embedding。也就是如果你创建empty embedding后又不训练,那么这个embedding和Initialization text的embedding是一样的。
        • 比如你新建一个名为“zzzz1234”的empty embedding,然后选“tree”这个词作为Initialization text。那么不进行任何训练时,“zzzz1234”和“tree”的embedding是一样的
      • Number of vectors per token:empty embedding的size。
        • 比如webai模型默认prompt的长度上限是75个token,如果设置Number of vectors per token=16,那么你将这个empty embedding加入prompt后,就只能再写75-16=59个token了。
        • empty embedding的size越大,就可以融合更多的主题信息(概念信息),相应的,你就需要更多的图片,才能训练好这个empty embedding。
  • Preprocess:将目录下的图片进行Textual Inversion,并将结果写入另一个目录
    • Source directory:包含图像的目录
    • Destination directory:将写入结果的目录
    • Create flipped copies:对于每个图像,还要写入其镜像副本
    • Split oversized images into two:将过大的图像拆分为两张(短边与所需分辨率相匹配,两张图片可能相交)
    • Use BLIP caption as filename:使用BLIP模型向文件名添加标题。
  • Training an embedding
    • Embedding:从下拉列表中选择要训练的嵌入。
    • Learning rate:学习率,设置得太高,可能会破坏embedding
      • 比如在训练中提示Loss:nan,训练失败)。使用默认值时,不会发生这种情况。
      • 设置多个学习率,比如0.005:100, 1e-3:1000, 1e-5表示前100步lr=0.005,101-1000步时lr=1e-3,最后lr=1e-5。
    • Dataset directory:待训练图像的目录。
    • Log directory:样本图像和部分训练的嵌入副本将写入此目录。
    • Prompt template file: text file with prompts,每行一个,用于训练模型。
      • 训练风格使用style.txt(只需要3、5张图片),训练主题使用subject.txtNumber of vectors per token越大,需要的图片就越多)。文件中可以使用以下tag:
        • [name]:embedding名称
        • [filewords]:来自数据集图像文件名的单词。有关更多信息,请参见下文。
      • 有关如何使用这些文件,请参阅textual_inversation_templates目录中的文件。
    • Max stepsMax steps步后完成训练。模型训练一张图片是一个step。如果您训练中断后重启,会保留step数。
    • Save images with embedding in PNG chunks:每次生成图像时,都会将其与最近记录的嵌入合并,并以可以作为图像共享的格式保存到image_embeddings中,然后将其放入嵌入文件夹并加载。
    • Preview prompt:如果不为空,此prompt将用于生成预览图;如果为空,the prompt from training will be used。
  • filewords
    • [filewords]:提示模板文件( prompt template)的标签,默认下去掉图片文件名前面的数字和破折号(-)就是[filewords],比如图片000001-1-a man in suit.png的[filewords]就是a man in suit,是一个文本。这个文本可用在prompt中。
    • 可以使用选项Filename word regexFilename join string更改文件名中的文本。(感觉没必要,详情看原文档)
  1. 第三方库
    webai训练embeddings时还使用了Stable-textual-inversion_win和InvokeAI这两个github仓库。还有一些是关于diffusers library或者colab上训练的选项。

1.2.3 Finding embeddings online

  • huggingface concepts library :有很多不同的emb
  • 16777216c:NSFW,动漫艺术家风格。
  • Catoroboto:一些匿名的动画embedding。
  • viper1:NSFW,furry girls。
  • anon’s embeddings -NSFW:动漫艺术家。
  • rentry:包含多种SD模型的 Textual Inversion emb
    在这里插入图片描述

1.2.4 Hypernetworks

  Hypernetworks是在不影响模型权重的情况下微调模型的概念。目前是在textual inversion选项卡里训练hypernets,训练方式和textual inversion相同,但是学习率很低,比如5e15或者5e-6。这部分可参考《Hypernetworks训练指南》。
  Unload VAE and CLIP from VRAM when training:这个选项卡允许降低预览图生成速度来减少显存。

二、 Features: Negative prompt

  Negative prompt用于指定不想生成的内容,使用Negative prompt可以消除了Stable Diffusion的常见畸形,比如多余的肢体。Negative prompt可单独使用(即不用 prompt)。
  要使用Negative prompt,只需以下步骤:

# prompts = ["a castle in a forest"]
# negative_prompts = ["grainy, fog"]

c = model.get_learned_conditioning(prompts)
uc = model.get_learned_conditioning(negative_prompts)

samples_ddim, _ = sampler.sample(conditioning=c, unconditional_conditioning=uc, [...])

  采样器(sampler)将比较prompt生成的图片和Negative prompt生成的图片之间的差异,并是最终生成结果逼近前者,远离后者。下面是一个演示:

  • 原始图片有雾状(fog)、颗粒感(grainy,画质低)。Negative prompt为fog后雾状没了但是生成奇怪的紫色
  • Negative prompt为fog,grainy, purple,没有雾状,画质高,也没有奇怪的紫色了。

在这里插入图片描述

negative prompt:None

在这里插入图片描述
negative prompt:fog

在这里插入图片描述
negative prompt:grainy

在这里插入图片描述
negative prompt:fog, grainy, purple

三、Xformers依赖

  Xformers库可以加速图像的生成(可选),没有适用于Windows的二进制文件(除了一个特定的配置外),可自行构建。

  1. linux上构建Xformers的指南:
#切换到webui根目录
source ./venv/bin/activate
cd repositories
git clone https://github.com/facebookresearch/xformers.git
cd xformers
git submodule update --init --recursive
pip install -r requirements.txt
pip install -e 
  1. Windows上构建xFormers(见原文档)

四、NVidia GPUs安装

在尝试安装之前,请确保满足所有必需的依赖项。

依赖项包括:

  • 安装Python 3.10.6git
  • 运行git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git下载webai项目,后续可以使用git pull命令更新项目。(windows用户安装git for windows后,在某个文件夹里右键单击选择Git Bash here打开git,运行此命令下载项目。)
  • 下载Stable Diffusion 模型文件(.ckpt)、sd-v1-4.ckpt放在项目根目录下的models/Stable-diffusion文件夹里。
  • Stable-diffusion 2.x 版本的模型,需要下载配套的.yaml配置文件,并放在.ckpt同名的文件夹中:768-v-ema.ckpt config、512-base-ema.ckpt config、512-base-ema.ckpt config

4.1 自动安装

  1. windows:运行webui-user.bat,如果运行失败可以参考Troubleshooting 。
  2. Linux:项目根目录下运行:bash <(wget -qO- https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh)

python launch.py可自动运行模型,运行时可以使用一些命令参数,比如:

python launch.py --opt-split-attention --ckpt ../secret/anime9999.ckpt

4.2 自定义安装

  更改webui-user.sh中的变量,并运行bash webui.sh,接下来自定义安装步骤、AMD GPUs安装、见原文档。此文档还有WSL2安装,conda安装等。

  更多关于安装的详细教程,可以参考帖子《使用stable-diffusion-webui部署NovelAi/Stable Diffusion1.4 /1.5/2.0 保姆级教程、命令解释、原理讲解(colab、windows、Linux )》

五、命令行参数和优化

命令行参数解释
--shareonline运行,也就是public address
--listen使服务器侦听网络连接。这将允许本地网络上的计算机访问UI。
--port更改端口,默认为端口7860。
--xformers使用xformers库。极大地改善了内存消耗和速度。Windows 版本安装由C43H66N12O12S2 维护的二进制文件
--force-enable-xformers无论程序是否认为您可以运行它,都启用 xformers。不要报告你运行它的错误。
--opt-split-attentionCross attention layer optimization 优化显着减少了内存使用,几乎没有成本(一些报告改进了性能)。黑魔法。默认情况下torch.cuda,包括 NVidia 和 AMD 卡。
--disable-opt-split-attention禁用上面的优化
--opt-split-attention-v1使用上述优化的旧版本,它不会占用大量内存(它将使用更少的 VRAM,但会限制您可以制作的最大图片大小)。
--medvram通过将稳定扩散模型分为三部分,使其消耗更少的VRAM,即cond(用于将文本转换为数字表示)、first_stage(用于将图片转换为潜在空间并返回)和unet(用于潜在空间的实际去噪),并使其始终只有一个在VRAM中,将其他部分发送到CPU RAM。降低性能,但只会降低一点-除非启用实时预览。
--lowvram对上面更彻底的优化,将 unet 拆分成多个模块,VRAM 中只保留一个模块,破坏性能
*do-not-batch-cond-uncond防止在采样过程中对正面和负面提示进行批处理,这基本上可以让您以 0.5 批量大小运行,从而节省大量内存。降低性能。不是命令行选项,而是使用–medvramor 隐式启用的优化–lowvram。
--always-batch-cond-uncond禁用上述优化。只有与–medvram或–lowvram一起使用才有意义
--opt-channelslast更改 torch 内存类型,以稳定扩散到最后一个通道,效果没有仔细研究。

其它详见原文档。

六、安装和使用自定义脚本

  要安装自定义脚本,请将它们放入scripts目录,然后单击设置选项卡底部的Reload custom script按钮。安装后,自定义脚本将出现在txt2img和img2img选项卡的左下方下拉菜单中。以下是Web UI用户创建的一些著名的自定义脚本:

  1. prompt改进脚本:https://github.com/ArrowM/auto1111-improved-prompt-matrix
    • 本脚本支持prompt矩阵格式,用于一次生成多个prompt,每个prompt可生成多张图片(脚本代码)
    • 使用<>创建一个prompt矩阵,矩阵中用|进行分隔。例如a <corgi|cat> wearing <goggles|a hat>,表示4个prompt:a corgi wearing goggles, a corgi wearing a hat, a cat wearing goggles, a cat wearing a hat
    • 如果设置batch count > 1,忽略 batch size,每个seed,每个prompt都会进行生成。
      在这里插入图片描述
  2. txt2img2img:https://github.com/ThereforeGames/txt2img2img
    大大提高任何角色/主题的可编辑性,同时保持其相似性。该脚本的主要动机是提高通过Textual Inversion.创建的embedding的可编辑性。在这里插入图片描述
  3. txt2mask:https://github.com/ThereforeGames/txt2mask
    可以使用文本指定mask修复部分,而不是用笔刷。
    在这里插入图片描述
  4. Mask drawing UI:https://github.com/dfaker/stable-diffusion-webui-cv2-external-masking-script
    提供CV2支持的本地弹出窗口,允许在处理前添加掩码。
  5. Img2img Video:https://github.com/memes-forever/Stable-diffusion-webui-video
    使用img2img,依次生成图片。
  6. Seed Travel:https://github.com/yownas/seed_travel
    选择多个种子,并在它们之间生成插值图像序列,或者是一个视频,点此查看示例。
  7. Advanced Seed Blending:https://github.com/amotile/stable-diffusion-backend/tree/master/src/process/implementations/automatic1111_scripts
    可以设定seed权重,例如:seed1:2, seed2:1, seed3:1,也可以使用浮点数:seed1:0.5, seed2:0.25, seed3:0.25
  8. Prompt Blending:https://github.com/amotile/stable-diffusion-backend/tree/master/src/process/implementations/automatic1111_scripts
    支持多个prompt的加权组合,例如:Crystal containing elemental {fire|ice},也支持嵌套:Crystal containing elemental {{fire:5|ice}|earth}
  9. Animator:https://github.com/Animator-Anon/Animator
    适用于制作视频

余下内容有空再写了。下面是模型部署和应用的一些资源收集贴,也没有好好整理,感觉太麻烦了。


第二部分 kaggle notebook

一、模型部署

  • 此笔记本基于stable-diffusion-webui项目,默认使用momoko模型,点此即可打开。

1.1 kaggle notebook

  1. 下载项目
#测试GPU
!nvidia-smi

#下载stable-diffusion-webui
%cd /kaggle/working/
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
    
#在models文件夹下新建新建hypernetworks目录
!mkdir -p  /kaggle/working/stable-diffusion-webui/models/hypernetworks 
%cd /kaggle/working/stable-diffusion-webui/models/Stable-diffusion
  1. 切换喜欢的模型,默认是momoko

    • 更改模型的默认方法是,将input文件夹中你需要的模型移入working/stable-diffusion-webui/models/Stable-diffusion/文件夹下
    • 也可以使用ChangeModel函数更换模型,这种方式是更改读取模型的路径,所以不需要复制模型文件本体。如果模型生成图片老是有点灰色,在下面红色选项框中下拉选择VAE(前提是将模型对应的VAE文件复制到/kaggle/working/stable-diffusion-webui/models/VAE文件夹下)
    • momoko模型(色彩鲜艳,质量很高)和Anything模型的介绍,可参考视频《一键搭建代码更新anything及momoko-p模型》
    • 更多模型可见《Stable Diffusion Models》

  下面是将/kaggle/working/stable-diffusion-webui/modules/sd_models.py中,默认的模型读取地址model_dir = ".*?"用正则表达式替换为 model_dir = “/kaggle/input/{}”,其中 {} 被替换为变量 modelPath 的值。替换后将该内容写入sd_models.py文件。

#最新切换模型方法
import re,os,shutil

def ChangeModel(modelPath):
    with open ('/kaggle/working/stable-diffusion-webui/modules/sd_models.py','r') as f:
        tt = f.read()
    tt = re.sub('model_dir = ".*?"','model_dir = "/kaggle/input/{}"'.format(modelPath),tt)
    
    with open ('/kaggle/working/stable-diffusion-webui/modules/sd_models.py','w') as f:
        f.write(tt)


#在你想要使用的模型对应的代码前去掉#,其他模型的对应代码前加上#
chooseModel = ''

#二次元
#chooseModel='animefulllatestckpt'      #1. 7g animefull-final-latest,二次元和写实风兼有
#chooseModel='animefullfinalpruned'     #2. 4g animefull-final-pruned,二次元风格
#chooseModel='anythingv3'               #3. 7g Anything-v3.0 Novel AI最新模型
chooseModel='momoko'                    #4. momoko
#chooseModel='mignon'                   #5. Mignon
#chooseModel='moxing'                   #6. MomoCha&Mecha
#chooseModel='nicenice'                 #7. nice

#写实风
#chooseModel='stable-diffusion-1-5'     #1. stable-diffusion 1.5
#chooseModel='inpainting'               #2. stable diffusion 1.5 inpainting,(专用于inpaint的模型)
#chooseModel='stable-diffusion-2-768'   #3. stable diffusion 2.0
#chooseModel='redshiftdiffusionv1'      #4. edshift diffusion v1
#chooseModel='modf222'                  #5. f222
#chooseModel='insins'                   #6. ins写真风
#chossModel='realyolyjijiajohn'         #7. 融合多个模型的写实风

model_list=['momoko','animefullfinalpruned','redshiftdiffusionv1','mignon','nicenice','insins']
if chooseModel in model_list:
    try:
    	# shutil.copytree(src,dst)。将文件夹 src 中全部文件递归复制到 dst ,dst 若不存在时系统自动创建~
        shutil.copytree('/kaggle/input/tagcomplete3w2cn/wd14-tagger/wd14-tagger','/kaggle/working/stable-diffusion-webui/extensions/wd14-tagger')
    except:
        pass
else:
    try:
    	# 递归删除整个文件夹下所有文件,包括此文件夹
        shutil.rmtree('/kaggle/working/stable-diffusion-webui/extensions/wd14-tagger/')
    except:
        pass
ChangeModel(chooseModel)
print('模型已切换成:'+chooseModel)
  1. 安装扩张功能和插件、脚本
    a. 扩展功能:
!apt install -y aria2 # Aria2是一个命令行下载器,可从百度网盘下载资源

# 安装animefull-final-latest (可选)
!aria2c -d /kaggle/working/stable-diffusion-webui https://cloudflare-ipfs.com/ipfs/bafybeiav3j7npiuewbel3mi32l3sidgkw54kuleosbhxmdvddbnvtfi7yu/config.yaml
#!aria2c https://pub-2fdef7a2969f43289c42ac5ae3412fd4.r2.dev/animefull-latest.ckpt
#!aria2c -d /kaggle/working/stable-diffusion-webui/models/Stable-diffusion https://raw.githubusercontent.com/Stability-AI/stablediffusion/main/configs/stable-diffusion/v2-inference-v.yaml


# 安装embeddings (可选)
!aria2c https://cloudflare-ipfs.com/ipfs/bafybeie3hdjchxs5tz4n75bos53nhcklslguxchdurc2ynrzcfv2kwyklu/embeddings.tar
!tar xvf embeddings.tar -C /kaggle/working/stable-diffusion-webui/embeddings && rm -rf embeddings.tar


# 安装hypernetwork (可选)
!aria2c https://cloudflare-ipfs.com/ipfs/bafybeiduanx2b3mcvxlwr66igcwnpfmk3nc3qgxlpwh6oq6m6pxii3f77e/_modules.tar  
!tar xvf _modules.tar -C /kaggle/working/stable-diffusion-webui/models/hypernetworks && rm -rf _modules.tar

b. 安装插件

  • 参考《Stable-diffusion-webui 插件拓展及依赖汇总》、插件翻译列表((含主要插件)
  • 详细文档和项目地址见《a1111-sd-webui-tagcomplete》,也可参考帖子《Prompt自动补全脚本》
  • tagcomplete:本脚本为 stable-diffusion-webui的自定义脚本,能在输入Tag时提供booru风格(如Danbooru)的TAG自动补全。因为有一些模型是基于这种TAG风格训练的(例如Waifu Diffusion),因此使用这些Tag能获得较为精确的效果。
  • DeepDanbooru:DeepDanbooru是一个动漫风格的女孩图像标签评估系统,在webui的img2img选项页,第一次点击deepdanbooru时程序会自动下载pt检查点文件并调用。
  • images-browser:这是一个图像浏览器,用于浏览过去生成的图片,查看其生成的信息,将提示发送到txt2img或img2img,将图像收集到您的“收藏夹”文件夹,删除您不再需要的图像,您还可以在计算机中的任何文件夹中浏览图像
  • webUI简体中文语言包,简体中文翻译扩展,适用于 stable diffusion webui。
  • Aesthetic Gradients
    • 美学权重功能(以插件形式提供),借助该功能,可以在保持作品原始的总体构图上提高美观度。
    • 结合hypernetwork使用效果更佳
    • 支持txt2img和img2img

将上述插件下载后复制到extensions文件夹,即可完成安装。

%cd /kaggle/working/stable-diffusion-webui/extensions
# 下载安装webUI简体中文语言包,tagcomplete补全Tag插件、images-browser
!git clone https://github.com/dtlnor/stable-diffusion-webui-localization-zh_CN
!git clone https://github.com/DominikDoom/a1111-sd-webui-tagcomplete
!git clone https://github.com/yfszzx/stable-diffusion-webui-images-browser

c. 安装脚本
webui也提供众多脚本,详细介绍参考官方文档Custom Scripts。下面选了一个提示词矩阵脚本。

  • 本脚本支持prompt矩阵格式,用于一次生成多个prompt,每个prompt可生成多张图片(脚本代码)
    • 使用<>创建一个prompt矩阵,矩阵中用|进行分隔。例如a <corgi|cat> wearing <goggles|a hat>,表示4个prompt:a corgi wearing goggles, a corgi wearing a hat, a cat wearing goggles, a cat wearing a hat
    • 如果设置batch count > 1,忽略 batch size,每个seed,每个prompt都会进行生成。
  • 注意:使用提示词矩阵脚本,但是其实没有设置提示词矩阵,图片生成时会出现报错
%cd /kaggle/working/stable-diffusion-webui/scripts/
!git clone https://github.com/ArrowM/auto1111-improved-prompt-matrix
  1. 启动模型,开始生成图片

参考《使用stable-diffusion-webui搭建AI作画平台使用stable-diffusion-webui搭建AI作画平台》

  • --share参数 会得到一个以.app.gradio 结尾的链接,这是在协作中使用该程序的预期方式。(不加 --share 没法远程使用)
  • 安装并启动stable-diffusion-webui,成功后打开public URL就可以生成图片了
  • 报错No module ‘xformers‘. Proceeding without it是因为没装xformers,运行以下代码安装
%cd /kaggle/working/stable-diffusion-webui
# 加载模型。sed -i表示将字符串直接写入sd_models.py文件
!sed -i 's/map_location="cpu"/map_location="cuda"/g' /kaggle/working/stable-diffusion-webui/modules/sd_models.py
import gc
gc.collect()
#  use normal stable-diffusion
!COMMANDLINE_ARGS="--share --gradio-debug --config config.yaml --disable-safe-unpickle " REQS_FILE="requirements.txt" python launch.py

将生成的图片进行打包,方便下载。

!zip -q -r output.zip /kaggle/working/stable-diffusion-webui/outputs 
!mv /kaggle/working/stable-diffusion-webui/output.zip /kaggle/working/output.zip
  1. webui界面介绍
    通过前面的安装配置,你就可以通过你设置的端口进行访问。访问内容后分为几个大的模块;
  • txt2img — 标准的文字生成图像;
  • img2img — 根据图像成文范本、结合文字生成图像;
  • Extras — 优化(清晰、扩展)图像;
  • PNG Info — 图像基本信息
  • Checkpoint Merger — 模型合并
  • Textual inversion — 训练模型对于某种图像风格
  • Settings — 默认参数修改

此部分请参考知乎贴《模型应用—使用Stable Diffusion UI手册》使用部分。

  1. 手把手教你在linux中手动编译并安装xformers

1.2 colab、windows部署

详见《部署NovelAi/Stable Diffusion1.4 /1.5/2.0 保姆级教程》

二、进阶教程

2.1 Prompt运用规则及技巧

参考《NovelAI资源及使用技巧收集汇总》、《Stable-diffusion 标签Tag (脸部方法构造)》、元素同典、元素法典、《魔咒百科词典》、《Prompt Magic Tutorial》

  1. 通用Tag起手式:

    • 正向:
      masterpiece, best quality, 更多画质词,画面描述
    • 反向:
      nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers,extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry
  2. 越靠前的Tag权重越大;比如景色Tag在前,人物就会小,相反的人物会变大或半身。

  3. 生成图片的大小会影响Prompt的效果,图片越大需要的Prompt越多,不然Prompt会相互污染。

  4. 在Stable Diffusion 中使用()英文括号可增加括号中Tag在画面中的权重 x1.1,[]可减小Tag权重x0.91。在NovelAi官网中,使用{}增加权重x1.05。

  5. Prompt支持使用emoji,且表现力较好,可通过添加emoji达到表现效果。如😍形容表情,🖐可修手。

  6. “+” , “ AND” , “|” 用法:

    • “+”和“ AND ”都是用于连接短Tag,但AND两端要加空格。"+“约等于” and "
    • “|” 为循环绘制符号(融合符号)
      (Prompt A: w1)|(Prompt B: w2)
      以上表达适用于WebUI,w1、w2为权重。AI会对A、 B两Prompt进行循环绘制。可往后无限加入Prompt。
  7. Prompt格式优化:简易换行三段式表达:

    • 第一段: 画质tag,画风tag
    • 第二段:画面主体,主体强调,主体细节概括。(主体可以是人、事、物、景)画面核心内容。第二段一般提供人数,人物主要特征,主要动作(一般置于人物之前),物体主要特征,主景或景色框架等
    • 第三段:画面场景细节,或人物细节,embedding tag。画面细节内容
  8. 元素同典调整版语法:
    质量词→前置画风→前置镜头效果→前置光照效果→(带描述的人或物AND人或物的次要描述AND镜头效果和光照)*系数→全局光照效果→全局镜头效果→画风滤镜(embedding)

实例展示:

在这里插入图片描述
parameters:

Prompt:

(((masterpiece))), best quality, ultra-detailed, extremely detailed CG unity 8k wallpaper,best illustration, an extremely delicate and beautiful,floating,high resolution,

dynamic angle,dynamic pose,(1girl),blue eyes,(multicolored_hair+silver hair:1.3+red hair:1.2+purple hair+yellow hair:1.3+green hair:1.3), white wuxia clothes,neck ribbon, beautiful face,

too many drops of water,cloud,twilight, wide shot,watercolor,

Negative prompt:

lowres, bad anatomy, bad hands, text,error, missing fIngers,extra digt ,fewer digits,cropped, worst quality ,low quality,normal quality, jpeg artifacts,signature,watermark, username, blurry, bad feet,fused body,

Steps: 34, Sampler: DPM++ 2S a, CFG scale: 10.5, Seed: 1351767725, Size: 960x576, Model hash: 925997e9, Eta: 0.68, Clip skip: 2, ENSD: 31337
GFPGAN visibility:1.Upscale: 3, visibility: 1.0, model:ESRGAN_4x

更多内容请看原贴。

也可简单一点,使用chatGPT来实现stable-diffusion描述词生成、让chatGPT帮你AI绘画
在这里插入图片描述

2.2 Model资源

  使用注意:与ckpt文件同名的vae.pt文件用于稳固该模型的表现,直接放在相同文件夹即可。训练时将该文件改名或移走。并不是所有模型都需要使用vae文件

公开资源:

  • https://rentry.org/sdmodels(目前觉得比较全)
  • https://cyberes.github.io/stable-diffusion-models/(SD模型)
  • https://publicprompts.art/(App Icon Generator,比较有趣想资源)
  • https://huggingface.co/ (在网站中检索) 作者:小白随心所欲

2.3 Embedding/ Hypernetwork使用及训练

参考《NovelAI资源及使用技巧收集汇总》、《NovelAI hypernetwork 自训练教程》

2.4 Dreambooth使用及训练

  • 秋叶训练视频《保姆式Dreambooth训练教程 autodl在线训练 NovelAI》《dreambooth使用教程》
  • 白菜的教程《dreambooth 训练风格/人物》 、星空教程《DreamBooth多人物和物体训练法 Colab云端训练》
  • 知乎《StableDiffusion/NAI DreamBooth自训练全教程》、

2.5 插件介绍

  1. Aesthetic-gradients(美术风格embedding)使用
    • 素材保证高质量,尺寸不限,随建随用。优化画风,效果同emb和hypernetwork。batch按图片数量填就行。
    • 建议图片集尽量挑选画风一致的图片,就算是同一画师,不同的画也有区别。
  2. X/Y plot(参数对比)
    通过设置X轴和Y轴的参数,可以产出参数变化的对比图。
    在这里插入图片描述
    如上图填写X轴为hypernetwork,只需填上hypernetwork的文件名即可。注意,开头逗号和结尾逗号会分别在开头和结尾生成一张效果同none的图片。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Redis】知识体系结构构建以及常见考题汇总

【Redis】知识体系结构构建以及常见考题汇总1、思维导图2、Redis体系结构&#xff1a;原理、部署2.1、Redis实现原理2.1.1、Redis中数据结构2.1.2、不同对象的数据类型&#xff08;基本类型、特殊类型&#xff09;2.2、Redis部署2.2.1、基本配置&#xff08;缓存的更新、删除和…

【Linux】基础命令

目录 1.ls指令 2.pwd指令 3.cd指令 4.touch指令 5.mkdir指令 6.rmdir指令 && rm 指令 7.man指令 8.cp指令 9.mv指令 10.cat指令 11.less指令 12. head和tail 13.date指令 14.grep指令 15.bc指令 16.重要的几个热键 1.ls指令 语法&#xff1a;ls 选项 …

Taro React组件开发(2) —— RuiEditor 富文本编辑器【兼容H5和微信小程序】

1. 富文本编辑器需求分析 需要实现图片上传显示,上传使用Taro的 chooseImage 和 uploadFile,完成图片的上传!!!文字的居左、居中、居右展示,使用格式化方法 format!!!文字的加粗、倾斜、下划线,使用格式化方法 format!!!2. 富文本编辑 获取提示文本 placeholder;…

【C++】string类常用函数接口

在使用库函数中的string类时&#xff0c;需要包含头文件#include 。 1.构造函数和拷贝构造 string s1;string s2("hello world");string s3(s2);下面通过VS调试的监视窗口看一下初始化之后的内容&#xff1a; 还有一种构造函数&#xff0c;是拷贝一个字符串的一部分…

Kubernetes 1.26 新功能 Pod 调度就绪特性解析

Kubernetes 1.26 新功能 Pod 调度就绪特性解析 Kubernetes 1.26 引入了 Pod 的一个新特性&#xff1a;scheduling gates。在 Kubernetes 中&#xff0c;调度门是告诉调度程序何时准备好考虑调度 Pod 的 keys。 它解决了什么问题&#xff1f; 当一个 Pod 创建时&#xff0c;调…

从发现SQL注入到ssh连接

前言&#xff1a; 某天&#xff0c;同事扔了一个教育站点过来&#xff0c;里面的url看起来像有sql注入。正好最近手痒痒&#xff0c;就直接开始。 一、发现时间盲注和源码 后面发现他发的url是不存在SQL注入的&#xff0c;但是我在其他地方发现了SQL盲注。然后改站点本身也可…

C++/Java调用C++动态链接库————附带示例和详细讲解

文章目录0 准备1 C调用动态链接库2 Java调用C动态链接库3 运行0 准备 在CMake中&#xff0c;使用如下的方法把代码编译成动态/静态链接库&#xff1a; # 设置项目名 project(getMatInfo)# 设置c版本 set(CMAKE_CXX_STANDARD 11)# 如果不填写SHARE&#xff0c;默认为静态链接…

Spring Security开发实践

Spring Security 是 Spring 家族中用于提供认证、授权和攻击防护功能的一套安全框架。它也是 Spring 应用在安全框架方面的公认标准。 Spring Security 安全框架适合为 Spring Boot 项目提供安全保护&#xff0c;所以如果您是个 Spring Boot 项目的开发人员&#xff0c;且正在寻…

Python 将视频按照时间维度剪切 | Python工具

目录 前言 环境依赖 代码 总结 前言 本文提供将视频按照时间维度进行剪切的工具方法&#xff0c;一如既往的实用主义。 环境依赖 ffmpeg环境安装&#xff0c;可以参考我的另一篇文章&#xff1a;windows ffmpeg安装部署_阿良的博客-CSDN博客 本文主要使用到的不是ffmpeg&a…

基于Vue.js+Node问卷调查系统的设计与实现

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

ORM框架

ORM框架可以做的两件事&#xff1a; 创建、修改、删除数据库中的表&#xff08;不用写SQL语句)。【无法创建数据库】操作表中的数据&#xff08;不用写SQL语句&#xff09; 1.安装第三方模块&#xff1a; pip3.9 install mysqlclient 2.创建数据库&#xff1a; 启动Mysql服务…

20221226编译Toybrick的TB-RK3588X开发板的Android12系统2-SDK预处理

20221226编译Toybrick的TB-RK3588X开发板的Android12系统2-SDK预处理 2022/12/26 16:40 结论&#xff1a; 1、风火轮技术团队的技术支持力度欠佳&#xff01; 淘宝客服只能处理发货问题&#xff0c;发发SDK还可以&#xff0c;技术问题只能找联系方式 联系手机&#xff1a;18926…

一起从零开始学VUE(16)生命周期与组合式API

文章目录生命周期自定义hook函数toRef其他组合APIshallowReactive与shallowRefreadonly与shallowReadonllytoRaw 与 markRawcustomRefprovide与inject响应式数据的判断生命周期 除了直接写对应的钩子函数外&#xff0c;Vue3.0也提供了composition API形式的钩子函数&#xff0c…

【再学Tensorflow2】TensorFlow2的建模流程:电影评论分析

TensorFlow2的建模流程&#xff1a;电影评论分析词嵌入技术数据准备定义模型训练模型评估模型使用模型保存模型参考资料情感分析无处不在&#xff0c;它是一种基于自然语言处理的分类技术。其主要解决的问题是给定一段话&#xff0c;判断这段话是正面的还是负面的。情感分析的本…

KDE桌面环境下电源管理对应的文件及选项

在KDE桌面环境下&#xff0c;“系统设置”—>“电源管理”—>“高级电源设置”的界面如下&#xff1a; 点击界面中的“配置通知”选项&#xff0c;界面如下所示&#xff1a; 其中图形界面下的各项设置对应的文件为~/.config/powerdevil.notifyrc。上图状态下&#xff0c…

Elasticsearch8.X入门实战(七)Java API操作:员工信息

Elasticsearch本身使用Java开发,因此对Java的支持能力是最好的。本节通过对员工信息建立索引,并对索引数据进行添加、修改等,讲解Elasticsearch的相关Java客户端 API的操作。 1.新建项目 在Eclipse中新建Maven项目elasticsearch_demo,在pom.xml文件中加入项目的依赖库,…

vue2[webpack]中接入vue3[vite]的qiankun微前端服务

本文记录在 vue2[webpack]老项目中&#xff0c;使用qiankun.js微前端服务&#xff0c;接入vue3[vite]新项目。 纯vue2[webpack]技术项目可参考以前的文章&#xff1a; vue项目落地(qiankun.js)微前端服务-zhanghaoran’s blog vue2为基座主应用&#xff1b; vue3为子应用。 改造…

cursor:pin S wait on X故障诊分析

1. 故障概述 7:15&#xff0c;二节点出现大量的“cursor: pin S wait on X”等待事件&#xff0c;数据库性能下降&#xff0c;持续到7:19分恢复正常&#xff0c;持续时间4分钟左右。下面是详细的故障分析诊断过程。2. 故障分析 2.1. 故障现象 7:15,系统出现大量“curs…

Lexical Simplification with Pretrained Encoders 论文精读

Lexical Simplification with Pretrained Encoders 论文精读InformationAbstract1 Introduction2 Related Work3 Unsupervised Lexical Simplification3.1 The BERT model3.2 Simplification Candidate generation3.3 Substitution Ranking3.4 Simplification Algorithm4 Exper…

【半监督医学图像分割 ISBI】2022-ICT-MedSeg

【半监督医学图像分割 ISBI】2022-ICT-MedSeg 论文题目&#xff1a;AN EMBARRASSINGLY SIMPLE CONSISTENCY REGULARIZATION METHOD FOR SEMI-SUPERVISED MEDICAL IMAGE SEGMENTATION 中文题目&#xff1a;一种简单的一致性正则化半监督医学图像分割方法 论文链接&#xff1a;ht…