Stable Diffusion WebUI 使用综述

前言

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

目前 AI 有两个主流的方向,一个是以 Stable Diffusion 为代表的 AI 图像生成领域,一个是 ChatGPT 为代表的大语言模型领域,本篇主要聚焦 AI 图像生成领域,Stable Diffusion WebUI 是目前比较主流的图片生成方向的软件,特点是开源 + 自定义程度高,适合比较喜爱折腾的同学使用,其强大的扩展性使在社区获得了广泛的应用。

本篇不讲原理只讲使用(我也没来得及深入理解),当前你可以简单理解使用 Diffusion 扩散模型生成图片的过程就是一个添加噪声再去除噪声的过程,在这个过程中 AI 将你的意图以及它通过无数训练样本建立起来的特征和原图的关联所形成的潜在变量空间为指导生成图片,而 WebUI 就是用于控制 AI 生成图片的工具。

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

硬件篇

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

显卡选择

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

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

根据自己的实际情况进行采购即可,比如下面是我 21年组的机器,23 年为了~玩 AIGC~配的 N卡 4070Ti。 a9bf7a6a1c003e9807a8b1d27594fee.jpg

部署篇

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%。

界面篇

安装部署完成后,我们首先认识一下软件界面: 无标题-2023-05-01-2030.png 然后是一些关键参数的快速设置对照表: image.png

提示词工程

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

模型篇

模型简介

  • AI 模型类别分为大模型和微调模型。

  • 模型后缀分为 .safetensor.ckptptsafetensor格式更加安全,推荐使用。

  • 同一模型可能也有不同版本,ema,pruned, fp16,fp32 等。

    具体模型文件简介见:文末

模型优化方案对比

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 目前可以不用考虑,慢慢会被其他模型优化方法所取代。

模型下载来源

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

Embedding 提示词打包

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

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

截图来源于 B 站视频

LoRA 低秩适应模型

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

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

  • Embeddings 就相当于是你的老板告诉你这个购物网站要有一个商品信息页,要有一个购物车等等,然后你根据需求去实现这个购物网站,出来的效果可能和淘宝完全不同。

  • LoRA 相当于你的老板告诉你这个购物网站功能和样子和淘宝差不多,然后你对着淘宝一顿输出,完成了这个购物网站的实现,出来的网站大概率和淘宝就七八分相似。

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

插件篇

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

安装插件

webui 提供两种方式安装插件,一个是从它的官方列表安装,一个是从一个指定网址安装。当然我们也可以手动下载插件文件后复制到插件文件夹。

常用插件

这里推荐一些常用的插件:
文件太大,需要的文末领取!

进阶:图像高清

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

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

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

  1. 更高的分辨率意味着更多的生成时间和更高的显存占用,非常容易爆显存,当然这个问题可以通过 Tiled 分块插件解决部分,代价是更长的生成时间。

  2. 由于 SD 训练时大多采用 512 * 512或 768* 768 的图进行训练,如果设置非常高的分辨率往往会导致多个人或者多个头的情况出现。

    别人画出来的图

    这是别人生成出来的图:画面精细,分辨率高,细节丰富。 000.pngimage.png image.png VS 我画出来的图

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

    file.png file (2).pngfile (1).png file (3).png

文生图: Hires.fix 高清修复

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

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

图生图: SD Upscale 放大脚本

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

UpScale 放大脚本的优势是:

  • 可以突破内存限制,获得更大的分辨率,最大四倍宽高

  • 画面精细度高,对细节的丰富效果出色 ::: :::danger 缺点是:

  • 分割重绘的过程比较不可控,比如分界线割裂

  • 操作繁琐,相对不直观

  • 偶尔加戏,出现莫名其妙的奇怪区域

后期处理:图像放大

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

进阶:局部重绘

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

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

【Doing】进阶:ControlNet 构图控制

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

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

ComfyUI 是一种节点式控制 AI 生成图像的软件,其提供了节点式的控制方式,可以任意组合输入和输出,让 AI 出图的过程更加流程化和易于控制,能够达到 WebUI 无法达到的控制自由度。 comfyui_screenshot.png 我们也有设计师同学为 ComfyUI 设计了一套 Kitchen 风格的 Web UI 界面: screenshot-1.webp 如上图所示,我们可以控制 ComfyUI 同时生成四张相同参数,只有正向提示词中少量不同的四张图,他们的种子都是一样的,只有提示词分别组合了 smilesad, 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资料我已经打包好,需要的点击下方添加,即可前往免费领取!

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

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

相关文章

flutter日期选择器仅选择年、月

引入包&#xff1a;flutter_datetime_picker: 1.5.0 封装 import package:flutter/cupertino.dart; import package:flutter/material.dart; import package:flutter_datetime_picker/flutter_datetime_picker.dart;class ATuiDateTimePicker {static Future<DateTime> …

TSINGSEE青犀视频边缘计算AI智能分析网关V4告警消息语音推送的配置流程

TSINGSEE青犀视频边缘计算硬件智能分析网关V4内置了近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、物、行为等实时检测分析&#xff0c;上报识别结果&#xff0c;并能进行语音告警播放。今天我们来分享一下如何配置和使用AI智能分析网关V4的语音推送。 提前准备…

django中的cookie与session

获取cookie request.COOKIE.GET 使用cookie response.set-cookie views.py from django.http import HttpResponse from django.shortcuts import render# Create your views here. def cookie_test(request):r HttpResponse("hello world")r.set_cookie(lan, py…

c语言排序算法之八(桶排序)

前言 以下内容是被验证可以有效理解桶排序&#xff0c;代码也较容易理解。如果你发现还有很多需要增加的&#xff0c;欢迎留言。 为什么要单独写排序算法这一系列&#xff0c;看过一些贴子普遍篇幅较长。看完依旧难以直观理解原理及整个过程。代码永远是基于理解的基础上才能…

【刷题】前缀和进阶

送给大家一句话&#xff1a; 生活坏到一定程度就会好起来&#xff0c;因为它无法更坏。努力过后&#xff0c;才知道许多事情&#xff0c;坚持坚持&#xff0c;就过来了。 – 宫崎骏 《龙猫》 ┌(˘⌣˘)ʃ┌(˘⌣˘)ʃ┌(˘⌣˘)ʃ ┌(˘⌣˘)ʃ┌(˘⌣˘)ʃ┌(˘⌣˘)ʃ ┌(˘…

RS2105XN功能和参数介绍及PDF资料

RS2105XN 品牌: RUNIC(润石) 封装: MSOP-10 开关电路: 单刀双掷(SPDT) 通道数: 2 工作电压: 1.8V~5.5V 导通时间(Tonmax): 50ns RS2105XN是一款模拟开关芯片。以下是RS2105XN的功能和参数介绍&#xff1a; 功能&#xff1a; 2通道单刀双掷&#xff08;SPDT&#xff09;模拟开关…

基于springboot+mybatis+vue的项目实战之(后端+前后端联调)

步骤&#xff1a; 1、项目准备&#xff1a;创建数据库&#xff08;之前已经创建则忽略&#xff09;&#xff0c;以及数据库连接 2、建立项目结构文件夹 3、编写pojo文件 4、编写mapper文件&#xff0c;并测试sql语句是否正确 5、编写service文件 6、编写controller文件 …

【数据库原理及应用】期末复习汇总高校期末真题试卷09

试卷 一、填空题(每空1分&#xff0c;共10分) 数据的完整性是指数据的________、有效性和相容性。数据模型通常由________、数据操作以及数据约束条件等三要素组成。在关系的有关术语中&#xff0c;关系表中的每一行称作________&#xff0c;每一列称作属性。信息的三种世界是…

C++:多态-虚函数

C 中的多态性是面向对象编程中的一个重要概念&#xff0c;它允许在运行时选择不同的函数实现&#xff0c;以适应不同类型的对象。 多态的种类 编译时多态性&#xff08;Compile-time Polymorphism&#xff09;&#xff1a;也称为静态多态性或早期绑定&#xff0c;指在编译时确…

【网络协议】----IPv6协议报文、地址分类

【网络协议】----IPv6协议简介 【网络协议】----IPv6协议简介IPv6特点IPv4 和 IPv6报文结构IPv6报文格式-拓展报头 IPv6地址分类IPv6地址表示IPv6单播地址可聚合全球单播地址链路本地地址唯一本地地址特殊地址补充 接口标识&#xff08;主机位&#xff09;生成方法通过EUI-64规…

CISCN 2023 初赛

Web unzip 文件上传页面 upload.php页面源码显示了出来 <?php error_reporting(0); highlight_file(__FILE__);$finfo finfo_open(FILEINFO_MIME_TYPE); if (finfo_file($finfo, $_FILES["file"]["tmp_name"]) application/zip){exec(cd /tmp &am…

IP协议,网络层

一、IP协议报文 在网络层最主要的协议是IP协议&#xff0c;网络层的主要任务是进行&#xff1a;1.地址管理 2.路由选择 地址管理&#xff1a;使用一套地址体系&#xff0c;描述互联网中每个设备所处的位置。 IP地址有两个版本&#xff0c;1.IPV4 2.IPV6 &#xff0c;IP…

信奥数据“信息差”,让你惊掉下巴!

✅ 信奥红利分析 暑假信奥赛即将到来&#xff0c;在全国各地赛事也越来越受到重视&#xff0c;但是似乎关于红利这一块各地如何&#xff0c;并没有太多的老师给各位家长分析清楚。 那么今天曹老师就主要给从各位新手家长分析一下信奥红利地区&#xff0c;在开始分析之前请大家看…

使用 MediaMTX 和 FFmpeg 推拉 RTSP 流媒体

实时流传输协议 RTSP&#xff08;Real-Time Streaming Protocol&#xff09;是 TCP/IP 协议体系中的一个应用层协议&#xff0c;由哥伦比亚大学、网景和 RealNetworks 公司提交的 IETF RFC 标准。该协议定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP 在体系…

初始化创建一个webpack项目

新建一个空的工程 -> % mkdir webpack-project 为了方便追踪执行每一个命令&#xff0c;最终产生了哪些变更&#xff0c;将这个空工程初始化成git项目 -> % cd webpack-project/-> % git init Initialized empty Git repository in /Users/lixiang/frontworkspace/…

初探MFC程序混合使用QT

一、背景 随着操作系统国产化替代的趋势越发明显&#xff0c;软件支持国际化、跨平台&#xff0c;已然是必须做的一件事情。原有的软件UI层用的是MFC&#xff0c;将其换成QT&#xff0c;想必是一种较好的方案。对于大型软件&#xff0c;特别是已发布&#xff0c;但还处于不断迭…

C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

数据统计:词频统计、词表生成、排序及计数、词云图生成

文章目录 &#x1f4da;输入及输出&#x1f4da;代码实现 &#x1f4da;输入及输出 输入&#xff1a;读取一个input.txt&#xff0c;其中包含单词及其对应的TED打卡号。 输出 output.txt&#xff1a;包含按频率降序排列的每个单词及其计数&#xff08;这里直接用于后续的词云…

设计模式之单例模式详解

单例模式 描述&#xff1a;单例&#xff08;Singleton&#xff09;模式的定义&#xff1a;指一个类只有一个实例&#xff0c;且该类能自行创建这个实例的一种模式。 核心特点 单例类只有一个实例对象&#xff1b;该单例对象必须由单例类自行创建&#xff1b;单例类对外提供一…

OpenCV 入门(一) —— OpenCV 基础

OpenCV 入门系列&#xff1a; OpenCV 入门&#xff08;一&#xff09;—— OpenCV 基础 OpenCV 入门&#xff08;二&#xff09;—— 车牌定位 OpenCV 入门&#xff08;三&#xff09;—— 车牌筛选 OpenCV 入门&#xff08;四&#xff09;—— 车牌号识别 OpenCV 入门&#xf…