Stable Diffusion的加噪和去噪详解
SD模型原理:
- Stable Diffusion概要讲解
- Stable diffusion详细讲解
- Stable Diffusion的加噪和去噪详解
- Diffusion Model
- Stable Diffusion核心网络结构——VAE
- Stable Diffusion核心网络结构——CLIP Text Encoder
- Stable Diffusion核心网络结构——U-Net
- Stable Diffusion中U-Net的前世今生与核心知识
- SD模型性能测评
- Stable Diffusion经典应用场景
- SDXL的优化工作
微调方法原理:
- DreamBooth
- LoRA
- LORA及其变种介绍
- ControlNet
- ControlNet文章解读
- Textual Inversion 和 Embedding fine-tuning
目录
调度和采样详细解释
调度和采样总结
加噪过程中的调度算法和采样算法的作用
去噪过程中的调度算法和采样算法的作用
加噪过程概述
加噪过程的主要组成部分
加噪过程的步骤
去噪过程概述
去噪过程的主要组成部分
去噪过程的步骤
扩散(过程)流程参考:https://lichuachua.blog.csdn.net/article/details/143044773#t4
论文(公式)解读参考:https://lichuachua.blog.csdn.net/article/details/143256188#t3
噪声处理过程中的两个关键算法:调度算法、采样算法。
过程 | 调度算法的作用 | 采样算法的作用 |
---|---|---|
加噪 | 控制每个时间步向图像中注入的噪声比例,逐步将图像转化为纯噪声。 | 加噪过程不需要采样算法,因为噪声注入是确定性的,按照调度器规则进行。 |
去噪 | 控制每个时间步去除的噪声比例,确保噪声逐步减少,图像逐步恢复。 | 采样算法用于推断每一步如何从当前噪声生成下一步图像【逐步去噪的 DDPM 和 跳跃去噪的 DDIM】,解决去噪过程中的不确定性。 |
- 调度策略控制加噪和去噪过程的每一步的噪声强度/速度变化,确保模型平滑、稳定地进行去噪。
- 采样方法控制如何从当前噪声生成下一步图像,去噪过程的步数和路径,影响生成速度和效果。
调度和采样详细解释
-
调度算法的作用:无论是加噪还是去噪过程,调度算法的作用都是控制噪声比例的变化(添加或去除)。调度算法决定了图像中噪声和图像信息的相对比例,影响噪声的变化速率。
-
采样算法的差异:采样算法只在去噪过程中发挥作用,因为去噪涉及逐步从噪声生成图像,这是一个不确定性的推断过程【也有确定性的采样:DDIM】。加噪过程是确定性的,因此不需要采样算法。
调度和采样总结
- 加噪过程:调度算法负责噪声注入的强度和速率,不需要采样算法。
- 去噪过程:调度算法控制噪声去除比例,采样算法则负责逐步生成下一步的图像,两者结合完成去噪过程,有确定性采样和不确定性采样。
加噪过程中的调度算法和采样算法的作用
加噪的调度算法
-
调度算法的作用:加噪过程使用调度算法来控制每个时间步添加噪声噪声的比例,也就是定义每个时间步图像中保留多少原始图像信息,添加多少噪声。这是一个确定性过程,完全由调度器决定。
-
常见的调度算法:
- 线性调度:每一步噪声添加的比例按照线性规律变化,即噪声比例逐步增加,图像信息逐步减少。
- 余弦调度:噪声比例变化按照余弦曲线,使得噪声的添加在初期和末期较为缓和,中期快速增加。
-
加噪公式:
-
总结:在加噪过程中,调度算法控制每个时间步噪声的噪声比例,决定了从原始图像
到噪声图像
的转变过程。由于这是一个确定性过程,调度算法完全控制了噪声注入的规则,而不涉及采样或推理操作。
加噪的采样算法
-
采样算法的作用:加噪过程中不需要采样算法,因为加噪是确定性的,每个时间步的噪声注入量完全由调度算法控制,不需要模型进行推断或采样操作。
-
总结:加噪过程不涉及采样算法,它只是在固定的调度规则下向图像中添加噪声,因此不需要复杂的采样机制。
去噪过程中的调度算法和采样算法的作用
去噪的调度算法
-
调度算法的作用:与加噪过程类似,去噪过程中,调度算法同样控制每个时间步中去除噪声的比例。它决定了在每个时间步,如何逐步去除噪声,使得图像能够从纯噪声逐步恢复为原始图像。
-
常见的调度算法:
- 线性调度:噪声去除的比例按线性变化,噪声逐步减少,图像信息逐步恢复。
- 余弦调度:噪声去除比例按余弦曲线变化,初期和末期的去噪较为平滑,中期去噪速度较快。
-
去噪公式:
-
总结:在去噪过程中,调度算法控制每一步去除噪声的比例,确保噪声逐步减少,图像信息逐步恢复。调度算法决定了去噪过程的速率,但并不负责具体的推断过程。【由采样算法进行推断】
去噪的采样算法
-
采样算法的作用:在去噪过程中,采样算法负责逐步生成图像【DDPM 是逐步去噪,而 DDIM 则是跳跃去噪】。决定去噪过程的步数和路径,影响生成速度和图像质量。在每个时间步,模型需要通过采样算法从噪声图像
中生成下一步的图像
。
-
如何生效:采样算法主要作用在上方去噪公式最后的随机噪声项
,这个随机噪声项的处理决定了采样过程的确定性或不确定性。
-
常见的采样算法:
- DDPM(Denoising Diffusion Probabilistic Models):
- 在 DDPM 中,
是非零的,因此在每一步生成过程中都会加入随机噪声项
。实现不确定性采样,使生成具有多样性,但通常需要更多步数。
- 基于马尔可夫链的逐步采样方法,通过每一步从前一步的结果推导出下一步图像。通常需要较多的时间步(如 1000 步)才能生成高质量图像。
- 在 DDPM 中,
- DDIM(Denoising Diffusion Implicit Models):
- 在 DDIM 中,
被设置为 0,因此去噪公式中的随机噪声项
被完全去掉。实现确定性采样,生成过程更快且一致性更高。
- 与 DDPM 类似,但它不依赖马尔可夫链,允许在更少的时间步内生成图像(如 50 或 100 步),加速了生成过程。
- 在 DDIM 中,
- DDPM(Denoising Diffusion Probabilistic Models):
-
采样过程的示例:
- DDPM 采样:从
采样到
,逐步减少噪声,每一步的生成依赖于前一步的结果。
- DDIM 采样:跳过一些时间步,直接从
推断出更远的时间步的图像,加速了去噪过程。
- DDPM 采样:从
-
总结:采样算法在去噪过程中扮演着核心角色,它决定了模型如何推断从当前噪声图像生成下一步的图像。
- DDPM 使用基于马尔可夫链的逐步,不确定性采样,引入随机噪声项,适合需要多样性和更具自然随机性的生成任务。
- DDIM 使用基于非马尔可夫链的逐步,确定性采样,去掉了随机噪声项,使得生成过程更为直接和一致,有助于在更少的时间步数内达到高质量的生成结果。
加噪过程概述
加噪过程是扩散模型的前向扩散过程,它从原始图像 x_0 开始,通过一系列预定的噪声注入步骤,将图像逐步转化为纯噪声 x_T。整个过程通过某种调度策略(如线性或余弦调度)来控制噪声的注入速率。
加噪过程的主要组成部分
-
调度策略(Scheduler)
-
噪声生成与注入
具体参考如上
加噪过程的步骤
1. 初始化原始图像:
- 加噪过程从原始的无噪声图像
开始,图像最初不含任何噪声。
2. 逐步加噪():
-
加噪过程是从时间步 t=0 开始,每个时间步逐步向图像中添加噪声。最终在时间步 t=T 时,图像
变为纯噪声。
-
在每一个时间步 t,根据调度策略决定注入的噪声比例:
随着 t 的增加,图像中的噪声逐步增加,而图像的原始信息逐步减少。
3. 完成加噪过程:
- 当时间步 t=T 时,图像
基本变成了完全的随机噪声。此时原始图像的结构几乎完全丧失,图像仅由噪声构成。
- 这个纯噪声图像将作为去噪过程的起始点,模型将在去噪过程中从这个纯噪声图像逐步恢复出清晰的图像。
去噪过程概述
去噪过程是在扩散模型的生成阶段,模型从一个随机噪声图像开始,逐步去除噪声,最终恢复出原始图像。这一过程的目标是通过反向扩散,从纯噪声生成高质量的图像。
去噪过程的主要组成部分
-
调度策略(Scheduler)
-
噪声预测与去除
-
采样方法(Sampling Method)
具体参考如上
去噪过程的步骤
1. 初始化噪声图像:
- 模型从一个纯随机噪声图像
开始,假设该图像位于时间步 T,此时图像完全被噪声覆盖。
2. 逐步去噪():
-
模型从时间步 T 开始,逐步通过多个时间步 t,去除噪声,最终生成清晰图像
。
-
在每一个时间步 t,通过调度策略决定去除噪声的比例:
-
使用采样方法来控制如何生成下一步图像
。例如:
- DDPM:每个时间步依赖于前一个时间步的采样结果,生成下一步的图像。
- DDIM:通过隐式推断加速采样,在减少时间步的同时仍能生成高质量图像。
3. 完成去噪过程:
- 模型通过多个时间步逐步去噪,直到时间步 t=0,生成出清晰的图像
。
- 去噪过程中的每一个时间步,都是由调度策略控制噪声去除的强度,而采样方法控制如何具体生成下一步的图像。
调度策略和采样方法需要结合使用,共同决定去噪的效果。调度策略负责控制噪声去除的幅度,采样方法负责如何通过这一幅度进行去噪,并生成下一步图像。
相关文章:

Stable Diffusion的加噪和去噪详解
SD模型原理: Stable Diffusion概要讲解Stable diffusion详细讲解Stable Diffusion的加噪和去噪详解Diffusion ModelStable Diffusion核心网络结构——VAEStable Diffusion核心网络结构——CLIP Text EncoderStable Diffusion核心网络结构——U-NetStable Diffusion中…...
解决 Gradle 报错:`Plugin with id ‘maven‘ not found` 在 SDK 开发中的问题
在 SDK 开发过程中,使用 Gradle 构建和发布 SDK 是常见的任务。在将 SDK 发布为 AAR 或 JAR 包时,你可能会使用 apply plugin: maven 来发布到本地或远程的 Maven 仓库。但是,随着 Gradle 版本的更新,特别是从 Gradle 7 版本开始&…...

EMD-KPCA-Transformer多变量回归预测!分解+降维+预测!多重创新!直接写核心!
EMD-KPCA-Transformer多变量回归预测!分解降维预测!多重创新!直接写核心! 目录 EMD-KPCA-Transformer多变量回归预测!分解降维预测!多重创新!直接写核心!效果一览基本介绍程序设计参…...
前端 px、rpx、em、rem、vh、vw计量单位的区别
目录 一、px 二、rpx 三、em 四、rem 五、vh和vw 六、rpx 和 px之间的区别 七、px 与 rem 的区别 一、px px(像素): 1、相对单位,代表屏幕上的一个基本单位,逻辑像素。 2、不会根据屏幕尺寸或分辨率自动调整大…...
OceanBase数据库产品与工具介绍
OceanBase:蚂蚁集团自主研发的分布式关系数据库 1、什么是 OceanBase? OceanBase 是由蚂蚁集团完全自主研发的企业级分布式关系数据库,始创于 2010 年。它具有以下核心特点: 数据强一致性:在分布式架构下确保数据强…...

学习threejs,对模型多个动画切换展示
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.AnimationMixer 动画…...

【Bug合集】——Java大小写引起传参失败,获取值为null的解决方案
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:本文面向的人群 二:错误场景引入 三:正确场景引入 四…...

Python爬虫:如何从1688阿里巴巴获取公司信息
在当今的数字化时代,数据已成为企业决策和市场分析的重要资产。对于市场研究人员和企业分析师来说,能够快速获取和分析大量数据至关重要。阿里巴巴的1688.com作为中国最大的B2B电子商务平台之一,拥有海量的企业档案和产品信息。本文将介绍如何…...

单片机学习笔记 2. LED灯闪烁
更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯 目录 0、实现的功能 1、Keil工程 2、代码实现 0、实现的功能 LED灯闪烁 1、Keil工程 闪烁原理:需要进行软件延时达到人眼能分辨出来的效果。常用的延时方法有软件延时和定时器延时。此次先进行软…...

折叠光腔衰荡高反射率测量技术的matlab模拟理论分析
折叠光腔衰荡高反射率测量技术的matlab模拟理论分析 1. 前言2. 光腔模型3. 光腔衰荡过程4. 衰荡时间与反射率的关系5. 测量步骤①. 光腔调节:②. 光腔衰荡测量:③. 计算衰荡时间常数:④. 反射率计算: 6. 实际应用中的调整7. 技术优…...

ubuntu 16.04 中 VS2019 跨平台开发环境配置
su 是 “switch user” 的缩写,表示从当前用户切换到另一个用户。 sudo 是 “superuser do” 的缩写,意为“以超级用户身份执行”。 apt 是 “Advanced Package Tool” 的缩写,Ubuntu中用于软件包管理的命令行工具。 1、为 root 用户设置密码…...

C语言第13节:指针(3)
1. 回调函数 回调函数的基本思想是,将函数指针作为参数传递给另一个函数,并在需要时通过这个函数指针调用对应的函数。这种方式允许一个函数对执行的内容进行控制,而不需要知道具体的实现细节。 回调函数在以下场景中尤为有用: …...
java:简单小练习,面积
面积:圆和长方形 接口:实现面积 test:调用 一、interface: 对于接口,它是Java中一个新增的知识点,而C中没有,因为Java有一个缺陷就是不可以实现多继承,只可以单继承,这就限制了有些功能的使…...

@Autowired 和 @Resource思考(注入redisTemplate时发现一些奇怪的现象)
1. 前置知识 Configuration public class RedisConfig {Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template new RedisTemplate<>();template.setConnectionFactory(facto…...
PostgreSQL提取JSON格式的数据(包含提取list指定索引数据)
PostgreSQL提取JSON格式的数据(包含提取list指定索引数据) ->>, ->, #>, #>> 在PostgreSQL中,处理json或jsonb类型数据时,->>, ->, #> 和 #>> 是非常有用的操作符,它们允许你以…...

如何利用谷歌浏览器提高网络安全
在当今数字化时代,网络安全已成为我们不可忽视的重要议题。作为全球最受欢迎的网络浏览器之一,谷歌浏览器不仅提供了快速、便捷的浏览体验,还内置了多种安全功能来保护用户的在线安全。本文将详细介绍如何通过谷歌浏览器提高您的网络安全&…...

go-zero(四) 错误处理(统一响应信息)
go-zero 错误处理(统一响应信息) 在实现注册逻辑时,尝试重复注册可能会返回 400 状态码,显然不符合正常设计思维。我们希望状态码为 200,并在响应中返回错误信息。 一、使用第三方库 1.下载库 目前 go-zero官方的…...
1.1 爬虫的一些知识(大模型提供语料)
1.1 爬虫的一些知识(大模型提供语料) 网页资源: 资源组织方式:列表分页,搜索引擎,推荐 发送请求的文档类型:html ,js 响应请求的文档类型:html,js,json 请求方式:同步和异步 页面形式…...

Linux开发工具:Vim 与 gcc,打造高效编程的魔法双剑
文章目录 一、初识Vim模式 二、vim基本操作2.1基础操作2.2命令模式/正常模式2.2.1光标定位2.2.2复制粘贴、删除2.2.3撤销2.2.4替换字符2.2.5替换模式 2.3底行模式2.3.1退出vim和**保存文件**2.3.2定位文本字符串2.3.3命令2.3.4实现分屏2.3.5替换指定字符串 2.4补充指令2.4.1视图…...

cesium for unity的使用
先聊聊导入 看到这里的因该能够知道,官网以及网上绝大多数的方法都导入不进来,那么解决方法如下: 两个链接:按照顺序依次下载这两个tgz和zip,其中tgz为主要部分,zip为示例工程项目 如果您要查看示例工程项目的话&am…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...