Stable Diffusion‌ 绝密伏击:十分钟读懂Diffusion:图解Diffusion扩散模型

默认分类6小时前发布 admin
3,487 0
星河超算AI数字人

打个小广告 ,知乎专栏《大模型前沿应用》的内容已经收录在新书《揭秘大模型:从原理到实战》中。感兴趣的朋友可以购买,多谢支持!

在上一篇文章中,介绍了有关扩散模型的原理,如何将输入文本转换为最终的图片。但是由于在反向扩散过程中需要把完整尺寸的图片输入到U-Net,使得速度非常慢,因此目前应用最广的并不是,而实其改进版 。有关的内容可以参考下面的链接:

绝密伏击:十分钟读懂:图解扩散模型

接下来我们介绍 是如何根据文字生成图像的,相比做了哪些优化。

写在最前面:

由于 里面有关扩散过程的描述,描述方法有很多版本,比如前向过程也可以叫加噪过程,为了便于理解,这里把各种描述统一说明一下。

开源的

目前AI绘画最火的当属和 ,但是由于没有开源,因此我们主要分享下 ,后面我们会补充介绍下。

公开资料显示, 是公司于2022年提出的,论文和代码都已开源。在10月28日完成了1.01亿美元的融资,目前估值已经超过10亿美元。

大家可以去 这个网站体验一下 ,我们输入文本“’A over a range, image”(山脉上的日落),看一下效果:

绘画

在了解应用后,接下来我们介绍下 。主要还是通过图解的方式,避免大量公式推导,看起来费劲。

1. 文字生成图片过程

其实是的改进版本,主要是为了解决的速度问题。那么 是如何根据文字得出图片的呢?下图是 生成图片的具体过程:

文字生成图片过程

可以看到,对于输入的文字(图中的“An a horse”)会经过一个CLIP模型转化为text ,然后和初始图像(初始化使用随机高斯噪声 Noise)一起输入去噪模块(也就是图中Text U-Net),最后输出

大小的图片。在文章(绝密伏击:十分钟读懂:图解扩散模型)中,我们已经知道了CLIP模型和U-Net模型的大致原理,这里面关键是Text U-net,翻译过来就是文本条件隐U-net网络,其实是通过对U-Net引入多头机制,使得输入文本和图像相关联,后面我们重点讲讲这一块是怎么做的。

2. 的改进一:图像压缩

原来的名字叫“ Model”(LDM),很明显就是扩散过程发生隐空间中( space),其实就是对图片做了压缩,这也是 比速度快的原因。

自编码器()

会先训练一个自编码器,来学习将图像压缩成低维表示。

在将图像压缩成 data后,便可以在 space中完成扩散过程,对比下和扩散过程的区别,如下图所示:

扩散过程和 扩散过程的对比

可以看到扩散模型就是在原图

上进行的操作,而Stale 是在压缩后的图像

上进行操作。

的前向扩散过程和扩散模型基本没啥区别,只是多了一个图像压缩,只是反向扩散过程二者之前还是有区别。

3. 的改进二:反向扩散过程

在第一节我们已经简单介绍过 文字生成图片的过程,这里我们扩展下,看一下里面的细节,如下图所示:

Stable Diffusion‌ 绝密伏击:十分钟读懂Diffusion:图解Diffusion扩散模型

支持文本输入的反向扩散过程

上图从右至左,输入的文字是“Pairs in milky way”(银河系的巴黎),经过CLIP模型

转为Text ,然后和初始图像(噪声向量

)、Time step向量

,一起输入模块(多轮去噪过程),最后将输出的图像

经过解码器

后,生成最终的图像。

在反向扩散过程中其实谈不上改进,只是支持了文本的输入,对U-Net的结构做了修改,使得每一轮去噪过程中文本和图像相关联。在上一篇文章(绝密伏击:十分钟读懂:图解扩散模型)中,我们在介绍使用扩散模型生成图像时,一开始就已经介绍了在扩散过程中如何支持文本输入,以及如何修改U-Net结构,只是介绍U-Net结构改进的时候,讲的比较粗,感兴趣的可以去看看里面的第一节。下面我们就补充介绍下 是如何对U-Net结构做修改,从而更好的处理输入文本。

3.1 反向扩散细节:单轮去噪U-Net引入多头(改进U-Net结构)

我们先看一下反向扩散的整体结构,如下图所示:

反向扩散过程的整体结构

从上图可以看出,反向扩散过程中输入文本和初始图像

需要经过

轮的U-Net网络(

轮去噪过程),最后得到输出

,解码后便可以得到最终图像。由于要处理文本向量,因此必然要对U-Net网络进行调整,这样才能使得文本和图像相关联。下图是单轮的去噪过程:

单轮去噪过程

上图的最左边里面的 Map、Text、、稍微不好理解,这是 处理不同任务的通用框架:

这里我们只考虑输入是Text,因此首先会通过模型CLIP模型生成文本向量,然后输入到U-Net网络中的多头(Q, K, V)。

这里补充一下多头(Q, K, V)是怎么工作的,我们就以右边的第一个(Q, K, V)为例。

其中:

。可以看到每一轮去噪过程中,文本向量

会和当前图像

计算相关性。

完整结构

Stable Diffusion‌ 绝密伏击:十分钟读懂Diffusion:图解Diffusion扩散模型

最后我们来看一下 完整结构,包含文本向量表示、初始图像(随机高斯噪声)、时间,如下图所示:

完整结构

上图详细的展示了 前向扩散和反向扩散的整个过程,我们再看一下不处理输入文字,只是单纯生成任意图像的结构。

不输入文字,单纯生成任意图像的结构

可以看到,不处理文字输入,生成任意图像的模型,和 相比,主要有两个地方不一样:

除了 之外,最近也非常出圈,我们简单介绍下。

爆火的

是一款AI绘图工具,其创始人是David Holz。目前每月的收入大概超过200万美元,用户可以通过平台的频道使用。平台是一款游戏聊天平台,月活超过1.5亿,其中使用的用户数已突破380万。2021年初,拒绝了微软120亿美元的收购要约。本质上是一个社区,通过在上创建了自己的服务器,并创建了大量的频道,以及开发了自己的机器人,来向用户提供服务。

首页

用户可以在首页里点击“Join the Beta”,直接会跳转到它们在上的频道。

点击“Join the Beta”跳转到

可以看到上图中显示用户数是381万,当前在线30万。用户使用也非常简单,只需要点击主页左下方的频道便可进入。

通过频道进入

进入频道后,便可以通过/+提示词,让生成图片

文字生成图片

可以看到在输入“ black hold”后生成了四张图片。

由于目前并没有开源,因此我们并不知道其背后的技术,但是大概率还是基于扩散模型。

总结

随着AIGC的爆火,各种应用开始不断出现,AI绘画便是其中的一个典型案例。目前最火的AI绘画模型当属 ,但是目前有关 的文章并不多,主要偏向应用介绍,对于如何处理输入文字以及去噪过程的具体细节,这方面的文章还是比较少,写这篇文章的目的就是希望能把 讲清楚,让更多人的了解。

参考

@/—-

绝密伏击:十分钟读懂:图解扩散模型

323AI导航网发布

© 版权声明

相关文章

星河超算AI数字人

暂无评论

暂无评论...