当前位置:   article > 正文

这几年爆火的AI绘画是咋做到的?_sdxl到了什么版本了

sdxl到了什么版本了

Midjourney、Dall-E3、Stable Diffusion、Sora、AIGC、……这几年爆火的AI关键词全是英文,而且都没有官方翻译,中文小白别说弄懂,读名字、记名字都费劲。加上铺天盖地的AI培训、提示工程,学不会就错过了下一个时代,割完股市割职场,全都在贩卖焦虑。

本文没有任何复杂的技术术语(有,也在括号里),保证认识汉字就能搞懂。如果想在茶余饭后或者吹牛的时候说上两句,那就死记硬背下括号里的装B术语,然后再用本文中通俗的语言讲出来,保证你的B格拉满。

温馨提示:本文使用了很多夸大事实,不甚严谨,在专业人士眼中属于低级错误的用词和描述。其目的只是方便大家理解。杠精走开。

1️⃣ / AI到底是个啥?

AI就是算法。

那算法又是个啥?算法就是加减乘除(以及你初中、高中、大学学过的所有数学公式)。**所以算法就是数学,**就是一大堆数学公式按照一定的规则堆在一起。算法,无非是计算机科学里面给数学起了一个装B的词汇而已。本质上没有区别。(这也是为啥早期计算机专业都开在数学系里)尤其是这两年的AI热。本质上不是计算机科学,而是数学。也就是说,人工智能科学家,其实都是数学家。

所以记住第一个重点:**AI 就是算法。算法就是数学。**也就是说,AI就是数学。(更具体点,AI主要是概率论与数理统计、线性代数等高等数学知识的应用)

2️⃣ / AI的本质是啥?

**AI的本质是压缩。**无论是爆火的ChatGPT(是的,这玩意也没有中文名,我爸管它叫机器人写字)还是我们今天讲的Stable Diffusion,他们的本质都是压缩。

有人说,压缩我懂啊,就是挺大的一个文件,通过压缩就可以变小,通过U盘复制到别人电脑上,还得解压缩才能看里面的文件。这跟AI是一个东西?不是,还真不是。

我们传统说的压缩是无损压缩,就是说:你把一本红楼梦压缩了,解开还得是红楼梦,不能少两章,也不能变成金瓶梅。这就叫无损,没有任何损伤、损坏。所以受制于无损这个要求,所以并不能无限压缩。

但AI的压缩不同。AI是将上亿、上千亿张照片/小说,压缩到几个G的大小。或者夸张点说,它是将整个互联网上曾经存在过的数据都打包压缩成了一个文件。你想想,要是用无损压缩,那得多大,啥硬盘能装得下啊。所以AI使用的压缩方法是有损压缩。有损伤、有损害、差不多就行的一种压缩方式(用数学的算法做到的)。

3️⃣ / **几个字****怎么就变成照片了呢?**

本质上就是压缩和解压缩。来,学两个你本来就会的AI专业装B词儿,训练和推理。

训练就是压缩,推理就是解压缩。

训练就是AI科学家把全世界他们能找到的好看的图、照片,通过数学(算法)有损压缩成了一个压缩包,一个文件。AI领域管这个文件叫:模型。所以训练就是做一个文件(模型)出来。

推理就是你我这些凡人,通过说人话(自然语言),让刚刚训练出来那个模型理解我们的意思,从它之前压缩的上亿张图片里,组合出一张新的图片。

所以推理就是解压缩,不是都把所有图片都解开,是根据你的意思,把它理解(你需要)的照片解出来。那这张照片一定是当年压缩中的某一张吗?一定不是,因为我前面说了,AI的压缩是有损压缩,所以当年的压进去的图片都变样了(后面详细讲变成啥样了),解压给你看的,是AI理解的一张全新图片。

所以推导出第二个重点:**AI只会画它见过的东西,**如果AI科学家没有把恐龙的照片打包压缩(训练),那这个AI模型一定不会画恐龙(推理)。

总结下,(这段对理解后面很重要)科学家或大神们,通过把上亿张好看的图片压缩成了一个文件,也就是模型。前面这个过程叫:训练(也叫预训练,Pre-training,因为是预先做好的训练)。

他们把模型放到了网上。你把这个文件下载到你的电脑里,或者你打开了一个人家做好的网站或者小程序。

你通过敲几个字儿或者一句话,AI就可以画出画来了。后面这个过程叫:推理(Inference或Reasoning)。(AI根据它之前受过的训练,推理出你想要这样婶儿的一张图)

训练和推理是AI界的通用词汇。也就是说,无论是写字儿(文生文——文本生成文本),还是画画(文生图),做视频(文生视频)。都需要先训练一个模型,然后我们拿着模型来使用(推理出我们想要的答案:文字、图片、视频)。

4️⃣ / 具体是怎么画出来的呢?‍

好,现在开始,进入今天的正题:Stable Diffusion(字面翻译:稳定扩散),后面简称SD(不是灌篮高手那个SD,不是存储卡SD,是AI画画的SD)。

SD的文生图目前有三个大版本,分别是:

● SD(包含了Stable Diffusion1.5~2.1):2022年11月发布的2.0版本

● SDXL(Stable Diffusion XL):2023年4月发布

● SC(Stable Cascade):2024年2月发布


1、 扩散算法(“diffusion process” 或 “diffusion algorithm”)

我们刚刚知道了,所谓算法就是数学,所以上面这个词儿,你可以理解为,一个数学公式(贼复杂,不用懂也不用学,但用起来贼简单,会说人话就行)

Stable Diffusion用的扩散算法,是稳定的扩散算法。怎么个稳定呢?

就跟盘古开天地差不多,一切都要从混沌说起。来,再学两个新的装B词儿,前向扩散和后向扩散(相信我真的很好理解)。

前向扩散就是上面说的训练(就是做个压缩包),后向扩散就是推理(解压缩出来你想要的那张图)。

那为啥要起两个新词儿呢?因为这是SD使用的这个算法,要区别于其他家的AI画图的算法。

那到底啥是扩散呢?很简单,就是加雪花点(噪点)。下面这张图非常直白的表达了SD的训练和推理的原理。对!就这么简单。

左边这个框,就是AI科学家找来的上亿张图片(我随便拿三张代表),中间这个雪花点(噪点)就是生成的AI模型(方便你理解,其实不长这样,但也差不多)。所以从左边到中间,就是训练,就是前向扩散。

我们实际上拿到的就是中间这个乱糟糟的东西。然后通过说人话(提示词),模型就可以生成右边的图片啦(这个过程叫推理,在SD里叫后向扩散)。

最右边这两张,跟最左边的三张不能说是完全相同,但你总感觉有点类似,对不对。这就是AI。这就是人工智能。它只会画它见过的东西。

总结下:

SD的训练就是往好看的图片里面加噪点,加到乱七八糟,加到啥也看不见,只剩噪点。

SD的推理就是从一张混沌的噪点图开始,逐渐去除噪点,慢慢清晰化,直到生成一张好看的图片,而且是你需要的那张。

这两个过程:SD管它叫前向扩散和后向扩散。SD的全称Stable Diffusion就表示,它可以让这个扩散过程很稳定,一个恐龙被压缩成噪点图,扩散出来还是一个恐龙。嗯,稳定!


2、 潜在空间(Latent Space,也有人翻译成:隐空间、潜空间、低维表示)

上一章节中,左边和右边都很好理解(都是人能看懂的图片),所以我们现在把中间的部分拆包来看。

这张图就是刚刚那张噪点图拆开的样子。解释下这几个词儿:

**● 编码器(Encoder)。**就是把好看的图片(原始图像)通过算法变成一串数字(如果要看的话就是一堆噪点)。

**● 解码器(Decoder)。**就是从一串数字(噪点图),通过算法,最终转化成好看的图片。

**● 文本描述(Prompt)。**就是人话,就是你给AI下的指定(提示词),你希望它画个啥出来。

**● 文本编码器。**就是把你说的人话,通过算法变成一串数字(你看不懂,但数学可以理解的内容)。

**● 蓝色箭头的部分,**就是刚刚说的训练的过程。

**● 红色箭头的部分,**就是刚刚说的推理的过程。

最后一个困难知识点:潜在空间。

潜在空间展开介绍太复杂,太数学。简单的来说,潜在空间做的事情就是不断地压缩再压缩。

我们都知道每个像素块是由RGB三种颜色的数值组成(比如白色就是:256,256,256),一张画是由很多个像素块组成,SD的训练图片集都是整理好的512*512的相册(图片集合)。所以,一张图片就可以由3*512*512个数字表示(这里的3表示RGB三原色的三个数字)。

SD2.1以前的版本,可以把这个数据量压缩到3*64*64个数字表示(还不失真)。怎么做到的?问,就是算法。具体怎么算出来的,去看专业论文,我这里是小白科普,不展开。

所以简单来说,潜在空间的作用就是降维。就好像二向箔一样,把一张图片降低维度(数学层面的维度,不是我们能看到的维度概念)。降低维度目的就是要压缩数据量。

然后开始开始上亿次的训练,训练就是调整模型里面的参数,通过数学的方式理解图片里的信息。这就是AI引发人类恐慌的地方(人类无法理解的黑盒空间)。我们只能通过观测发现,把上亿张图片变成一串又一串的数字,经过上亿次的数学统计方法,AI就可以理解图片的具体内容了:这是一只猫,这是一片蓝天(当然,导入图片的时候就告诉AI,这张画里有猫、有蓝天)。经过上亿张照片,上亿次的训练,AI就理解了我们的世界。

推理无非就是反过来做一遍(逆运算),你说要有猫、要有蓝天,AI就可以通过它训练时候学到的东西,给你生成一串数字,然后再把这串数字解码成图片。

**本节重点:**潜在空间是目前AI画图界的最核心的理念。因为在这之前的AI都是在像素空间里面画图(人类可以监控整个AI绘图的过程,也就是白盒过程,AI在想什么,它中间画出来的是什么,全都可以被人类观测到,这就是所谓的像素空间)。

但潜在空间是一个数学模型,官方论文说是抽象成了一个更低的维度,但为了方便理解,你可以把它想象成更高的维度。也就是我们人类是三维世界的生物,我们只能看懂三维世界的图片(对,图片是数学描述中是三维的,想想上面提到的3*512*512)。当前的AI绘画技术,黑盒的地方是把一张图片提高到了一个人类无法感知、无法观测的维度,然后进行压缩。这个过程就发生在另外一个维度世界里,我们把这个世界叫做潜在空间。

这就是SD的整个工作原理了。


3、 SD的各个版本之间有什么区别?

刚刚提到,SD一共有三个大版本:

● SD(包含了Stable Diffusion1.5、1.6、2.0、2.1等)

● SDXL(Stable Diffusion XL)

● SC(Stable Cascade)

简单来说,SD只有一层(一个)潜在空间,SDXL有两层,SC你可以大概理解为有三层。

当然,这东西也不是说越多越好,每层都有它的作用。

  • Stable Diffusion

SD只有一层潜在空间。它的架构就是上面那张图。(下面这张是官方图,看只有一个潜在空间)

具体是怎么画的呢?

一切的起始都源自一个种子(Seed),种子是一串数字,没有小数点的一个正整数。它就好像是一张图片的DNA一样,只要种子固定,画出来的就是同一个人。(就好像DNA固定,长出来的孩子也是一样的)

**首先:**模型先把种子转换成一张噪点图(毫无意义的雪花点图)

**然后:**用你写的提示词(Prompt)在模型中找它之前训练时候见过的一个又一个的词汇对应的图片(潜在空间的图片,人类无法观测和理解的图片),通过你指定的步数(Steps)一步一步的去除噪点。你的迭代步数指定了20步,模型就重复这个过程20次。50步就50次。但这个步数不是越大越好,因为步数越大,也就意味着你告诉模型,这张图还有噪点,导致过犹不及,画面就会由于步数太多而失真了。

用什么方式去除噪点呢?用算法,这里的算法就叫采样器(Sampler)。不同的采样器有不同的去噪算法。

看,下图中,Stable Diffusion中最复杂的两个参数,是不是就理解了呢?

由于SD都是用512*512的图片训练的。所以在使用这个版本中生成一张1024的图片,就经常会出现画面中有两个脑袋的诡异图片(如下图)

在这个时代,人们通过很多种办法解决这个问题,比如通过四步走,第一步,生成512*512的图。第二步,把它切成四块。第三步,每块用图生图的方式重画一遍。第四步,把四张图拼在一起。最终实现所谓的高清修复或无损放大,这就是上图中的高分辨率修复(Hires. fix)的原理了。

  • SDXL

SDXL为了解决这个问题,使用了下图的技术架构,简单来说就是使用了两个潜在空间。左边的潜在空间负责生成框架和粗糙的底稿,右边的潜在空间负责进一步加工,丰富细节和让画面更漂亮。这样就可以杜绝出现两个头的这种诡异情况。

SDXL使用的采样是所谓的混合采样。也就是说,指定的采样步数是40步。那前面的30步由左边的模型负责,最后10步由右边的模型负责。这就是为什么SDXL在界面上会有下图这两个参数,以及为什么refiner的模型文件要放在主模型文件夹里的原因。下图中的0.8表示,当进行到80%的时候,refiner介入并接管。

  • Stable Cascade

(这段贼复杂,我已经尽力用通俗的语言表达了,觉得太费脑子的可以只看下面一句话,剩下的都可以跳过了)

为什么要做SC模型?总结一句话:众所周知,SD也好Midjourney也好,都是用一堆关键词,有规则、无意义的堆叠在一起出图。而竞品OpenAI的Dall-E3,已经可以用自然语言出图了(说人话出图)。SC核心要做出来的,就是说人话出图的产品,这就是Stable Cascade(简称SC)。

SC的架构方面,是在SDXL的基础上,又加了一层(我看了原论文,的确是三层架构,而不是像B站某UP主说的两层)。

SC的训练过程是从Stage A → C → B。 推理过程是反过来的,从Stage C → B → A。

注意SC高明的地方就是在原有的基础上增加了C阶段(Stage)。而训练的过程不是我们熟悉的ABC,而是ACB(后面详细展开讲)。

要理解这三个阶段原理就需要先从训练说起。(不要被下面这张图吓唬,其实不难理解的)

在这里插入图片描述

首先科普一个计算机的基本理念(没有这个理念听不懂后面的介绍)

传统计算机的程序是由三部分构成:输入 → 算法 → 输出。

举个例子:给计算机两个数字的输入,1和1 → 给计算机指定算法是加法 → 计算机给我们呈现的是输出,2。 这就是计算机计算1+1 = 2的过程。很好理解。

AI的模式不是这样。

AI的模式是:给定计算机 1和1两个输入,给定输出的结果是2。通过上亿组的输入+输出,希望计算机自己总结算法。(这里就是让计算机总结算法是加法)。所以AI的模式最终生成的是一个算法文件(也就是模型)。这么做的意义是:有了算法文件,我们再给1和2,给到这个算法文件,计算机就可以生成最终我们想要的输出——3了(这个1+2=3的过程,就是推理)。

有了这个基础,我们就可以开始讲训练的阶段A了。

训练——阶段A(Stage A)

训练过程的A阶段的输入还是经典的1024*1024的图片,由于有RGB三种颜色(用三个数字表示)所以输入就是3*1024*1024的图片。阶段A的输出(第一行最右边)也还是这张图片。所以这个阶段是通过编码和解码(问就是算法)最终生成的其实是一个潜在空间,也就是一个模型(再直白点说生成的是有损压缩的算法,也就是把这张图片压缩成256*256的方法,专业词汇叫:离散令牌空间 discrete tokens)。

训练——阶段C(Stage C)

阶段C的输入还是这张3*1024*1024的图片。过程是通过算法理解这张图上有什么,有猫还是有狗。这个过程很像ChatGPT的训练过程,只不过是针对图片的。中间态是输出一个1280*24*24的潜在空间图片表示。首先这个1280是理解维度(官方的翻译叫通道,Channel),简单的讲,你可以把它理解为神经元(就像人脑的神经元一样去理解图片上都有哪些东西,是只猫,是一只橘猫,是一只面朝观众、闭眼、伸懒腰的橘猫)。后面的24*24还是图片的分辨率。这整个1280*24*24是这张图在潜在空间的表示(人类看不懂的数学表示,说白了就是一堆数组成的矩阵),然后再进行一次低维压缩,最终输出的是16*24*24的潜在空间表示(上图中紫色的Model),为了方便后面介绍,我给它起了个名字:理解模型。

训练——阶段B(Stage B)

阶段B比较复杂,它的输入有三条链路。一条是图片链路;一条是C阶段的生成的理解模型;一条是描述这张图片的文本链路。

图片链路。输入还是原来那张3*1024*1024的图片,通过压缩算法,压缩成4*256*256的潜在空间表示(一张图片的低维表示),然后对它添加噪声(目的是方便推理阶段的去噪)。

文本链路。这个就是在训练初期人工对这张图进行的描述(也就是AI领域常说的,人工打标图文对,中的文字部分)。

这三个输入(256分辨率的图片、C阶段的理解模型、人工标注的文本)一起扔给模型,然后进行上亿次的训练,最终生成的是一个针对图片的潜在空间(可以简单理解为另一个模型)。

好了,最困难的训练部分讲完了。那为啥要设计的这么复杂,费这么大劲是干嘛呢?

我们都知道,目前无论SD或者Midjourney的文生图,都是用一堆单词堆砌之后,生成一张图片,这不符合人类的认知习惯。人类还是比较倾向于用自然语言描述来生成图片。(说白了就是说人话,然后出图)。所以Stage C的阶段就是理解人话。通过神经元去理解自然语言,然后并不是提炼出关键词再套用原来的流程,而是直接直接通过理解去生成图片。

最后我们说下推理过程,如果理解了训练过程,推理就非常简单了。

**第一步(Stage C),**跟之前一样,一切的起始都源自一个种子(一串无意义的正整数)

用户给出一段描述(自然语言描述),通过理解模型(深紫色的Model),AI提炼出了我们也无法理解的这段话的低维表示(16*24*24)。

**第二步(Stage B),**第二步要喂给模型三个东西。

1、 基于种子生成的噪点图(目前还是毫无意义,但是里面有最终图片的DNA)

2、 第一步中提炼出来的我们无法理解的低维表示(16*24*24)

3、 用户给出的那段描述。

喂给模型后,模型生成了一个4*256*256的图片表示(注意,这个图片表示我们看不懂,只有AI能看懂),所以还需要第三步。

**第三步(Stage A),**就是通过解码器,把这个4*256*256的图片表示,最终生成了我们人类可以看懂的最终图片(3*1024*1024)。

这就是SC的训练和推理的全部原理解析了。

最终看下SC的生成图片的示例(含Prompt)

但SC注定是个过渡版本,因为最新的Stable Diffusion 3已经发布了,等正式版本上线,如果我还有兴趣的话,再带来深度解析。


番外:SC官网上提供的几个模型文件如何选择?

直接上结论:

1、bf16版本和对应的正常版本(没有后缀的版本),除了下载的时候占用硬盘体积不同,出图时间、占用显存、出图效果基本完全一致,如果你是30系或者40系支持bf16的显卡的话,建议直接下载bf16就好了;

2、如果你的显存不到16G,那么不带lite字样的模型就不要下载了,容易爆显存;

3、如果你的确还要尝试下,并且你的显存在8G以上,可以尝试下lite版本,但是效果会大打折扣;

写在最后

感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。

AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

在这里插入图片描述

一、AIGC所有方向的学习路线

AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

在这里插入图片描述

二、AIGC必备工具

工具都帮大家整理好了,安装就可直接上手!
在这里插入图片描述

三、最新AIGC学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述
在这里插入图片描述

四、AIGC视频教程合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

若有侵权,请联系删除
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/261165
推荐阅读
相关标签
  

闽ICP备14008679号