DDPM与DDIM中的采样

news2024/11/23 7:01:24

在深度生成模型中,采样(Sampling)指的是根据模型生成新样本的过程。在扩散模型(Diffusion Models)中,采样的关键是从高斯噪声逐步还原出原始数据。让我们分别探讨 DDPMDDIM 的采样过程,以及两者之间的差异。


DDPM(Denoising Diffusion Probabilistic Models)中的采样

基本概念

  1. 前向扩散过程(Forward Diffusion Process)

    • 从真实数据 x_0​ 开始,逐步添加高斯噪声生成一系列中间状态 x_1,x_2\dots,x_T​,直到最终变为近似纯噪声 x_T​。
    • 这一过程可以用公式描述为:q(x_t|x_{t-1})=\mathcal{N}(x_t; \sqrt{1-\beta_t} x_{t-1}, \beta_t \mathbf{I}) , 其中 \beta_t 是控制每步添加噪声量的参数。

其中,只有参数 \beta_t​ 是可调的。 \bar{\alpha}_t​ 是根据 \beta_t计算出的变量,其计算方法为:\alpha _t = 1 -\beta _t​, \quad \bar{\alpha}_t = \prod_{i=1}^t \alpha_i.  

为了能直接使用预训练的DDPM,我们希望在改进DDPM时不更改DDPM的训练过程。而经过简化后,DDPM的训练目标只有拟合x₀,训练时只会用到前向过程公式q(\mathbf{x}_t|\mathbf{x}_0) = \mathcal{N}(\mathbf{x}_t; \sqrt{\bar{\alpha}_t}\mathbf{x}_0, (1-\bar{\alpha}_t)\mathbf{I}), 所以,我们的改进应该建立在公式q(\mathbf{x}_t|\mathbf{x}_0)完全不变的前提下。

参考:DDIM 简明讲解与 PyTorch 实现:加速扩散模型采样的通用方法 - 知乎

  1. 逆向去噪过程(Reverse Denoising Process)

    • 从纯噪声 x_T​ 开始,逐步去除噪声还原出原始数据 x_0
    • 理论上需要学习真实逆过程的条件分布 q(x_{t-1} | x_t),但实际中近似为高斯分布: p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t)),, 其中 \mu_\theta​ 和\Sigma_\theta​ 是由神经网络预测的参数。
  2. 采样过程

    • 逐步去噪:从纯噪声 x_T开始,通过神经网络预测每一步的均值\mu_\theta和方差\Sigma_\theta,逐步采样 x_{T-1}, x_{T-2}, \dots, x_0​。
    • 全步骤采样:完整还原 x_0​ 通常需要数百到上千步,因此计算开销很大。

DDIM(Denoising Diffusion Implicit Models)中的采样

DDIM 是对 DDPM 采样过程的改进,目标是在不重新训练模型的前提下,加速采样并控制生成的灵活性

主要创新

  1. 确定性采样(Deterministic Sampling)

    • 在 DDIM 中,假设逆向过程是一个确定性映射,而不是像 DDPM 那样的随机采样。
    • 给定x_t​,直接计算 x_{t-1} = \sqrt{\alpha_{t-1}} \hat{x}_0(x_t) + \sqrt{1 - \alpha_{t-1}} \cdot \epsilon,, 其中 \hat{x}_0(x_t) 是从当前状态推断的原始数据,\epsilon是噪声估计。
  2. 跳步采样(Non-Markovian Sampling)

    • 在 DDPM 中,采样是逐步进行的(每步对应一个时间步t)。而在 DDIM 中,允许直接跳过中间时间步,从而减少采样步骤。
    • 通过选择一个子集 \{t_1, t_2, \dots, t_N\} (通常 N\ll T),只对这些时间步进行采样,显著提升采样速度。

采样的效果

  • DDIM 的采样是确定性的,因此每次采样都可以生成相同的结果(与随机采样不同)。这使得 DDIM 可以生成更加一致的样本,同时避免重复训练模型。
  • 通过减少采样步数(比如从 1000 步减少到 20 步),采样速度可以提升约 50 倍,同时尽可能保留生成质量。

DDPM 和 DDIM 的采样对比

特性DDPMDDIM
采样类型随机(Stochastic)确定性(Deterministic)
采样步数多步(通常 1000+ 步)少步(比如 20-50 步)
采样速度
生成质量高(取决于步数)质量保持较好
灵活性不支持跳步支持跳步和方差调整

总结

  • 采样的意义
    在扩散模型中,采样是指从纯噪声逐步生成新的样本数据。这个过程模拟了数据从无序到有序的生成过程。
  • DDPM 的采样:随机逐步还原,计算开销大但生成质量高。
  • DDIM 的采样:通过确定性映射和跳步策略,大幅提升采样速度,同时在不重新训练模型的前提下保持生成质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2245824.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python oa服务器巡检报告脚本的重构和修改(适应数盾OTP)有空再去改

Two-Step Vertification required: Please enter the mobile app OTPverification code: 01.因为巡检的服务器要双因子认证登录,也就是登录堡垒机时还要输入验证码。这对我的巡检查服务器的工作带来了不便。它的机制是每一次登录,算一次会话…

【Web前端】创建我的第一个 Web 表单

Web 开发中,表单是不可或缺的组成部分。无论是用户注册、登录还是反馈收集,表单都是与用户交互的重要方式。 什么是 Web 表单? Web 表单是一种用于收集用户输入数据的界面元素。它们允许用户在浏览器中输入信息并提交这些信息到服务器。Web …

JavaWeb后端开发知识储备2

目录 1.HttpClient 2.微信小程序开发 3.Spring Cache 1.HttpClient 简单来说,HttpClient可以通过编码的方式在Java中发送Http请求 2.微信小程序开发 微信小程序的开发本质上是前端开发,对于后端程序员来说了解即可 3.Spring Cache Spring Cache 是…

力扣刷题--21.合并两个有序链表

I am the best !!! 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2…

【含开题报告+文档+PPT+源码】基于SpringBoot+Vue的虎鲸旅游攻略网的设计与实现

开题报告 随着旅游业的快速发展和互联网的普及,越来越多的人选择通过网络平台获取旅游攻略和分享旅行经验。传统的旅游攻略获取方式往往依赖于纸质书籍或零散的在线资源,这种方式不仅信息更新滞后,而且缺乏互动性和个性化推荐。因此&#xf…

排序算法:直接插入排序,希尔排序,选择排序,快速排序,堆排序,归并排序

1.直接插入排序 基本思想:把待排序的数按照大小逐个插入到前面已经排序好的有序序列中,直到所有的都插入完为止,得到一个新的有序序列。 如图所示,当插入第i个(i>1)元素的时候,前面的arr[0]…

《OpenCV 图像基础操作全解析:从读取到像素处理与 ROI 应用》

简介:本文详细介绍了使用 OpenCV 进行图像相关操作的基础知识与实践示例,涵盖图像读取(包括不同读取方式及对应效果)、灰度值概念与图像矩阵存储特点、通道相关知识(如 BGR、通道拆分与合并),还…

使用卡尔曼滤波器估计pybullet中的机器人位置

⭐️ 卡尔曼滤波 卡尔曼滤波是一种递归算法,用于从具有噪声的观测中估计系统状态。它特别适合用于线性、高斯动态系统。 笔者之前写过一篇博文介绍卡尔曼滤波器《boss:整个卡尔曼滤波器的简单案例——估计机器人位置》,本文手动实现一个卡尔曼滤波器并…

【尚筹网】二、环境搭建一

【尚筹网】二、环境搭建一 环境搭建总体目标创建工程系统架构图工程创建计划创建空项目创建对应的 Maven 模块建立模块间的依赖 创建数据库基于 Maven 的 Mybatis 的逆向过程配置 pom创建 generatorConfig.xml执行逆向工程操作的 maven 指令将逆向工程生成的资源归位 父工程依赖…

全面解析 JMeter 后置处理器:概念、工作原理与应用场景

在性能测试中,Apache JMeter是一个非常流行的工具,它不仅能够模拟大量用户进行并发访问,还提供了丰富的扩展机制来满足各种复杂的测试需求。后置处理器(Post-Processor)是JMeter中非常重要的组件之一,用于在…

数字IC后端实现时钟树综合系列教程 | Clock Tree,Clock Skew Group之间的区别和联系

Q: Clock,Clock Tree和Skew Group有何区别?Innovus CCOPT引擎是如何使用这些的? Clock是时序约束SDC中的时钟定义点。 create_clock -name clk_osc -period $period_24m [get_ports xin_osc0_func] 时钟树综合(Clock Tree Synthesis)之前应…

基于零相差前馈补偿的 PID 控制

零相差前馈补偿是一种结合前馈补偿与反馈控制的策略,旨在提高控制系统对参考信号的跟踪精度。通过设计合理的前馈补偿器,使得系统对参考输入实现零相位差的跟踪,同时利用 PID 控制器保证系统的稳定性和动态性能。 1. 原理概述 目标&#xff…

odoo18中模型的常用字段类型

字段的公共属性: Char 字符类型,对应数据库中varchar类型,除了通用类型外接收另外两个参数: size: 字符长度,超出的长度将被截断 trim: 默认True,是否字段值应该被去空白。 Text 文本类型,对应数据库…

Wireshark抓取HTTPS流量技巧

一、工具准备 首先安装wireshark工具,官方链接:Wireshark Go Deep 二、环境变量配置 TLS 加密的核心是会话密钥。这些密钥由客户端和服务器协商生成,用于对通信流量进行对称加密。如果能通过 SSL/TLS 日志文件(例如包含密钥的…

鸿蒙生态崛起

1.鸿蒙生态:开发者的新蓝海 从开发者角度看,鸿蒙生态带来了巨大机遇。其分布式能力实现了不同设备间的无缝体验,如多屏协同,让应用能跨手机、平板、智能穿戴和车载设备流畅运行。开发工具也有显著提升,方舟编译器等极大…

【MySQL】精细讲解:数据库内置函数深度学习解析

前言:本节内容讲述mysql里面的函数的概念, 在mysql当中, 内置了很多函数工作。 这些函数丰富了我们的操作。 比如字符串函数、数据函数以及一些其他函数等等。 ps:友友们学习了表的基本操作后就可以观看本节内容啦! 目录 日期函数 current_…

亚信安全与飞书达成深度合作

近日,亚信安全联合飞书举办的“走近先进”系列活动正式走进亚信。活动以“安全护航信息化 共筑数字未来路”为主题,吸引了众多数字化转型前沿企业的近百位领导参会。作为“走近先进”系列的第二场活动,本场活动更加深入挖掘了数字化转型的基础…

[less] Operation on an invalid type

我这个是升级项目的时候遇到的,要从 scss 升级到 less,然后代码中就报了这个错误 我说一下代码的错误过程,但是这里没有复现,因为我原本报错的代码要复杂很多,而且是公司代码,不方便透露,这是我…

“iOS profile文件与私钥证书文件不匹配”总结打ipa包出现的问题

目录 文件和证书未加载或特殊字符问题 证书过期或Profile文件错误 确认开发者证书和私钥是否匹配 创建证书选择错误问题 申请苹果 AppId时勾选服务不全问题 ​总结 在上线ios平台的时候,在Hbuilder中打包遇见了问题,生成ipa文件时候,一…

大语言模型(LLM)安全:十大风险、影响和防御措施

一、什么是大语言模型(LLM)安全? 大语言模型(LLM)安全侧重于保护大型语言模型免受各种威胁,这些威胁可能会损害其功能、完整性和所处理的数据。这涉及实施措施来保护模型本身、它使用的数据以及支持它的基…