Stable Diffusion——stable diffusion基础原理详解与安装秋叶整合包进行出图测试

news2025/1/13 10:14:50

前言

在2022年,人工智能创作内容(AIGC)成为了AI领域的热门话题之一。在ChatGPT问世之前,AI绘画以其独特的创意和便捷的创作工具迅速走红,引起了广泛关注。随着一系列以Stable Diffusion、Midjourney、NovelAI等为代表的文本生成图像的跨模态应用相继涌现与Stable Diffusion的开源,Stable Diffusion以其出色的人物和场景生成效果备受瞩目。它包括文本生成图像、图像生成图像、特定角色的刻画,甚至超分辨率和修复缺损图像等任务。

介绍

Stable Diffusion的应用范围广泛,这不仅因为它生成的图像逼真,还因为它能够以多种不同的方式使用。让我们首先关注文本生成图像的方式(text2img)。

在上述示例中,我们输入了文本描述(prompt),模型就能够生成出一幅精美的图像。例如,输入“天堂、广袤的、沙滩”,就得到了一幅美丽的画面。
在这里插入图片描述

除了文本到图像的转换,另一种主要的使用方式是通过文本来修改现有图像。在这种情况下,输入是文本和图像的组合。例如,将文本描述为“海盗船”,模型生成的图像就会包含海盗船。
在这里插入图片描述

Stable Diffusion组成模块

Stable Diffusion实际上是一个相当复杂的系统,其中包含各种不同的模型模块。首先需要解决的问题是如何将人类理解的文字转换为计算机可理解的数学语言,毕竟计算机无法理解自然语言。这就需要一个文本理解器(text understander)来帮助进行转换。在生成图像之前,下图中蓝色的文本理解器首先将文本转换成某种计算机能够理解的数学表示:
在这里插入图片描述

1.图片信息生成器

在这里插入图片描述

上图粉色的模块是Stable Diffusion与别的Diffusion模型最大的区别之一,也是SD性能提升的着急之一。首先,需要明确一点:图片信息生成器不直接生成图片,而是生成较低维度的图片信息,即所谓的隐空间信息(latent space information)。在下图中,这个隐空间信息被表示为粉色的 4x3 的方格,随后将这个隐空间信息输入到下图中黄色的解码器中,就可以成功生成图片了。Stable Diffusion主要引用的论文“latent diffusion”中的latent一词也来自于隐变量中的“latent”。

一般的Diffusion模型直接生成图片,而不会有先生成隐变量的过程,因此普通的Diffusion在这一步上需要生成更多的信息,负荷也更大。因此之前的Diffusion模型在速度和资源利用上都不如Stable Diffusion。技术上来说,这个图片隐变量是如何生成的呢?实际上,这是由一个Unet和一个Schedule算法共同完成的。Schedule算法控制生成的进度,而Unet则负责一步一步地执行生成的过程。在Stable Diffusion中,整个Unet的生成迭代过程大约需要重复 50~100 次,隐变量的质量也在这个迭代的过程中不断地改善。下图中粉色的Image Information Creator左下角的循环标志也象征着这个迭代的过程。

2、图片解码器

在这里插入图片描述
图片解码器,从图片信息生成器(Image Information Creator)中接收图片信息的隐变量,然后将其升维放大(upscale),还原成一张完整的图片。图片解码器只在最后的阶段起作用,也是我们能获得一张真实图片的最终过程。

现在让更具体地了解一下这个系统中输入输出的向量形状,这样对Stable Diffusion的工作原理应该能有更直观的认识:

  • 文本编码器(蓝色模块)功能:将人类语言转换成机器能理解的数学向量。输入:人类语言;输出:语义向量(77,768)。
  • 图片信息生成器(粉色模块)功能:结合语义向量,逐步去除噪声,生成图片信息的隐变量。输入:噪声隐变量(4,64,64)+语义向量(77,768);输出:去噪的隐变量(4,64,64)。
  • 图片解码器功能:将图片信息的隐变量转换为一张真正的图片。输入:去噪的隐变量(4,64,64);输出:一张真正的图片(3,512,512)。

大概流程中的向量形状变化就是这样。至于语义向量的形状为什么是奇怪的(77,768),会在后面讲到文本编码器里的CLIP模型时解释。

Stable Diffusion定义

Diffusion模型的名称翻译成中文就是扩散模型,扩散的过程发生在Image Information Creator模块中,首先,使用随机函数生成一个与隐变量大小相同的纯噪声(下图中左下角透明的4x4区域)。一旦有了初始的纯噪声(下图中左下角透明的4x4区域)和语义向量(下图中左上角蓝色的3x5区域),Unet就会结合语义向量,不断地去除纯噪声隐变量中的噪声。大约重复50~100次左右就完全去除了噪声,并且不断向隐变量中注入语义信息,这样我们就得到了一个带有语义的隐变量(下图中粉色的4x4区域)。同时,我们还有一个scheduler,用来控制Unet去噪的强度,统筹整个去噪的过程。Scheduler可以在去噪的不同阶段动态调整去噪强度,也可以在某些特殊任务中匀速去除噪声,这都取决于我们最初的设计。
在这里插入图片描述
这个过程是通过一系列迭代步骤来去除噪声的,每一步都向隐变量中注入语义信息,直到噪声被完全去除。为了更直观地理解,可以将初始的纯噪声(左上方的透明44图像)和最终的去噪隐变量(右上方的粉色44图像)都通过最终的图像解码器进行解码,观察生成的图片。如预期所示,初始的纯噪声本身并不包含有效信息,因此解码后的图片仍然是噪声。而经过去噪处理后的隐变量已经包含了语义信息,所以解码后的图片会呈现出包含有效语义信息的图像。
在这里插入图片描述
迭代过程是多次重复的过程。每一次迭代的输入是一个隐变量,经过处理后输出也是一个隐变量,但噪声减少了,同时蕴含更多的语义信息。在下图中,4*4的隐变量从透明变成粉色的过程,代表了迭代的过程。颜色越粉,代表迭代次数越多,噪声也就越少。
在这里插入图片描述
在这个阶段,使用图像解码器可以提前观察到每一步所对应的图片,这样就可以逐步观察到我们期望的图像是如何从噪声中逐步生成的。
在这里插入图片描述

测试

秋叶整合包是简化了Stable Diffusion的安装和使用过程,使得没有编程背景的用户也能轻松地进行AI绘画创作。并提供详细的教程、资源和技术支持。首先确保计算机装备了Nvidia的独立显卡(N卡),尤其是RTX40系列或更高级别的显卡,显存应达到6GB以上,可以提高AI绘画的效率。如果没有N卡,可以使用CPU进行图形计算,但速度较慢,性价比也较低。此外,需要CPU性能足够高,并且至少有16GB的内存。总的来说,进行AI绘画时,推荐使用N卡,特别是RTX30系列或更高级别的显卡,以提高效率和性能。

秋叶整合包的源文件只分享在夸克网盘上,我这里把它转存到百度网盘:https://pan.baidu.com/s/1C8QBbshpgpIxBOTwsMYjaQ 提取码: pth5 ,这里的版本是4.6。

1.查看自己的GPU

查看GPU与内存大小,6G显存是出图的最低配置:

在这里插入图片描述

2.启动项目

下载之后,安装启动所需依赖,安装过.NET6的可以跳过这一步,不懂的再安装一遍也没问题:
在这里插入图片描述
解压“sd-webui-aki-v4.zip”。选择一个最少有20G以上的磁盘,因为解压出来的文件加上模型会很大,然后进入解压后的文件夹 sd-webui-aki-v4 。双击“A启动器.exe”,它会自动下载一些最新的程序文件。可能还会弹出了“设置Windows支持长路径”,确定就可以了。启动成功后,会打开下边这个界面。如果啥都做完了,也没打开这个界面,就再次双击这个文件或者以管理员身份运行。
在这里插入图片描述
之后点击 “一键启动",然后会弹出一个控制台窗口,做一些初始化的操作,出现“Startup time …”的提示就代表启动成功了。
在这里插入图片描述

然后会自动在浏览器中打开SD WebUI的窗口。不小心关了的时候,也可以用 http://127.0.0.1:7860 再次打开。打开的界面如下图所示:
在这里插入图片描述

测试出图

要生成图像,只需以下五个简单步骤:

  1. 选择模型,可以使用默认的大型模型"anything-v5"。

  2. 添加VAE模型。

  3. 提供提示词:用英文描述你想要的图像内容。

  4. 设置反向提示词:用英文描述你不想要在图像中出现的内容。

  5. 点击生成按钮。

图像生成的速度取决于你的计算机性能,稍等片刻即可。完成后,你可以点击图像放大查看,并右键下载。

在这里插入图片描述

常用概念

  1. 模型(Model):模型可以理解为一个函数,接受一系列参数作为输入,并生成相应的输出。在这里,模型接收一些参数(如提示词、反向提示词、图片尺寸、提示词引导系数、随机数种子等),并返回生成的图像数据。

  2. 大模型(Big Model):大模型通常称为基础模型,其文件大小通常在2GB至5GB之间。这些模型经过大量数据的训练,具有数十亿、甚至上百亿个参数。SD官方发布了一个通用的大模型,但由于其通用性,不能满足所有需求。因此,许多组织或个人会训练特定领域的模型,并将其发布到社区供大家使用。

  3. VAE模型(Variational Autoencoder Model):VAE模型类似于图片编辑软件中的滤镜,可以增强图像的色彩和线条,使图像看起来更加丰富。一些大模型可能已经集成了VAE模型,但用户也可以选择添加一个额外的VAE模型。常用的VAE模型之一是编号为840000的模型,用于增强图像的色彩。

  4. Lora模型:Lora模型是基于大模型的风格模型,用于控制图像的风格和特征。例如,在绘制人物时,可以使用Lora模型控制服装和头饰的样式;在绘制机械四肢时,可以使用Lora模型强调机甲样式;在绘制风景时,可以使用Lora模型控制绘画风格。

  5. 提示词(Prompt):提示词用于描述期望生成的图像内容。例如,描述场景、人物或物体的特征。良好的提示词对于生成所需的图像至关重要。

  6. 反向提示词(Negative Prompt):反向提示词用于描述不希望在生成图像中出现的内容。例如,排除特定物体或场景。使用通用的反向提示词可以简化此过程。

  7. 随机数种子(Random Seed):随机数种子影响生成图像的随机性。即使其他参数相同,不同的随机数种子也会产生不同的图像。这使得每次生成的图像都具有一定的差异,增加了创作的多样性。

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

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

相关文章

【Linux权限】 Linux权限管理 | 粘滞位

文章目录 Linux权限管理什么是权限 ❓💦 文件访问者的分类(人)💦 文件类型和访问权限(事物属性) 💦 文件访问权限的相关设置方法目录的权限 粘滞位 Linux权限管理 什么是权限 ❓ 权限本质上是决定某件事情,某人能否做。 Linux下…

【GameFramework框架内置模块】2、数据节点(Data Node)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q7…

AMD FPGA设计优化宝典笔记(1)触发器

高亚军老师的这本书《AMD FPGA设计优化宝典》,他主要讲了两个东西: 第一个东西是代码的良好风格; 第二个是设计收敛等的本质。 这个书的结构是一个总论,加上另外的9个优化,包含的有:时钟网络、组合逻辑、触…

从starrocks安装说起和Oracle的OLAP殊途同归

StarRocks是一款分析型数据库(他的定语也很多,分布式存算分离等等)。作为数据库他的运行和维护迟早也是落在我这里的。对于做数据库的人都知道什么是交易型数据库,什么是分析型数据库。以及什么是事务分析混合型数据库。但是对于非…

UE5 C++ 静态加载资源和类

一.上篇文章创建组件并绑定之后 在Actor中加载初始化了组件&#xff0c;现在在组件中赋值。使用static ConstructorHelpers::FObjectFinder<T>TempName(TEXT("Copy Reference"))&#xff1b;再用TempName.Object //静态加载资源static ConstructorHelpers::FOb…

2024.2.10 HCIA - Big Data笔记

1. 大数据发展趋势与鲲鹏大数据大数据时代大数据的应用领域企业所面临的挑战和机遇华为鲲鹏解决方案2. HDFS分布式文件系统和ZooKeeperHDFS分布式文件系统HDFS概述HDFS相关概念HDFS体系架构HDFS关键特性HDFS数据读写流程ZooKeeper分布式协调服务ZooKeeper概述ZooKeeper体系结构…

拿捏c语言指针(下)

前言 此篇讲解的主要是函数与指针的那些事~ 书接上回 拿捏c语言指针&#xff08;上&#xff09;和 拿捏c语言指针&#xff08;中&#xff09; ​​​​​​没有看的小伙伴要抓紧喽~ 欢迎关注​​个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#x…

GNU 图像处理程序 (GIMP) - 颜色拾取工具

GNU 图像处理程序 [GIMP] - 颜色拾取工具 References 选择 颜色拾取工具 在图片上选取要拾取位置的颜色&#xff0c;前景颜色会跟着改变 选择画笔工具&#xff0c;在图片上绘制的是选取的颜色 工具选项 -> 设置背景颜色&#xff0c;在图片上拾取为背景颜色 使用 橡皮工具&am…

SQL Developer 小贴士:显示Trace文件

SQL Developer可以识别trace文件&#xff0c;而无需利用tkprof进行转换。 在数据库服务器上生产trace文件。例如&#xff1a; alter session set tracefile_identifierdemo01_02;alter session set sql_tracetrue;-- your SQL here, for example select * from hr.employees;a…

汽车电子论文学习--电动汽车电机驱动系统动力学特性分析

关键重点&#xff1a; 1. 汽车的低速转矩存在最大限制&#xff0c;受附着力限制&#xff0c;因路面不同而变化。 2. 起步加速至规定转速的时间可以计算得到&#xff1a; 3. 电机额定功率的计算方式&#xff1a; 可以采取最高设计车速90%或120km/h匀速行驶的功率作为电机额定功…

LeetCode94.二叉树的中序遍历

题目 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 &#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2] 思路 中序遍历的顺序是左子树 -> 根节点 -> 右子树。因此&#xff0c;我们可以通过递归的方式遍历二叉树&…

程序员为什么不喜欢关电脑?没有的事!

程序员为什么不喜欢关电脑&#xff1f; 我干程序员 10 年了&#xff0c;这些年确实不怎么关电脑。不过我感觉这个习惯跟程序员这个职业是无关的&#xff0c;假如我今天不干程序员&#xff0c;我估计也照样不关电脑。其实&#xff0c;我们不妨反过来问&#xff0c;你喜欢关电脑…

美容小程序:让预约更简单,服务更贴心

在当今繁忙的生活节奏中&#xff0c;美容预约常常令人感到繁琐和疲惫。为了解决这个问题&#xff0c;许多美容院和SPA中心已经开始采用美容小程序来简化预约流程&#xff0c;并提供更加贴心的服务。在这篇文章中&#xff0c;我们将引导您了解如何制作一个美容小程序&#xff0c…

C#,笛卡尔树(Cartesian Tree)的构造、遍历算法与源代码

Ren Descartes 一、笛卡尔&#xff08;Ren Descartes&#xff09; 勒内笛卡尔&#xff08;Ren Descartes&#xff0c;1596年3月31日-1650年2月11日&#xff09;&#xff0c;1596年3月31日生于法国安德尔-卢瓦尔省的图赖讷&#xff08;现笛卡尔&#xff0c;因笛卡尔得名&#…

手撕qsort函数

前言 本篇主要讲解的是qsort函数细节以及运用实例。 紧跟我的脚步一起手撕qsort函数吧~ 欢迎关注​​个人主页&#xff1a;逸狼 更多优质内容&#xff1a; 拿捏c语言指针&#xff08;上&#xff09; 拿捏c语言指针&#xff08;中&#xff09; 拿捏c语言指针&#xff08;下&…

Job 和 DaemonSet

一、Job 1、Job 背景问题 K8s 里&#xff0c;最小的调度单元是 Pod&#xff0c;如果直接通过 Pod 来运行任务进程&#xff0c;会产生以下几种问题&#xff1a; ① 如何保证 Pod 内进程正确的结束&#xff1f; ② 如何保证进程运行失败后重试&#xff1f; ③ 如何管理多个任…

vue使用Nprogress进度条功能实现

下图中的这种顶部进度条是非常常见的&#xff0c;在vue项目中有对应的插件&#xff1a;Nprogress。 实现效果&#xff1a; csdn也在使用&#xff1a; 或者这样自己使用 1、安装 NProgress可以通过npm安装。 npm install --save nprogress 注意此处的--save等同于-s,就是将…

Arcmap excel转shp

使用excel表格转shp的时候&#xff0c;如果你的excel里面有很多字段&#xff0c;直接转很大概率会出现转换结果错误的情况&#xff0c;那么就需要精简一下字段的个数。将原来的表格文件另存一份&#xff0c;在另存为的文件中只保留关键的经度、纬度、和用于匹配的字段即可&…

RuntimeError: CUDA out of memory.【多种场景下的解决方案】

RuntimeError: CUDA out of memory.【多种场景下的解决方案】 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;【Matplotlib之旅&#xff1a;零基础精通数据可视化】 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于深度学…

6.2 数据库

本节介绍Android的数据库存储方式--SQLite的使用方法&#xff0c;包括&#xff1a;SQLite用到了哪些SQL语法&#xff0c;如何使用数据库管理操纵SQLitem&#xff0c;如何使用数据库帮助器简化数据库操作&#xff0c;以及如何利用SQLite改进登录页面的记住密码功能。 6.2.1 SQ…