无论是DALL-E 2、Midjourney还是Stable Diffusion,它们的主要算法和原理都基于扩散模型,并且它们之间也存在千丝万缕的联系。
人工智能是一种模拟人脑神经网络的技术。通过训练,它可以学习各种任务,比如绘画。当我们让AI学习绘画时,它会结合文字进行训练。通过大量填鸭式的训练,在某个时刻,它会突然领悟,能够根据文字要求进行绘画,并且它的绘画具有类似人类的逻辑性,它的能力得到了快速提升。
目前,扩散模型是最常用的AI生成图像的方法之一。扩散模型基于非平衡热力学,这是热力学的一个分支,专门研究不处于热力学平衡中的物理系统。一个典型的例子是一滴墨水在水中扩散。在墨水开始扩散之前,它会在水中某个地方形成一个大的斑点。
如果要模拟墨水开始扩散前的初始状态概率分布,将会非常困难,因为这个分布非常复杂,很难进行采样。然而,随着墨水扩散到水中,水逐渐变成淡蓝色,墨水分子会更加简单和均匀地分布。此时,我们可以使用数学公式来描述其中的概率分布。非平衡热力学可以描述墨水扩散过程中每一步的概率分布。由于扩散过程的每一步都是可逆的,因此只要步长足够小,我们就可以从简单的分布中推断出最初的复杂分布。
通过墨水的例子,我们可以得到一个启示:如果我们使用像素图对模型进行存储,那么将需要大量的硬件资源;相反,如果我们使用高斯噪点图进行存储,那么采样分布将更加容易。我们可以轻松地使用数学公式描述高斯分布的概率,并从简单的高斯分布中进行采样。因此,模型库可以采用高斯噪点图进行存储,这样反转过程也相对容易。这种方法在节省存储空间的同时,还能够保留模型的重要特征。
为了便于理解,我们再举一个例子,扩散模型类似于乐高玩具,打散后就是一个个的小方块,相当于变成噪点,小方块组装成各种各样的造型,类似于去噪的过程。
应用于AI绘画的过程中,可以通过逐步添加高斯噪声(模拟墨滴在水中扩散)来处理一幅图像。最终,这幅图像会变成高斯分布(模拟墨滴最终均匀扩散到水中)。高斯分布是一种非常容易建模和采样的概率分布,因此它在AI绘画的训练过程中起到了重要作用。推理过程则是将这个过程逆向进行,从一个均匀分布的高斯分布中进行采样,并逐步去除噪声,最终得到一幅完整的图像,这也就是将墨水扩散的过程进行逆转的过程。
下图展示了扩散模型的加噪与去噪的过程。扩散模型的原理包括两个步骤:首先是正向扩散,逐渐给图像添加高斯噪声,直到获得纯噪声的图像;然后,通过训练一个神经网进行图像去噪,从纯噪声的图像开始,直到获得最终的图像。
那么,AI绘画具体是怎么工作的呢?以Stable Diffusion为例,首先输入提示词,如"戴眼镜的少女",然后Stable Diffusion开始工作,主要分为三个部分,如图1-16所示。
Stable Diffusion基本原理
第一部分:文本编码。通过图像转换特征,把文本转换为数字信息,并提取出关键标记,如眼镜、少女、金属、年轻等。
第二部分:潜在空间生成。使用图像信息生成器,主要使用U-net调度算法生成图像。
第三部分:变分自编码器(VAE)编码。通过VAE图像解码器,把潜在空间64×64像素的图像解码成512×512像素的图像,从而绘制出训练图像。
给AI绘图提供文本的提示词也被称为指令,被用户戏称为"咒语"。通过Stable Diffusion的计算,可以在WebUI界面上生成直观的图像。AI绘画的过程实际上比描述的更加复杂。
即使不是AI算法工程师,如果深入了解其具体编码过程,熟悉其基本原理对使用者以后无论是生成图像、训练模型还是使用ControlNet工具编辑图像都会有很大帮助。这种了解有助于使用者更好地创作和提高操作AI绘画工具的能力。