前言
科技圈的风口年年都在变,前几年是区块链,后来是虚拟实际,元宇宙,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。
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%
界面篇
装置布置完成后,咱们首要认识一下软件界面: 然后是一些关键参数的快速设置对照表: 有爱好的可以参阅下面的链接了解每一项功能的运用办法: 方便设置列表 生成按钮下方方便键 采样器 & 步数的选择 CFG 提示词相关性的设置 模板预设办理 附加网络办理 clip skip 越过层 【TODO】VAE 编解码器
提示词工程
prompt 顾名思义是”提示词”的意思,在 AI 文生图中用于辅导 AI 生成进程,告知 AI 你想要的画面作用。提示词是咱们与 AI 科学高效沟通的桥梁,有点像魔咒相同,输入一段奇特的词语,AI 会将你的主意变成实际。一个 AI 可以读懂的好咒语应该是内容充实丰厚且画面具有明晰标准的,这儿供给一个通用模板供快速运用: 想要了解怎么写好提示词可以参阅: Prompt 提示词魔法书
模型篇
模型简介
-
AI 模型类别分为大模型和微调模型。
-
模型后缀分为
.safetensor
和.ckpt
或pt
。safetensor
格式愈加安全,引荐运用。 -
同一模型或许也有不同版本,ema,pruned, fp16,fp32 等。
具体模型文件简介见: SD 模型文件简介
模型优化计划比照
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
现在可以不用考虑,慢慢会被其他模型优化办法所替代。具体比照请检查: SD 模型优化计划比照
模型下载来源
- 首推 HuggingFace,机器学习界的 Github,大多数模型下载源都可以在 hugging face 上找到。
- 其次引荐传说中的 C 站,Civitai 是一个专心 Stable Diffusion 的 AIGC 社区,用户注册登录之后即可上传和下载自己或他人练习的AI模型,而且对一切模型进行评分、收藏等操作。 ::: 具体介绍和一些大模型引荐详见: 模型下载来源 & 大模型引荐
Embedding 提示词打包
Embedding 可以改动画面风格,快速得到你想要的画面特征的图片,常用于负向提示词,可有用提高出图质量。
通俗了解 Embedding是“提示词打包”,即经过触发词将相关的一组特征词描绘打包在一起。在没有 Embedding 之前假设在不借助任何插件的状况你要生成一张想要的图片时需求大量的 tag 和描绘词去描绘,在引入 embedding 之后只需求一个词作为触发词即可到达上面的作用:
截图来源于 B 站视频
具体请见: ️ Embedding 提示词打包
LoRA 低秩习惯模型
LoRA 出自微软的一篇论文,LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS,原论文运用于 NLP 范畴,没想到在 Stable Diffsuion 中发扬光大了。中文名可以称呼为”低秩习惯模型“,简称 LoRA。LoRA 可以协助你向 AI 传递、描绘某一个特征精确,主体明晰的形象,其所携带的信息比较 Embeddings
要更丰厚。
有 UP 主举例说假设你是一个程序员,你的老板告知你要做个购物网站:
-
Embeddings 就相当所以你的老板告知你这个购物网站要有一个商品信息页,要有一个购物车等等,然后你依据需求去完成这个购物网站,出来的作用或许和淘宝完全不同。
-
LoRA 相当于你的老板告知你这个购物网站功能和样子和淘宝差不多,然后你对着淘宝一顿输出,完成了这个购物网站的完成,出来的网站大概率和淘宝就七八分相似。
现在LoRA 的一个首要应用是各种游戏、动漫人物的二次创作构建,因为其练习成本低,体积小,速度快,作用好,在社区中存在着大量优质的 LoRA 模型,其流行程度乃至不亚于大模型,你可以轻易找到自己想要的人物的 LoRA: 详见: LoRA 低秩习惯模型
插件篇
插件体系是 WebUI 可以坚持强壮扩展才能的关键基础设施。
装置插件
webui 供给两种办法装置插件,一个是从它的官方列表装置,一个是从一个指定网址装置。当然咱们也可以手动下载插件文件后复制到插件文件夹,关于怎么在 webui 中装置插件具体可以参阅: WebUI 怎么装置插件
常用插件
这儿引荐一些常用的插件: 中文本地化插件 UI 主题插件 – Kitchen Prompt 主动生成插件 Tag 主动补全插件 Tiled Diffusion 分块VAE插件 无边图画阅读 SAM 图画切割插件
进阶:图画高清
要提升成图质量,可以选用精度高体现好的模型,增加质量标准化提示词,增加分辨率等办法,除了以上办法之外,在 WebUI 中还有一系列功能时为了专门优化图画产出质量,为了咱们取得更大更高清的分辨率而存在的。比方:
- Hires.fix 高清修正
- SD Upscale 脚本
- 附加功能中的图画扩大算法
有人会问为什么不直接设置更高的分辨率呢?
-
更高的分辨率意味着更多的生成时刻和更高的显存占用,十分简略爆显存,当然这个问题可以经过 Tiled 分块插件解决部分,代价是更长的生成时刻。
-
因为 SD 练习时大多采用 512 * 512或 768* 768 的图进行练习,假设设置十分高的分辨率往往会导致多个人或许多个头的状况呈现。
他人画出来的图
这是他人生成出来的图:画面精密,分辨率高,细节丰厚。 VS 我画出来的图
这是我生成出来的图,乍看还可以,但仔细看会发现分辨率低,画面含糊,细节不行乃至构图崩坏:
文生图: Hires.fix 高清修正
Hires.fix 的原理是先生成一张低分辨率图画,在此画面基础上结合文本提示词进一步增加画面细节,然后提高分辨率,到达扩大图画的意图。它的优势是:
- 不会改动画面的构图(经过随机种子固定)
- 安稳克服多人多头号高分辨率产生的问题
- 操作简洁,明晰,直观 ::: 详见: Hires.fix 高分辨率修正
图生图: SD Upscale 扩大脚本
在图生图的页面中其实是没有高清修正的选项的,假设原图分辨率比较低,只要按更高的分辨率设置就可以完成”高清修正”,假设想要生成的图片更大,画面更精密,可以运用 UpScale 扩大脚本,在脚本栏敞开 “SD upscale” ,UpScale 扩大脚本的原理是将原图切成若干块之后别离重新制作,最后拼合到一起。
UpScale 扩大脚本的优势是:
-
可以打破内存约束,取得更大的分辨率,最大四倍宽高
-
画面精密度高,对细节的丰厚作用超卓 ::: :::danger 缺点是:
-
切割重绘的进程比较不可控,比方分界线割裂
-
操作繁琐,相对不直观
-
偶尔加戏,呈现不可思议的古怪区域
详见: 图生图: SD Upscale 扩大脚本
后期处理:图画扩大
假设生成图片后对图画的尺度依然不行满足,可以经过 WebUI 中的后期处理功能进行图画扩大来完成进一步的精密化,这儿图画扩大不涉及 AI 重绘的部分,可以看下扩大前扩大后的作用: 详见: 后期处理:图画扩大
进阶:部分重绘
部分重绘顾名思义便是将 AI 生成画面中不满足的部分进行重新制作以等待生成自己满足的画面。通常在咱们对画面的 99% 都比较满足,只想修正图片不希望改动大部分区域时运用,比方 AI 绘画中常见的手画崩了的问题。 :::info 在 web-ui 中首要供给了三种办法进行部分重绘:
- 部分重绘:在重绘页面中经过画笔的办法涂改你想要重绘的部分,相当于由用户制作蒙版。
- 涂鸦重绘(InPaint Sketch):涂鸦重绘即让用户输入自己的涂鸦内容,用于辅导 AI 画出自己想要的作用,这时候画笔不是部分重绘中圈出重绘区域的作用,而是具备内容输入的才能。
- 上传蒙版(InPaint Upload):WebUI 本身的图画处理是比较粗的,但在 Photoshop 等图画处理软件中可以十分精密的操控图片,因此可以经过这类专业软件制作精确蒙版,然后将蒙版上传至 WebUI 的办法进行重绘 ::: 详见: ✨ 部分重绘:AI 绘画的救星
【Doing】进阶:ControlNet 构图操控
ControlNet 构图插件在插件里算是功能比较强壮的,值得单独拿出来说,简略来说 ControlNet 能从指定图画中提取中结构,构图,或许深度信息,用于辅导 Stable Diffusion 生成指定结构或许构图。咱们知道 AI 出图具有随机性,而 ControlNet 让操控 AI 安稳出图供给了或许性,然后让让商业化变得更为简略。 ControlNet 构图操控插件运用
【Doing】进阶: ComfyUI 节点式生图办法
ComfyUI 是一种节点式操控 AI 生成图画的软件,其供给了节点式的操控办法,可以恣意组合输入和输出,让 AI 出图的进程愈加流程化和易于操控,可以到达 WebUI 无法到达的操控自由度。
咱们也有设计师同学为 ComfyUI 设计了一套 Kitchen 风格的 Web UI 界面:
如上图所示,咱们可以操控 ComfyUI 同时生成四张相同参数,只要正向提示词中少量不同的四张图,他们的种子都是相同的,只要提示词别离组合了 smile
,sad
, angry
, superised
四种表情。