AI 绘画Stable Diffusion 研究(七) 一文读懂 Stable Diffusion 工作原理


大家好,我是风雨无阻。


本文适合人群:

  • 想要了解AI绘图基本原理的朋友。

  • 对Stable Diffusion AI绘图感兴趣的朋友。


本期内容:

  • Stable Diffusion 能做什么

  • 什么是扩散模型

  • 扩散模型实现原理

  • Stable Diffusion 潜扩散模型

  • Stable Diffusion文本如何影响图片生成

  • Stable Diffusion Cross-attention 技术

  • Stable Diffusion noise schedule 技术

  • Stable Diffusion文生图底层运行演示


一、 Stable Diffusion能做什么


通过前面几篇文章关于 Stable Diffusion 整合包的安装、ControlNet插件的介绍使、sd模型的安装和使用以及文生图功能的介绍后,相信看过的朋友应该都清楚的知道 Stable Diffusion 是做什么的吧?


对于新朋友,想详细了解的话,请前往:

AI 绘画Stable Diffusion 研究(一)sd整合包v4.2 版本安装说明
AI 绘画Stable Diffusion 研究(二)sd模型ControlNet1.1 介绍与安装
AI 绘画Stable Diffusion 研究(三)sd模型种类介绍及安装使用详解
AI 绘画Stable Diffusion 研究(四)sd文生图功能详解(上)
AI 绘画Stable Diffusion 研究(五)sd文生图功能详解(下)
AI 绘画Stable Diffusion 研究(六)sd提示词插件


这里再用最直白的话说一下:SD它是一个text-to-image模型 ,通过给定的 text prompt(文本提示词),可生成一张匹配文本的图片。


二、什么是扩散模型


大家都经常听到有人说,Stable Diffusion是一种潜在扩散模型(Diffusion Models)。

那我们先弄明白什么是扩散模型?

为什么叫扩散模型呢?因为它的数学公式看起来非常像物理上的扩散现象。


1、前向扩散

假如我们训练一个模型如下:

在这里插入图片描述


正如上图所示,是一个前向扩散的过程,它是在训练图像上逐渐添加噪声,最后变成完全随机噪声图,并最终无法辨认噪点图对应的初始图片。


这个过程就像是一滴墨水滴在一杯清水里,会慢慢扩散最终均匀分布在清水里一样,且无法判断它最初是从水杯的中心滴入,还是从边缘滴入,扩散这个名字就是这么来的。


2、反向扩散


反向扩散的思想是:输入一张噪点图,反向扩散(Reverse Diffusion),让上述过程获得逆向从随机噪声图生成清晰图像的过程。


从反向扩散的角度来说,我们需要知道有多少“噪点”加入到了某张图片里。


那么要知道答案的方式便是:训练一个神经网络来预测添加的噪点,这在SD里称为噪点预测器(Noise Predicator),其本质是一个U-Net模型。


训练流程为:

(1)、选择一张训练图(例如一张猫的图片)

(2)、生成随机的噪点图

(3)、给这张图继续增加多轮噪点

(4)、训练Noise Predicator,预测加入了多少噪点,通过神经网络训练权重,并展示其正确答案。


在这里插入图片描述


反向扩散训练的重点下图中的噪声预测器(Noise Predicator),它可以通过训练得出每次需要减掉的噪声,每次需要减多少噪声是预测出来的,从而实现还原清晰图片的目的。


三、扩散模型实现原理


扩散模型(Diffusion Models)的成功,其实并非横空出世,突然出现在人们的视野中。其实早在2015年就已有人提出了类似的想法,最终在2020年提出了扩散模型的生成技术。


以下是扩散模型推导公式:

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


更详细的原理:

参考:扩散模型详解原理+代码


通过前面的介绍,我们大概明白了,什么是扩散模型,但这并不是 Stable Diffusion的工作原理。

这是因为:上述扩散过程是在图片空间里完成的,无论是模型训练,还是生成图片的过程,都是需要海量的算力支持和内存需求。


想象一下:一张512 x 512的图片(包含3个颜色通道:红、绿、蓝),它的空间是786432维,也就是说我们要为一张图片指定这么多的值。因此,基本无法在单个GPU上运行。


Stable Diffusion就是降低算力和内存需求的一个解决方案。它让Stable Diffusion在消费级GPU上运行成为了可能。


四、Stable Diffusion 潜扩散模型

Stable Diffusion 它是一个Latent Diffusion Model(潜扩散模型)。其方式是将图片压缩到一个“潜空间”(Latent Space)中,而不是在高维的图片空间里工作。潜空间比图片空间小了48倍,所以它可以节省大量计算,继而运行速度更快。


扩散过程会分成很多步循环,而每一步的过程如下图所示,将文本描述、隐变量、步数等数值传入UNe

### Stable Diffusion AI 绘画 关键词术语 #### 安装与入门 对于希望进入AI绘画领域的新手而言,获取合适的资源至关重要。Stable Diffusion提供了安装包以及一系列的学习材料,包括但不限于PDF文档和视频教程,旨在帮助用户从零基础开始全面掌握这一技术[^1]。 #### 提示词优化 为了更好地控制由Stable Diffusion生成的艺术作品的效果,使用者可以通过精确设置提示词来影响最终成果的质量。例如,在提示词后面加上`[0-1数值]`可以调节该词语在整个描述中的权重;比如,“FOREST, LOTS OF TREES AND STONES,[FLOWERS: 0.7]”。这种做法允许艺术家更加细致地定义他们期望的画面特征[^2]。 #### 正负向提示词的应用 当涉及到具体场景或风格的选择时,合理运用正向(`prompt`)和反向(`negative prompt`)提示词显得尤为重要。如果目标是避免某些不理想的输出结果,则可以在负面列表里添加相应的关键词。举例来说,要防止模型误解“cowboy shot”而产生穿着牛仔服饰的角色形象,可在负面提示中加入像“full body”或者“closeup”的选项,从而引导算法避开不必要的细节[^3]。 #### 实际应用案例分析 在实际应用场景方面,《AI 绘画 | Stable Diffusion 电商模特》一文中提到的技术可用于创建虚拟试衣间体验。通过对原始图像进行处理并提取服装轮廓作为蒙版,再利用此蒙版将新设计的衣服贴合到人体模型上,进而创造出逼真的展示效果。这种方法不仅提高了工作效率,也为消费者带来了更为直观的商品预览方式[^4]。 ```python # 示例代码用于说明如何加载稳定扩散库(假设存在这样的Python接口) from stable_diffusion import load_model, generate_image_with_prompts model = load_model('path_to_pretrained_weights') image = generate_image_with_prompts( positive_prompt="A beautiful forest with lots of trees and stones", negative_prompt="full body, closeup" ) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w风雨无阻w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值