🤖 Stable Diffusion WebUI 使用综述

98次阅读
没有评论

前言

科技圈的风口年年都在变,前几年是区块链,后来是虚拟现实,元宇宙,web3,而现在是 AI,VR 曾经让我兴奋过,可惜它最终没能形成足够大的浪潮,离最终实现可能还很遥远。而 2022 年开始的 AI 浪潮让我觉得我们可能站在一个人类走向智能化的起点上,这是一个可能催生出下一阶段技术革命的领域,我觉得有必要投身其中成为一个参与者,至少也要掌握这些 AI 工具提供给我们的新的能力。

目前 AI 有两个主流的方向,一个是以 Stable Diffusion 为代表的 AI 图像生成领域,一个是 ChatGPT 为代表的大语言模型领域,本篇主要聚焦 AI 图像生成领域,Stable Diffusion WebUI 是目前比较主流的图片生成方向的软件,特点是开源 + 自定义程度高,适合比较喜爱折腾的同学使用,其强大的扩展性使在社区获得了广泛的应用。
🤖 Stable Diffusion WebUI 使用综述
本篇不讲原理只讲使用(我也没来得及深入理解),当前你可以简单理解使用 Diffusion 扩散模型生成图片的过程就是一个添加噪声再去除噪声的过程,在这个过程中 AI 将你的意图以及它通过无数训练样本建立起来的特征和原图的关联所形成的潜在变量空间为指导生成图片,而 WebUI 就是用于控制 AI 生成图片的工具。

如果将 AI 生成图片比作魔法,那么提示词就是“咒语”,WebUI 就是“魔杖”,当然不止有这一种魔杖,其他比如 ComfyUI 是另一种魔杖。B站 UP 主有一个比较形象的比喻,尝试着把眼睛眯到只剩一条缝去看它(世界名画《戴珍珠耳环的少女》),图像会变得模糊,保持这个状态想象着她正逐渐变得二次元,随后慢慢睁开眼睛:
🤖 Stable Diffusion WebUI 使用综述

硬件篇

Stable Diffusion WebUI 目前最主流的搭配方式是 Windows + Nvidia 显卡,所以为了获得最佳的使用体验你需要配置一台 Windows 机器和一张 Nvidia 显卡(目前消费级显卡顶配 4090)。

显卡选择

这里最核心的硬件就是显卡,配置层面上显卡有两个核心指标:

  • 显卡算力大小影响出图速度,过低的出图速度会影响自己的使用体验,快速消耗自己的耐心和热情,建议至少 3060 以上,下面有一张从 B 站爬的显卡速度对比供参考。
  • 显存大小影响能够生成图的分辨率,在训练模型时也会影响训练模型的规模,推荐显存 > 8 GB.。通常来说,512*1024 比例的图片 8G 显存就能搞定。

🤖 Stable Diffusion WebUI 使用综述
根据自己的实际情况进行采购即可,比如下面是我 21年组的机器,23 年为了玩 AIGC配的 N卡 4070Ti。
🤖 Stable Diffusion WebUI 使用综述

DIY 装机

有了显卡之后你需要给他对应搭配机器,如果你不知道怎么 DIY 装机可以参考我之前整理的资料和配置单:
【学习】电脑装机资料整理
【实践】我的装机配置单
【总结】装机过程记录

部署篇

Mac 环境

如果你只有一台 Mac 电脑并且只是想简单体验一下可以参考,但速度会比较慢,请不要过分期待:
✨ MacBook M1/M2 机器部署 stable-diffusion-webui
当然以 Stable Diffusion 的火爆程度苹果官方下场进行了适配,可以在 M1/M2 Mac 和 M1 Pad 上运行,参考这个项目,但速度仍然比不上,根据其测试数据 M1 Pro 16G 机器跑 sd 1.5 生成 512×512 图在 35s 左右。
GitHub – apple/ml-stable-diffusion: Stable Diffusion with Core ML on Apple Silicon

Google Colab 等在线平台

如果你自己没有机器,你可以白嫖或者租用显卡平台提供的机器进行训练或者部署,优点是可以租用到自己承受范围以外的高性能显卡,缺点是毕竟是租用或白嫖,各方面会受到平台限制:
🤖 谷歌 Colab 部署 WebUI
其他的比如阿里云,百度飞桨也可以。

Windows 环境

部署 stable-diffusion-webui 项目需要安装 python 环境,下载相关 python 库,下载模型,安装插件,安装cudnn 加速库,安装 xformers 等比较繁琐的操作,尤其网络问题容易让人放弃,因此网上有不少整合包供用户开箱使用。所以如果你不想折腾,想要立即上手可以下载整合包,由于全套都在 python 虚拟环境中因而和已有环境的冲突概率小。这里推荐秋葉aaaki的整合包,用过的都说好,详细参考:
🪟 Windows 环境部署 WebUI


提速篇

整合包相当于套了一层壳子,将一些繁琐的操作都封装进这个壳子,然后提供开箱即用的方式给用户,可以极大的降低用户使用成本。但如果你想要折腾一下安装过程,了解一下从零搭建一套环境需要做哪些事情,或者希望对运行环境做更多自定义操作的话,可以选择自行部署。

如果是自行部署注意需要开启 cudnn 加速,升级 pytorch 2.0 以及开启 xformers 以提升生成速度,即使是 4090 在未经过提速之前生成图片速度也是不佳的。

开启CUDNN 加速

NVIDIA CUDA® 深度神经网络库 (cuDNN) 是一个 GPU 加速的深度神经网络基元库,能够以高度优化的方式实现标准例程。简单而言,启用 cudnn 可以通过cudnn来进行 GPU 加速,从而提高 diffusion 生成速度,开启满血模式。实测启用之后,速度提升差不多 30% ~40%左右。

🚄 40 系显卡启用 Cudnn GPU 加速生成

升级 pytorch 到2.0

PyTorch 是一个针对深度学习, 并且使用 GPU 和 CPU 来优化的 tensor library (张量库),仅仅是升级到 pytorch 2.0 就可以使 WebUI 速度提升 20% 左右。

🚟 webui 升级 pytorch 2.0 提速 20%

开启 xformers 加速

Xformers 是 Facebook 出品的一款加速 Transformers 的工具库,xformers 可以加速图片生成,并显著减少显存占用,是小显存玩家的福音,代价是可能生成不确定性的结果,注意该选项仅可用于 Nvidia 显卡,实测部分情况下提速接近 100%。

🚅webui 开启 xformers 提速 100%

界面篇

安装部署完成后,我们首先认识一下软件界面:
🤖 Stable Diffusion WebUI 使用综述
然后是一些关键参数的快速设置对照表:
🤖 Stable Diffusion WebUI 使用综述
有兴趣的可以参考下面的链接了解每一项功能的使用方式:
快捷设置列表
生成按钮下方快捷键
采样器 & 步数的选择
CFG 提示词相关性的设置
模板预设管理
附加网络管理
🧩 clip skip 跳过层
【TODO】VAE 编解码器

提示词工程

prompt 顾名思义是”提示词”的意思,在 AI 文生图中用于指导 AI 生成过程,告诉 AI 你想要的画面效果。提示词是我们与 AI 科学高效沟通的桥梁,有点像魔咒一样,输入一段神奇的词语,AI 会将你的想法变成现实。一个 AI 能够读懂的好咒语应该是内容充实丰富且画面具有清晰标准的,这里提供一个通用模板供快速使用:
🤖 Stable Diffusion WebUI 使用综述
想要了解如何写好提示词可以参考:
Prompt 提示词魔法书

模型篇

模型简介

  • AI 模型类别分为大模型和微调模型。
  • 模型后缀分为 .safetensor.ckptptsafetensor格式更加安全,推荐使用。
  • 同一模型可能也有不同版本,ema,pruned, fp16,fp32 等。

    具体模型文件简介见:
    🗂 SD 模型文件简介

模型优化方案对比

SD 模型调校目前有四种主流的优化方法,分别是 DreamBooth,Text Inversion,LoRA 和 Hypernetworks,几种模型的对比如下:

  • 效果上: DreamBooth > LoRATextual Inversion > Hypernetoworks
  • 内存占用上: Textual Inversion >> HypernetoworksLoRA >> DreamBooth
  • 训练速度上: LoRA > DreamBooth > Textual Inversion > Hypernetoworks

    综上所述:

  • 使用模型:推荐 DreamBooth``LoRA Textual Inversion
  • 训练模型:推荐 LoRA``DreamBooth Textual Inversion

    不推荐:

    Hypernetoworks 目前可以不用考虑,慢慢会被其他模型优化方法所取代。

    详细对比请查看:
    🏕 SD 模型优化方案对比

模型下载来源

  • 首推 HuggingFace,机器学习界的 Github,大多数模型下载源都可以在 hugging face 上找到。
  • 其次推荐传说中的 C 站,Civitai 是一个专注 Stable Diffusion 的 AIGC 社区,用户注册登录之后即可上传和下载自己或别人训练的AI模型,并且对所有模型进行评分、收藏等操作。
    :::
    详细介绍和一些大模型推荐详见:
    模型下载来源 & 大模型推荐

Embedding 提示词打包

Embedding 可以改变画面风格,快速得到你想要的画面特征的图片,常用于负向提示词,可有效提高出图质量。

通俗理解 Embedding是“提示词打包”,即通过触发词将相关的一组特征词描述打包在一起。在没有 Embedding 之前如果在不借助任何插件的情况你要生成一张想要的图片时需要大量的 tag 和描述词去描述,在引入 embedding 之后只需要一个词作为触发词即可达到上面的效果:
🤖 Stable Diffusion WebUI 使用综述

截图来源于 B 站视频

详细请见:
🏎️ Embedding 提示词打包

LoRA 低秩适应模型

LoRA 出自微软的一篇论文,LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS,原论文运用于 NLP 领域,没想到在 Stable Diffsuion 中发扬光大了。中文名可以称呼为”低秩适应模型“,简称 LoRA。LoRA 可以帮助你向 AI 传递、描述某一个特征准确,主体清晰的形象,其所携带的信息相比 Embeddings 要更丰富。

有 UP 主举例说假如你是一个程序员,你的老板告诉你要做个购物网站:

  • Embeddings 就相当于是你的老板告诉你这个购物网站要有一个商品信息页,要有一个购物车等等,然后你根据需求去实现这个购物网站,出来的效果可能和淘宝完全不同。
  • LoRA 相当于你的老板告诉你这个购物网站功能和样子和淘宝差不多,然后你对着淘宝一顿输出,完成了这个购物网站的实现,出来的网站大概率和淘宝就七八分相似。

    目前LoRA 的一个主要应用是各种游戏、动漫角色的二次创作构建,由于其训练成本低,体积小,速度快,效果好,在社区中存在着大量优质的 LoRA 模型,其流行程度甚至不亚于大模型,你可以轻易找到自己想要的角色的 LoRA:
    🤖 Stable Diffusion WebUI 使用综述
    详见:
    🎀LoRA 低秩适应模型

插件篇

插件体系是 WebUI 能够保持强大扩展能力的关键基础设施。

安装插件

webui 提供两种方式安装插件,一个是从它的官方列表安装,一个是从一个指定网址安装。当然我们也可以手动下载插件文件后复制到插件文件夹,关于如何在 webui 中安装插件详细可以参考:
WebUI 如何安装插件

常用插件

这里推荐一些常用的插件:
中文本地化插件
UI 主题插件 – Kitchen
Prompt 自动生成插件
Tag 自动补全插件
Tiled Diffusion 分块VAE插件
无边图像浏览
🛞 SAM 图像分割插件

进阶:图像高清

要提升成图质量,可以选用精度高表现好的模型,添加质量标准化提示词,增加分辨率等方式,除了以上方式之外,在 WebUI 中还有一系列功能时为了专门优化图像产出质量,为了我们获得更大更高清的分辨率而存在的。比如:

  • Hires.fix 高清修复
  • SD Upscale 脚本
  • 附加功能中的图像放大算法

有人会问为什么不直接设置更高的分辨率呢?

  1. 更高的分辨率意味着更多的生成时间和更高的显存占用,非常容易爆显存,当然这个问题可以通过 Tiled 分块插件解决部分,代价是更长的生成时间。
  2. 由于 SD 训练时大多采用 512 * 512或 768* 768 的图进行训练,如果设置非常高的分辨率往往会导致多个人或者多个头的情况出现。

    别人画出来的图

    这是别人生成出来的图:画面精细,分辨率高,细节丰富。
    🤖 Stable Diffusion WebUI 使用综述🤖 Stable Diffusion WebUI 使用综述
    🤖 Stable Diffusion WebUI 使用综述
    VS 我画出来的图

    这是我生成出来的图,乍看还可以,但仔细看会发现分辨率低,画面模糊,细节不够甚至构图崩坏:

    🤖 Stable Diffusion WebUI 使用综述
    🤖 Stable Diffusion WebUI 使用综述🤖 Stable Diffusion WebUI 使用综述
    🤖 Stable Diffusion WebUI 使用综述

文生图: Hires.fix 高清修复

Hires.fix 的原理是先生成一张低分辨率图像,在此画面基础上结合文本提示词进一步添加画面细节,从而提高分辨率,达到放大图像的目的。它的优势是:

  • 不会改变画面的构图(通过随机种子固定)
  • 稳定克服多人多头等高分辨率产生的问题
  • 操作简便,清晰,直观
    :::
    详见:
    🌟 Hires.fix 高分辨率修复

图生图: SD Upscale 放大脚本

在图生图的页面中其实是没有高清修复的选项的,如果原图分辨率比较低,只要按更高的分辨率设置就可以实现”高清修复”,如果想要生成的图片更大,画面更精细,可以使用 UpScale 放大脚本,在脚本栏开启 “SD upscale” ,UpScale 放大脚本的原理是将原图切成若干块之后分别重新绘制,最后拼合到一起。

UpScale 放大脚本的优势是:

  • 可以突破内存限制,获得更大的分辨率,最大四倍宽高
  • 画面精细度高,对细节的丰富效果出色
    :::
    :::danger
    缺点是:
  • 分割重绘的过程比较不可控,比如分界线割裂
  • 操作繁琐,相对不直观
  • 偶尔加戏,出现莫名其妙的奇怪区域

    详见:
    🔍 图生图: SD Upscale 放大脚本

后期处理:图像放大

如果生成图片后对图像的尺寸仍然不够满意,可以通过 WebUI 中的后期处理功能进行图像放大来实现进一步的精细化,这里图像放大不涉及 AI 重绘的部分,可以看下放大前放大后的效果:
🤖 Stable Diffusion WebUI 使用综述🤖 Stable Diffusion WebUI 使用综述
详见:
🎈后期处理:图像放大

进阶:局部重绘

局部重绘顾名思义就是将 AI 生成画面中不满意的局部进行重新绘制以期待生成自己满意的画面。通常在我们对画面的 99% 都比较满意,只想修复图片不希望改变大部分区域时使用,比如 AI 绘画中常见的手画崩了的问题。
:::info
在 web-ui 中主要提供了三种方式进行局部重绘:

  • 局部重绘:在重绘页面中通过画笔的方式涂抹你想要重绘的部分,相当于由用户绘制蒙版。
  • 涂鸦重绘(InPaint Sketch):涂鸦重绘即让用户输入自己的涂鸦内容,用于指导 AI 画出自己想要的效果,这时候画笔不是局部重绘中圈出重绘区域的作用,而是具备内容输入的能力。
  • 上传蒙版(InPaint Upload):WebUI 本身的图像处理是比较粗的,但在 Photoshop 等图像处理软件中可以非常精细的控制图片,因此可以通过这类专业软件绘制精确蒙版,然后将蒙版上传至 WebUI 的方式进行重绘
    :::
    🤖 Stable Diffusion WebUI 使用综述
    详见:
    ✨ 局部重绘:AI 绘画的救星

【Doing】进阶:ControlNet 构图控制

ControlNet 构图插件在插件里算是功能比较强大的,值得单独拿出来说,简单来说 ControlNet 能从指定图像中提取中结构,构图,或者深度信息,用于指导 Stable Diffusion 生成指定结构或者构图。我们知道 AI 出图具有随机性,而 ControlNet 让控制 AI 稳定出图提供了可能性,从而让让商业化变得更为容易。
🤖 Stable Diffusion WebUI 使用综述
💖 ControlNet 构图控制插件使用

【Doing】进阶: ComfyUI 节点式生图方式

ComfyUI 是一种节点式控制 AI 生成图像的软件,其提供了节点式的控制方式,可以任意组合输入和输出,让 AI 出图的过程更加流程化和易于控制,能够达到 WebUI 无法达到的控制自由度。
🤖 Stable Diffusion WebUI 使用综述
我们也有设计师同学为 ComfyUI 设计了一套 Kitchen 风格的 Web UI 界面:
🤖 Stable Diffusion WebUI 使用综述
如上图所示,我们可以控制 ComfyUI 同时生成四张相同参数,只有正向提示词中少量不同的四张图,他们的种子都是一样的,只有提示词分别组合了 smilesad, angry, superised四种表情。

【TODO】进阶:模型融合

【TODO】进阶:模型训练

【TODO】进阶:AI 视频生成

文章来源于互联网:🤖 Stable Diffusion WebUI 使用综述

正文完
 0
评论(没有评论)