参考 Stable Diffusion原理详解_stable diffusion csdn-优快云博客
Stable Diffusion是stability.ai开源的图像生成模型,可以说Stable Diffusion的发布将AI图像生成提高到了全新高度,其效果和影响不亚于Open AI发布ChatGPT。
图像生成的发展
在Stable Diffusion诞生之前,计算机视觉和机器学习方面最重要的突破是 GAN(Generative Adversarial Networks 生成对抗网络)。GAN让超越训练数据已有内容成为可能,从而打开了一个全新领域——现在称之为生成建模。
GAN的主要问题在于:
- 图像生成缺乏多样性
- 模式崩溃
- 多模态分布学习困难
- 训练时间长
- 由于问题表述的对抗性,不容易训练
随着算力的增长,一些过去算力无法满足的复杂算法得以实现,其中有一种方法叫“扩散模型”——一种从气体扩散的物理过程中汲取灵感并试图在多个科学领域模拟相同现象的方法。该模型在图像生成领域展现了巨大的潜力,成为今天Stable Diffusion的基础。
扩散模型
扩散模型是一种生成模型,用于生成与训练数据相似的数据。简单的说,扩散模型的工作方式是通过迭代添加高斯噪声来“破坏”训练数据,然后学习如何消除噪声来恢复数据。
一个标准扩散模型有两个主要过程:正向扩散和反向扩散。
在正向扩散阶段,通过逐渐引入噪声来破坏图像,直到图像变成完全随机的噪声。
在反向扩散阶段,使用一系列马尔可夫链逐步去除预测噪声,从高斯噪声中恢复数据1。
通过缓慢添加(去除)噪声来生成样本的正向(反向)扩散过程的马尔可夫链(图片来源: Jonathan Ho, Ajay Jain, Pieter Abbeel. 2020)
对于噪声的估计和去除,最常使用的是 U-Net。该神经网络的架构看起来像字母 U,由此得名。U-Net 是一个全连接卷积神经网络,这使得它对图像处理非常有用。U-Net的特点在于它能够将图像作为入口,并通过减少采样来找到该图像的低维表示,这使得它更适合处理和查找重要属性,然后通过增加采样将图像恢复回来。
具体的说,所谓去除噪声就是从时间帧 t tt 向时间帧 t − 1 t-1t−1 的变换,其中 t tt 是 t 0 t_0t
0(没有噪声)到 t m a x t_{max}t max(完全噪声)之间的任意时间帧。变换规则为:
输入时间帧 t tt 的图像,并且在该时间帧上图像存在特定噪声;
使用 U-Net 预测总噪声量;
然后在时间帧 t tt 的图像中去除总噪声的“一部分”,得到噪声较少的时间帧 t − 1 t-