Stable Diffssion超详细讲解持续更新中

Stable Diffusion超详细解释

https://zhuanlan.zhihu.com/p/632809634

文本-->clip text encoder -->text Embeddings特征矩阵

完成对文本信息的编码后,就会输入到SD模型的"图像优化模块"中对图像的优化进行"控制"。

如果是图生图任务,我们在输入文本信息的同时,还需要将原图片通过图像编码器(VAE Encoder)生成Latent Feature(隐空间特征)作为输入。

如果是文生图任务,我们只需要输入文本信息,再用random函数生成一个高斯噪声矩阵作为Latent Feature的"替代"输入到SD模型的"图像优化模块"中.

Stable Diffusion整体的训练逻辑:

  1. 从数据集中随机选择一个训练样本
  2. 从K个噪声量级随机抽样一个timestep 𝑡
  3. 将timestep 𝑡对应的高斯噪声添加到图片中
  4. 将加噪图片输入U-Net中预测噪声
  5. 计算真实噪声和预测噪声的L2损失
  6. 计算梯度并更新SD模型参数

clip

vae

unet

前向扩散过程

往一张正常图片里 逐步加入高斯噪声

注意:可以从初始数据x0和任意扩散步数ki,采样得到对应的数据xi

反向扩散过程

与正向完全相反,训练目标即是将模型预测的噪声和真实的噪声做回归分析

训练流程:

  1. 随机选择一个时间步,embedding it.
  2. 加高斯噪声
  3. 将time embedding和noisy image 丢给unet,输出预测的noise,和真实noise计算L2损失
  4. 反复多个epoch
  1. 噪声的添加

在训练过程中,模型会对每张图像添加不同强度的噪声。噪声的强度用一个时间步 ttt来表示,ttt的范围通常是从 0 到 1000,共有 1001 种不同的噪声强度。较小的 ttt表示噪声较少,而较大的 ttt表示噪声较多。

  1. 时间嵌入(Time Embedding)

时间嵌入是将时间步 ttt转换为一个高维的向量表示,这个向量将被输入到模型中,告诉模型当前图像的噪声强度。时间嵌入通常通过一种位置编码(positional encoding)技术来实现。

4 训练过程中的每次迭代

在训练过程中,每次迭代会随机选择一个时间步 ttt,然后生成对应强度的噪声并添加到原始图像中。具体步骤如下:

  1. 选择随机时间步 ttt:使用随机函数生成一个从 0 到 1000 的整数 ttt。
  2. 生成噪声:根据时间步 ttt生成对应强度的高斯噪声。
  3. 添加噪声到图像:将生成的噪声添加到原始图像中,得到一个带噪声的图像。
  4. 时间嵌入:将时间步 ttt进行嵌入,得到一个时间嵌入向量。
  5. 输入模型:将带噪声的图像和时间嵌入向量一起输入到模型中,模型会学习从带噪声的图像中去除噪声。

加噪和去噪过程都是逐步进行的,我们假设进行𝐾步,那么每一步,SD都要去预测噪声,从而形成"小步快跑的稳定去噪",类似于移动互联网时代的产品逻辑,这是足够伟大的关键一招

SD模型在生成图片时,需要输入prompt提示词,那么这些文本信息是如何影响图片的生成呢?

答案非常简单:通过注意力机制。

在sd的训练中,每个训练样本都对应一个文本描述的标签,将标签通过clip text encoder 输出text embedding(一个矩阵向量),并将text embeddings以**cross attention****(专题讲)**的形式与u-net耦合并注入,使得每次输入的图片信息与文本信息进行融合训练

我们在这里可以小结一下SD模型训练时的输入,一共有三个部分组成:图片、文本以及噪声强度。其中图片和文本是固定的,而噪声强度在每一次训练参数更新时都会随机选择一个进行叠加。

在我们进行Stable Diffusion模型训练时,VAE 部分和 CLIP 部分都是冻结的 ,所以说官方在训练SD系列模型的时候,训练过程一般主要训练 U-Net 部分

训练流程:

训练的输入: 图片,文本 噪声强度

推理流程:

相关推荐
沐尘而生3 分钟前
【AI智能体】智能音视频-硬件设备基于 WebSocket 实现语音交互
大数据·人工智能·websocket·机器学习·ai作画·音视频·娱乐
巴伦是只猫7 分钟前
【机器学习笔记Ⅰ】3 代价函数
人工智能·笔记·机器学习
NetX行者8 分钟前
基于Vue 3的AI前端框架汇总及工具对比表
前端·vue.js·人工智能·前端框架·开源
hans汉斯34 分钟前
【人工智能与机器人研究】基于力传感器坐标系预标定的重力补偿算法
人工智能·算法·机器人·信号处理·深度神经网络
cver12342 分钟前
CSGO 训练数据集介绍-2,427 张图片 AI 游戏助手 游戏数据分析
人工智能·深度学习·yolo·目标检测·游戏·计算机视觉
FreeBuf_1 小时前
新型BERT勒索软件肆虐:多线程攻击同时针对Windows、Linux及ESXi系统
人工智能·深度学习·bert
强哥之神1 小时前
Meta AI 推出 Multi - SpatialMLLM:借助多模态大语言模型实现多帧空间理解
人工智能·深度学习·计算机视觉·语言模型·自然语言处理·llama
成都极云科技1 小时前
成都算力租赁新趋势:H20 八卡服务器如何重塑 AI 产业格局?
大数据·服务器·人工智能·云计算·gpu算力
喜欢吃豆1 小时前
从零构建MCP服务器:FastMCP实战指南
运维·服务器·人工智能·python·大模型·mcp
ai_xiaogui2 小时前
AIStarter用户与创作者模式详解:一键管理Stable Diffusion项目!
人工智能·stable diffusion·一键发布ai项目·熊哥aistarter教程·开发者必备aistarter