StableDiffusion教程AI绘画原理

作者&投稿:策古 (若有异议请与网页底部的电邮联系)
~

Stable DIffusion原理卜原理

让每个人都看懂

AI绘画基本原理

01Stable Diffusion原理介绍

1.什么是扩散?

首先, 大家要明确(Stable Diffusion) 是一个算法, 我们说的StableD if uusi on webUI是基于这个算法的一个工具。

我们不妨先来学习一下英语:Stable Diffusion中的Stable是稳定的(adj.) , Diffusion是扩散(n.) , 所以Stable

Diffusion的简单理解就是一种稳定的扩散的算法。

在图像领域中,扩散算法是通过一定规则去噪(反向扩散)或加噪(正向扩散)的过程。

如下图演示的就是以prompt为**a red flower**做扩散的过程,从最开始的灰色噪点块、逐渐去噪到最终的清晰的过程:

2.扩散(Diffusion) 是怎么能被稳定(Stable) 控制的?

我们以文生图为例, 给大家看一下Stable Diffusion的原理:

这里的过程, 大家可以把它抽象理解为一个大函数Fsd

(prompt) , 即:我们输入一段自然语义prompt, 经过一系列函数运算和变化,最终输出一张图的过程。

3.CLIP:我们输入的文字prompt是如何起作用的?

我们先来看第一个部分,我们输入了一段咒语,这段咒语是如何起作用的?

让我们咒语起作用的是一段叫做CLIP的算法, CLIP是Text

Encoder算法的一种, Text Encoder大家从字面意思也能够理解,是把文字转化为代码的一种算法,他的主要功能是把自然

语义prompt转变为词特性向量(Embedding) 。

如下图所示, 我们举个例子, 比如我们输入了一个prompt:**可爱的女孩**, CLIP算法作自然语义处理的时候会根据之前被程序员调教的经验,大概感知到可爱的女孩可能具有哪些特征?

比如他们可能有”大大圆圆的眼睛“,可能有”白皙的肌肤“,可能有”可爱的神态“等等,然后这些可能得特征被转化为77个等长的token词向量(每个向量包含768个维度) , 这就是我们说的Embedding。

这里需要注意的是, UNET去噪的时候, 原理比上图描述的复杂很多,它其实并不是一步一步去噪就能得到对应效果的,如果仅仅是一步一步的去噪,效果往往很差,并不能精确得到描述文本的图片。

所以在这里我会稍微讲得深入一些, 介绍一下Classifier Free Guidance引导方法:

为了保证我们的prompt最终的精确性, 在UNET分步去噪的时候,比如我设置的去噪步长为20,他会在每一步都生成一个有prompt特征引导的图和一个没有prompt特征引导的图, 然后把两者相减,就得到了每一个去噪步骤中单纯由文字引导的特征信号,然后将这个特征信号大很多倍,这就加强了文本引导。

同时,在第N+1步去噪结束后,它还会用第N+1步去噪的信息特征减去第N部的特征,然后继续方法很多倍,这样保证

prompt在每一步都能有足够权重比参与运算。

上面那一段大家看不懂也没关系,用通俗的大白话来说,就是这个方法加强了prompt的权重。这个方法在Stable Diffusion webUI中被直译为提示词相关性, 是一个常用参数, 他的数值决定了生成的图与提示词的相关程度。

讲到这里你们会说,诶,不对啊,你看同样是关键词,你的为啥就这么好看,我的生成出来就很丑?那是因为,当我们输入同一个prompt, 我们的text encoder过程是一样, 也就是你得到的词向量是一致的,但是后面的去噪算法依赖模型不同,生成的效果千差万别。

那么接下来我们来讲一下SD里最重要的UNET算法。

4.UNET:扩散模型的工作原理

UNET他是一种根据词向量的扩散算法, 他的工作原理如下图所示, 在上面说到的Clip算法会根据我们输入的prompt输出对应机器能识别的词向量(Embedding) , 这个Embedding大家也只需要粗浅理解为他是一个函数,包含(Q、K、V)三个参数就好了。

这三个参数会根据我们输入的对应扩散步长, 作用于UNET去噪算法的每一步,比如下图中,我设置了去噪步长为20步,大家能看到这张图逐渐扩散生成的效果。

说完了文生图, 我们大概也说一下图生图, 咱们在使用Stable Diffusion webUI的时候用图生图的功能, 往往是给一张图,然后再输入一段prompt, 比如我们还是设置扩散步数N=20,这时候,它的原理是先把我们提供的图进行逐步加噪,逐步提取图片信息, 使它变成一张完全的噪点图, 再让prompt起作用, 结合上面的UNET算法逐步去噪, 得到既有素材图片特征也有prompt特征的最终效果图。

5.理解VAE的编解码过程

最后我们简单来理解一下CAE编解码的过程, VAE全称变分自编码器,这里大家不需要做太多理解,只需要知道他是一个先压缩后解压的算法就好了。

需要注意的是, 我们上面写的UNET算法不是直接在图片上进行的,而是在”负空间“进行的,大家理解为在代码层面即可。

VAE他的原理如下图所示, 假如我们要生成的图是512x 512的,VAE算法在一开始的时候, 会把它压缩到八分之一, 变成

64x 64, 然后走UNET算法的时候, 会把图形数据带在噪点图中, 这个过程叫Encoder, 然后再走完UNET算法后, 我们得到了一个带有所有图片特征的噪点图, 此时VAE再进行

Decoder过程, 把这张图解析并放大成512x 512, 知道到这里即可,不要深究。

1.机器是如何认识图片的?

首先,我们先来看看机器是如何认识图片的。相信大家都听说过,最初计算机视觉训练认识物体的时候,采用的是成对训练的方法,通过“图”+“对应描述”成对训练。运用图像识别、自然语义处理与卷积神经网络等一系列技术让计算机能够识别这个图形。

如上图所示,我们不停的给计算机喂成千上亿张狗的图,然后告诉他,你看这是狗,这也是狗,这还是狗,然后机器会不断归纳狗的特征,重复学习亿遍后,它就认识狗了。

2.可供调用的模型是如何训练的?

好了,假设这时候,机器已经能识别万物了,这时候机器由于学习的图片风格都不同,生成的图片有可能不满足我们的期望,举个例子:

假设程序员经过十年的努力后,让机器正确认识了小女孩的特征,不会出现三个眼睛两个嘴巴。

当我们输入一个**acute girl**, 生成的是图A, 这时候假如A 的风格与我们想要的完全不同,比如我们想要的是B这种,这时候程序员们就会不断调整函数中的各种算法和参数,使得产出的图形A无限接近图像B, 然后停止训练, 此时整个Fsd(x)函数的所有调整的参数, 就被保存为一个.ck pt的文件, 这个叫checkpoint的文件就是程序员训练好的可供调用的A I绘图大模型,他能保证我们每次生成的图偏向于某种特征集合。

整个过程如下图所示:




SQL server 数据库 如何把一张表复制到另一个数据库表中
1.首先,在桌面上单击“ManagementStudio”图标。2. 然后,在绑定布局中,右键单击表test2中的“编辑前200行”选项。的权利 3.然后,在这个接口中,选择表test2的所有内容,并右键单击“copy”选项。4.然后,在该接口中右键单击表test1中的“编辑前200行”选项。5.接下来,右键点击界面中的“粘贴”选...

sqlserver2005中如何将.mdf文件转换为.sql脚本文件
1.打开sqlserver,在对象管理器里找到要搞的库右键-》任务-》生成脚本 2.在弹出的向导中跟着向导一步一步做吧,最后可以搞出一个文件 3.一个库就一个文件你就直接在mysql里执行算了,导出的脚本会有一些垃圾语句,边执行边修改吧

请问一下tcp.exe是什么文件?
tabctl32.ocx tablediff.exe tablet.exe tabtip.exe tabuserw.exe tad.exe tag.exe tahni.exe tahnisetup_demo.exe talkback.exe talkingreminder.exe talknow.exe tangomanager.exe tapi.dll tapi3.dll tapi32.dll tapicfg.exe tapiperf.dll tapisrv.dll tapitna.exe tapiui.dll tappsrv.exe tard...

红河县15692742858: 易化扩散的说明 -
英忠唯坤: 易化扩散 一些非脂溶性物质从浓度高的一侧通过细胞膜扩散时,需要与特殊的载体蛋白发生可逆的结合(即以蛋白质载体为中介)称为易化扩散.另一类易化扩散,如K+, Ca2+等离子通过细胞膜是以通道为中介的易化扩散. 易化扩散(...

红河县15692742858: PS和AI要什么配置? -
英忠唯坤: 1、使用PS(Photoshop)和AI(Illustrator)软件需要一定的电脑配置来保证软件的流畅运行和效率. 2、常用PS/AI的,建议i3处理器起步即可,内存8GB,固态硬盘最好一个,独显一般没必要,非要加的话入门级独显即可.主要用到的软件是AE/...

红河县15692742858: 在MMD 里面,r染、t染、n染、a染、g染、ik染等等有什么区别啊?我是萌新,搞不懂这些渲染的区 -
英忠唯坤: 这些指的都是渲染的简称,比如r渲指的是Ray渲染,t渲指的是ToonShader渲染,a渲指的是dGreenerShader渲染,每个渲染都有不同的渲染方法,你可以去网上搜渲染的配套教程.建议新手使用Diffusion7、SSAO这样的简单渲染,ray渲染虽然功能强大但是非常深奥,会把新手强行劝退的

红河县15692742858: Photoshop的Diffusion Dither模式是在哪里调出的? -
英忠唯坤: 楼主说的应该是HSB模式调色.打开拾色器面板,左下角可以看到颜色的十六进制代码,如你说的#328184.你可以在拾色器面板中看到它的HSB数值:H182度,S62%,B52%.再改#328184为#d8ea0f,可以看到HSB数值变为:H65度,S94%...

红河县15692742858: 简明扼要的介绍下stable - sort()函数的用法. -
英忠唯坤: 需包含头文件:#include <algorithms>因为它是库函数 用法:和sort一样一下介绍一下sort的用法 sort的应用; 1、可以传入两个参数;sort(a,a+N) ,其中a是数组,a+N表示对a[0]至a[N-1]的N个数进行排序(默认从小到大排序); 2、传入三个...

红河县15692742858: 在稳定的等分子反向扩散,连通管内任一截面上单位时间单位面积向右...
英忠唯坤: 扩散工艺的步骤:固态扩散工艺(solid-state diffusion)形成结需要两步:淀积(deposition)和推进氧化(drive-in-oxidation),均在水平或垂直的炉管中进行. a.淀积:预淀积(predeposition、dep、predep),受制约因素一是特定杂质的扩...

红河县15692742858: 弥散,扩散,对流有什么相同点和不同点? -
英忠唯坤: 三者产生的原因不同.对流(Advection)主要是溶解在水中的物质随水流一起运移的过程,其运移量和运移方向与地下水一致.对流和地下水之间的紧密联系可以通过水流系统的知识来...

红河县15692742858: vs2008里qt没代码提示怎么解决 -
英忠唯坤: vs的任务栏 AssistX -> visual Assist X Options -> projects -> C/C++ Directories 选 custom 和 stable include files,然后把qt的include目录加进去,例如我的是这样: 点击确定后,重启vs,重启的时候观察vs的左下角,会在扫描一些目录,说明正在往里加头文件

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网