浅析 Stable Diffusion 模型的底层原理


你好啊,我是雨飞,见字如面感谢阅读,期待我们下一次的相遇。



大家好呀,最近更新了好几篇关于 Coze 智能体的文章,里面我们多次提到了文生图的这种图像流。今天,我们就一起来了解下,文生图背后的Stable Diffusion模型是怎么通过文字生成图像的。


接下来,我会用很通俗易懂的方式给大家分享,没有特别复杂的算法细节。主要是让大家了解整个文生图算法的流程,当你明白整体流程之后,就会对这个模型的能力以及各个组件有了更清晰的认识。有不明白的地方,后面也可以一起交流。


什么是扩散过程(Diffusion)


Stable Diffusion 是一种文生图的模型,你可以给它一个文本提示,然后它将返回与文本匹配的 AI 图像,可以参考下面这个示意图。


首先,我们讲一下什么是扩散过程。扩散过程或者说扩散本身,其实是一个物理学的概念。


设想一下,我们向一个装满清水的杯子中心,滴一滴墨水,几分钟后,墨水会随机分布在整个水中。你再也无法分辨它最初是落在中心还是边缘附近,这个过程就是扩散。


那么扩散过程是怎么和 SD 模型相结合的呢。简单来说,我们利用了这种扩散的思想去模拟从随机的图像生成一张精美图像的过程。在 SD 中,扩散过程会分成前向扩散和反向扩散。


前向扩散过程就是将噪声添加到训练图像中,逐渐将其转换为非特征噪声图像。


比如,我们在下图原始的猫的图像中逐渐添加噪音,最终就会生成一张纯噪音的图像。这里的噪音,可以理解为符合正态分布的一些随机采样出来的数据。


也就是说,假设我们现在有一群猫、狗的图片,通过这个前向扩散过程不断添加噪声,最终我们将区分不出来哪些图片是猫、哪些是狗。



如果,我们能够反过来操作这个过程,也就是进行逆向扩散,那么就可以从随机的噪音数据中恢复原始的图片,这就像时光倒流一样,听起来很酷!



这个想法确实很酷,但是具体是怎么做的呢?让我们一步步思考,假如我们能知道每一步添加了多少噪音,就可以从图像中去掉这些噪音,然后还原回去原来的图像。


为此,我们就可以训练一个模型,专门用来预测,每一步产生的噪音,这里就是用到了经典的U-Net模型。

利用 U-Net 预测每一步产生的噪音


U-Net 是什么呢,简单来说就是一种很复杂的卷积神经网络,这里不需要太过纠结,因为它的形状像一个U 字,因此被称为 U-Net,示例图如下:



具体步骤,有四步:

1、准备一张训练图片,比如我们之前提到的猫的图片

2、利用正态分布,生成一些随机的噪音

3、然后每一次都向这张训练图片上加入噪音

4、告诉这个U-Net,我们添加了多少噪音,让模型去学习



就这样,训练完成后,我们就得到了一个非常厉害的模型,它可以预估出添加到图片里的噪音,那么该如何使用这个模型呢。


有一个非常朴素的想法就是,我们可以生成一张完全随机的图像,并要求噪声预测器告诉我们噪声。然后,我们从原始图像中减去这个估计的噪声。重复此过程几次,就可以获得猫或狗的图像



嗯,这个想法好像没有问题,但等等,好像哪里不对。那生成的图片到底是猫还是狗呢?


我们会发现,这里并没有办法去控制最后生成的图像是猫还是狗,因此这是一个无条件的生成方式。


利用 VAE 优化和压缩图像生成效率


SD的模型又加了什么操作,可以让我们用文字生成图片呢,在这之前,我们还需要了解一个模型,这也是SD的另外一个核心模型,VAE,俗称,变分自动编码器。这是做什么用的呢?


我们想一下,一个彩色的图片,比如 512×512 大小,有三个颜色通道(红色、绿色和蓝色)是一个 786,432 维的空间。在这个空间里去做训练这个模型,太大了,而VAE的作用就是把这个高维空间进行映射到一个低维的空间,具体来说是4x64x64 这个大小的空间,这样就比原始的空间缩小了48倍。



我们的SD模型做的扩散和反向扩散过程,就是在这个潜在空间中进行的,这样就比之前的图像空间小很多了,速度也快。

利用 CLIP 模型引入文本信息

那么是怎么引入,文本信息的呢,是的,你应该已经猜到了,肯定还有会另外一个模型。


这里,我们需要用到一个叫CLIP的模型,去把文字也表示成和图像相似的向量。


我们不需要去进一步关注细节,你只需要知道,我们输入的提示词,最后会转为一个77*786维的向量输入到噪音预测器,也就是U-Net中。


整个文生图过程


现在让我们把这些模型拼接在一起,梳理一下整个文生图的过程。


首先,在潜在空间里随机生成一个3维的图片。



U-Net 将潜在噪声图像和文本提示作为输入,并预测噪声。



从潜在图像中减去预测的噪声。这将成为一个新的潜在图像。



然后,重复这个过程 N 次。把最后得到的潜在空间的图片,使用VAE模型,反向解码出图片。



下面这个图就形象的描述了这个过程。



本文到此结束,留下你的名字,祝,心想事成?。


❤️AI智能体Coze提效❤️

AI 智能体|进阶教程,用 Coze 做一个多背景图的黑神话悟空换脸 Bot,赶紧去试试。

AI 智能体|用 Coze 做一个黑神话悟空的换脸 Bot,保姆级教程

AI 智能体|Coze 项目开营,解答三个新人最关注的问题

AI 智能体|手把手教你用Coze搭建一个知识库问答助理

手把手教你用Coze搭建一个属于自己幸运色的海报

手把手教你用Coze搭建一个星座运势智能体


Coze基础教程之定制天气查询助手

尝试用 Coze 复刻点赞 10w+ 的猫猫守护神写真!赶紧冲!

深度使用Coze之后,想告诉你几个容易踩坑的地方,赶紧了解了,越过去。

手把手教你1元钱购买扣子Coze收费前最后的套餐,可以再用一年,赶紧冲!

AI时代,新人必看的Coze入门教程之概念篇

❤️AI 工具❤️

AI 爱好者必看,AI发展的四个范式究竟指的是什么。弄懂了,就超越 99% 的人。

从第一性原理谈起,我们在使用和学习 AI 工具的时候,最应该看重那几点。

分享几个我一直在用的AI编程工具,免费且好用。

AI工具:体验了一下天工AI,我想这才是未来该有的样子。99%的需求都可以一键满足。

❤️AIGC咨询❤️

必看,给 AI 时代新人的11条建议

12条价值上千的AI咨询案例

❤️感谢阅读❤️


目前我致力于AI工具拆解、AI解决方案的咨询、落地以及AIGC培训,如果有相关问题,可以加我备注「公众号」,进行免费咨询,并领取我整理的AI学习资料和常用AI工具集



部分资料截图:


雨飞陪你玩赚AI」,知识星球,欢迎来围观,交个朋友。



你的每一个点赞,都是鼓励我进步的勇气,点个在看,加油吧,一起成长!



声明:文中含有雨飞的广告


「雨飞同行」这是雨飞的介绍(第7版,交个朋友,限时送福利)

请使用浏览器的分享功能分享到微信等