前言
科技圈的风口年年都在变,前几年是区块链,后来是虚拟现实,元宇宙,web3,而现在是 AI,VR 曾经让我兴奋过,可惜它最终没能形成足够大的浪潮,离最终实现可能还很遥远。而 2022 年开始的 AI 浪潮让我觉得我们可能站在一个人类走向智能化的起点上,这是一个可能催生出下一阶段技术革命的领域,我觉得有必要投身其中成为一个参与者,至少也要掌握这些 AI 工具提供给我们的新的能力。
目前 AI 有两个主流的方向,一个是以 Stable Diffusion 为代表的 AI 图像生成领域,一个是 ChatGPT 为代表的大语言模型领域,本篇主要聚焦 AI 图像生成领域,Stable Diffusion WebUI 是目前比较主流的图片生成方向的软件,特点是开源 + 自定义程度高,适合比较喜爱折腾的同学使用,其强大的扩展性使在社区获得了广泛的应用。
本篇不讲原理只讲使用(我也没来得及深入理解),当前你可以简单理解使用 Diffusion 扩散模型生成图片的过程就是一个添加噪声再去除噪声的过程,在这个过程中 AI 将你的意图以及它通过无数训练样本建立起来的特征和原图的关联所形成的潜在变量空间为指导生成图片,而 WebUI 就是用于控制 AI 生成图片的工具。
如果将 AI 生成图片比作魔法,那么提示词就是“咒语”,WebUI 就是“魔杖”,当然不止有这一种魔杖,其他比如 ComfyUI 是另一种魔杖。B站 UP 主有一个比较形象的比喻,尝试着把眼睛眯到只剩一条缝去看它(世界名画《戴珍珠耳环的少女》),图像会变得模糊,保持这个状态想象着她正逐渐变得二次元,随后慢慢睁开眼睛:
硬件篇
Stable Diffusion WebUI 目前最主流的搭配方式是 Windows + Nvidia 显卡,所以为了获得最佳的使用体验你需要配置一台 Windows 机器和一张 Nvidia 显卡(目前消费级显卡顶配 4090)。
显卡选择
这里最核心的硬件就是显卡,配置层面上显卡有两个核心指标:
- 显卡算力大小影响出图速度,过低的出图速度会影响自己的使用体验,快速消耗自己的耐心和热情,建议至少 3060 以上,下面有一张从 B 站爬的显卡速度对比供参考。
- 显存大小影响能够生成图的分辨率,在训练模型时也会影响训练模型的规模,推荐显存 > 8 GB.。通常来说,512*1024 比例的图片 8G 显存就能搞定。
根据自己的实际情况进行采购即可,比如下面是我 21年组的机器,23 年为了~玩 AIGC~配的 N卡 4070Ti。
部署篇
Mac 环境
如果你只有一台 Mac 电脑并且只是想简单体验一下可以参考,但速度会比较慢,请不要过分期待,当然以 Stable Diffusion 的火爆程度苹果官方下场进行了适配,可以在 M1/M2 Mac 和 M1 Pad 上运行,参考这个项目,但速度仍然比不上,根据其测试数据 M1 Pro 16G 机器跑 sd 1.5 生成 512x512 图在 35s 左右。
Google Colab 等在线平台
如果你自己没有机器,你可以白嫖或者租用显卡平台提供的机器进行训练或者部署,优点是可以租用到自己承受范围以外的高性能显卡,缺点是毕竟是租用或白嫖,各方面会受到平台限制。
Windows 环境
部署 stable-diffusion-webui 项目需要安装 python 环境,下载相关 python 库,下载模型,安装插件,安装cudnn 加速库,安装 xformers 等比较繁琐的操作,尤其网络问题容易让人放弃,因此网上有不少整合包供用户开箱使用。所以如果你不想折腾,想要立即上手可以下载整合包,由于全套都在 python 虚拟环境中因而和已有环境的冲突概率小。这里推荐秋葉aaaki的整合包,用过的都说好,文末可领取!
提速篇
整合包相当于套了一层壳子,将一些繁琐的操作都封装进这个壳子,然后提供开箱即用的方式给用户,可以极大的降低用户使用成本。但如果你想要折腾一下安装过程,了解一下从零搭建一套环境需要做哪些事情,或者希望对运行环境做更多自定义操作的话,可以选择自行部署。
如果是自行部署注意需要开启 cudnn 加速
,升级 pytorch 2.0
以及开启 xformers
以提升生成速度,即使是 4090 在未经过提速之前生成图片速度也是不佳的。
开启CUDNN 加速
NVIDIA CUDA® 深度神经网络库 (cuDNN) 是一个 GPU 加速的深度神经网络基元库,能够以高度优化的方式实现标准例程。简单而言,启用 cudnn 可以通过cudnn来进行 GPU 加速,从而提高 diffusion 生成速度,开启满血模式。实测启用之后,速度提升差不多 30% ~40%左右。
升级 pytorch 到2.0
PyTorch 是一个针对深度学习, 并且使用 GPU 和 CPU 来优化的 tensor library (张量库),仅仅是升级到 pytorch 2.0 就可以使 WebUI 速度提升 20% 左右。
开启 xformers 加速
Xformers 是 Facebook 出品的一款加速 Transformers 的工具库,xformers 可以加速图片生成,并显著减少显存占用,是小显存玩家的福音,代价是可能生成不确定性的结果,注意该选项仅可用于 Nvidia 显卡,实测部分情况下提速接近 100%。
界面篇
安装部署完成后,我们首先认识一下软件界面: 然后是一些关键参数的快速设置对照表:
提示词工程
prompt 顾名思义是"提示词"的意思,在 AI 文生图中用于指导 AI 生成过程,告诉 AI 你想要的画面效果。提示词是我们与 AI 科学高效沟通的桥梁,有点像魔咒一样,输入一段神奇的词语,AI 会将你的想法变成现实。一个 AI 能够读懂的好咒语应该是内容充实丰富且画面具有清晰标准的,这里提供一个通用模板供快速使用:
模型篇
模型简介
-
AI 模型类别分为大模型和微调模型。
-
模型后缀分为
.safetensor
和.ckpt
或pt
。safetensor
格式更加安全,推荐使用。 -
同一模型可能也有不同版本,ema,pruned, fp16,fp32 等。
具体模型文件简介见:文末
模型优化方案对比
SD 模型调校目前有四种主流的优化方法,分别是 DreamBooth,Text Inversion,LoRA 和 Hypernetworks,几种模型的对比如下:
-
效果上:
DreamBooth
>LoRA
≈Textual Inversion
>Hypernetoworks
-
内存占用上:
Textual Inversion
>>Hypernetoworks
≈LoRA
>>DreamBooth
-
训练速度上:
LoRA
>DreamBooth
>Textual Inversion
>Hypernetoworks
综上所述:
-
使用模型:推荐
DreamBooth``LoRA
Textual Inversion
-
训练模型:推荐
LoRA``DreamBooth
Textual Inversion
不推荐:
Hypernetoworks
目前可以不用考虑,慢慢会被其他模型优化方法所取代。
模型下载来源
- 首推 HuggingFace,机器学习界的 Github,大多数模型下载源都可以在 hugging face 上找到。
- 其次推荐传说中的 C 站,Civitai 是一个专注 Stable Diffusion 的 AIGC 社区,用户注册登录之后即可上传和下载自己或别人训练的AI模型,并且对所有模型进行评分、收藏等操作。
Embedding 提示词打包
Embedding 可以改变画面风格,快速得到你想要的画面特征的图片,常用于负向提示词,可有效提高出图质量。
通俗理解 Embedding是“提示词打包”,即通过触发词将相关的一组特征词描述打包在一起。在没有 Embedding 之前如果在不借助任何插件的情况你要生成一张想要的图片时需要大量的 tag 和描述词去描述,在引入 embedding 之后只需要一个词作为触发词即可达到上面的效果:
截图来源于 B 站视频
LoRA 低秩适应模型
LoRA 出自微软的一篇论文,LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS,原论文运用于 NLP 领域,没想到在 Stable Diffsuion 中发扬光大了。中文名可以称呼为”低秩适应模型“,简称 LoRA。LoRA 可以帮助你向 AI 传递、描述某一个特征准确,主体清晰的形象,其所携带的信息相比 Embeddings
要更丰富。
有 UP 主举例说假如你是一个程序员,你的老板告诉你要做个购物网站:
-
Embeddings 就相当于是你的老板告诉你这个购物网站要有一个商品信息页,要有一个购物车等等,然后你根据需求去实现这个购物网站,出来的效果可能和淘宝完全不同。
-
LoRA 相当于你的老板告诉你这个购物网站功能和样子和淘宝差不多,然后你对着淘宝一顿输出,完成了这个购物网站的实现,出来的网站大概率和淘宝就七八分相似。
目前LoRA 的一个主要应用是各种游戏、动漫角色的二次创作构建,由于其训练成本低,体积小,速度快,效果好,在社区中存在着大量优质的 LoRA 模型,其流行程度甚至不亚于大模型,你可以轻易找到自己想要的角色的 LoRA:
插件篇
插件体系是 WebUI 能够保持强大扩展能力的关键基础设施。
安装插件
webui 提供两种方式安装插件,一个是从它的官方列表安装,一个是从一个指定网址安装。当然我们也可以手动下载插件文件后复制到插件文件夹。
常用插件
这里推荐一些常用的插件:
文件太大,需要的文末领取!
进阶:图像高清
要提升成图质量,可以选用精度高表现好的模型,添加质量标准化提示词,增加分辨率等方式,除了以上方式之外,在 WebUI 中还有一系列功能时为了专门优化图像产出质量,为了我们获得更大更高清的分辨率而存在的。比如:
- Hires.fix 高清修复
- SD Upscale 脚本
- 附加功能中的图像放大算法
有人会问为什么不直接设置更高的分辨率呢?
-
更高的分辨率意味着更多的生成时间和更高的显存占用,非常容易爆显存,当然这个问题可以通过 Tiled 分块插件解决部分,代价是更长的生成时间。
-
由于 SD 训练时大多采用 512 * 512或 768* 768 的图进行训练,如果设置非常高的分辨率往往会导致多个人或者多个头的情况出现。
别人画出来的图
这是别人生成出来的图:画面精细,分辨率高,细节丰富。
VS 我画出来的图
这是我生成出来的图,乍看还可以,但仔细看会发现分辨率低,画面模糊,细节不够甚至构图崩坏:
文生图: Hires.fix 高清修复
Hires.fix 的原理是先生成一张低分辨率图像,在此画面基础上结合文本提示词进一步添加画面细节,从而提高分辨率,达到放大图像的目的。它的优势是:
- 不会改变画面的构图(通过随机种子固定)
- 稳定克服多人多头等高分辨率产生的问题
- 操作简便,清晰,直观
图生图: SD Upscale 放大脚本
在图生图的页面中其实是没有高清修复的选项的,如果原图分辨率比较低,只要按更高的分辨率设置就可以实现"高清修复",如果想要生成的图片更大,画面更精细,可以使用 UpScale 放大脚本,在脚本栏开启 “SD upscale” ,UpScale 放大脚本的原理是将原图切成若干块之后分别重新绘制,最后拼合到一起。
UpScale 放大脚本的优势是:
-
可以突破内存限制,获得更大的分辨率,最大四倍宽高
-
画面精细度高,对细节的丰富效果出色 ::: :::danger 缺点是:
-
分割重绘的过程比较不可控,比如分界线割裂
-
操作繁琐,相对不直观
-
偶尔加戏,出现莫名其妙的奇怪区域
后期处理:图像放大
如果生成图片后对图像的尺寸仍然不够满意,可以通过 WebUI 中的后期处理功能进行图像放大来实现进一步的精细化,这里图像放大不涉及 AI 重绘的部分,可以看下放大前放大后的效果:
进阶:局部重绘
局部重绘顾名思义就是将 AI 生成画面中不满意的局部进行重新绘制以期待生成自己满意的画面。通常在我们对画面的 99% 都比较满意,只想修复图片不希望改变大部分区域时使用,比如 AI 绘画中常见的手画崩了的问题。 :::info 在 web-ui 中主要提供了三种方式进行局部重绘:
- 局部重绘:在重绘页面中通过画笔的方式涂抹你想要重绘的部分,相当于由用户绘制蒙版。
- 涂鸦重绘(InPaint Sketch):涂鸦重绘即让用户输入自己的涂鸦内容,用于指导 AI 画出自己想要的效果,这时候画笔不是局部重绘中圈出重绘区域的作用,而是具备内容输入的能力。
- 上传蒙版(InPaint Upload):WebUI 本身的图像处理是比较粗的,但在 Photoshop 等图像处理软件中可以非常精细的控制图片,因此可以通过这类专业软件绘制精确蒙版,然后将蒙版上传至 WebUI 的方式进行重绘 :::
【Doing】进阶:ControlNet 构图控制
ControlNet 构图插件在插件里算是功能比较强大的,值得单独拿出来说,简单来说 ControlNet 能从指定图像中提取中结构,构图,或者深度信息,用于指导 Stable Diffusion 生成指定结构或者构图。我们知道 AI 出图具有随机性,而 ControlNet 让控制 AI 稳定出图提供了可能性,从而让让商业化变得更为容易。
【Doing】进阶: ComfyUI 节点式生图方式
ComfyUI 是一种节点式控制 AI 生成图像的软件,其提供了节点式的控制方式,可以任意组合输入和输出,让 AI 出图的过程更加流程化和易于控制,能够达到 WebUI 无法达到的控制自由度。 我们也有设计师同学为 ComfyUI 设计了一套 Kitchen 风格的 Web UI 界面:
如上图所示,我们可以控制 ComfyUI 同时生成四张相同参数,只有正向提示词中少量不同的四张图,他们的种子都是一样的,只有提示词分别组合了
smile
,sad
, angry
, superised
四种表情。
这里直接将该软件分享出来给大家吧~
1.stable diffusion安装包
随着技术的迭代,目前 Stable Diffusion 已经能够生成非常艺术化的图片了,完全有赶超人类的架势,已经有不少工作被这类服务替代,比如制作一个 logo 图片,画一张虚拟老婆照片,画质堪比相机。
最新 Stable Diffusion 除了有win多个版本,就算说底端的显卡也能玩了哦!此外还带来了Mac版本,仅支持macOS 12.3或更高版本。
2.stable diffusion视频合集
我们在学习的时候,往往书籍源码难以理解,阅读困难,这时候视频教程教程是就很适合了,生动形象加上案例实战,一步步带你入坑stable diffusion,科学有趣才能更方便的学习下去。
3.stable diffusion模型下载
stable diffusion往往一开始使用时图片等无法达到理想的生成效果,这时则需要通过使用大量训练数据,调整模型的超参数(如学习率、训练轮数、模型大小等),可以使得模型更好地适应数据集,并生成更加真实、准确、高质量的图像。
4.stable diffusion提示词
提示词是构建由文本到图像模型解释和理解的单词的过程。可以把它理解为你告诉 AI 模型要画什么而需要说的语言,整个SD学习过程中都离不开这本提示词手册。
5.SD从0到落地实战演练
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名SD大神的正确特征了。
这份完整版的stable diffusion资料我已经打包好,需要的点击下方添加,即可前往免费领取!