ddpm和ddim小记

news2024/9/20 9:31:34

  前面分析了DDPM和DDIM,但是仍然感觉对其理解不是和透彻,最近又学习了下,简单记录一下进一步的理解。为了方便理解,这里直接以两个像素的灰度图像为例。前面讲过无论是DDPM还是DDIM,他们的训练过程都是一样的,都遵循下面的这个公式:
x t = α t ˉ x 0 + 1 − α t ˉ ϵ x_t = \sqrt{\bar{\alpha_t}}x_0+\sqrt{1-\bar{\alpha_t}}\epsilon xt=αtˉ x0+1αtˉ ϵ
  但是在采样的时候有些不同,DDPM是遵循马尔科夫性质的,DDIM是直接一步到位。因此DDIM的采样过程要远远快于DDPM,而DDPM的多样性要好于DDIM。
  我们先以采样为例,假设采样的两像素都服从正态分布(为什么是假设为高斯分布而不是均值分布或者其他的分布呢?因为我们再扩散模型采样的时候就是直接从高斯随机噪声中采样得到的,这些噪声点就是服从高斯分布的,所以这里直接以高斯分布举例子。其实我觉得换成其他的分布也可以,只不过正态分布式在自然界中是最常见的,DDPM采样的核心其实就是通过不断堆叠多个的正态分布来模拟原始数据集的一个复杂分布情况,原始数据集的分布会有很多种情况,可能服从正态分布,也可能服从均值分布,泊松分布,瑞丽分布等等,采样过程其实就是在模拟这个过程),如下图所示的概率密度图,越亮的地方表示该像素被选取到的概率是越大的,也就是对分别对应这个两个分布对应的 μ \mu μ处,两个分布的 σ \sigma σ分别对应这图中发亮的地方的半径, σ \sigma σ越大,表示椭圆的半径越大,反之越小,如果两个像素的高斯分布的 σ \sigma σ一样,那么这个椭圆就变成了圆。

在这里插入图片描述
  有了上面的密度图假设,我们现在来随机取一个点,假设取值对应这坐标上的(0.5,0.5),有了这个点,我们就能得到一个两像素的图,像素值分别为0.5,0.5。同理我们可以设想一下,把这两像素的图扩展到(100,100,3),每个像素均服从正态分布,那么上面的二维概率密度图是不是可以扩展到了 100 × 100 × 3 = 30000 100 \times100 \times 3=30000 100×100×3=30000维度,这个维度我们可能无法想想,但是道理同二维一样的,我们随机从30000维空间中选取一个点,是不是就确定了一张图像。
  现在我们假设一下,有一个两像素的数据集,很多张图像,几千万张,上亿张图像,这个数据集一定有一个分布,但是这个分布我不知道,我现在需要通过扩散模型来学习这个分布。训练的时候就是从这个数据集里面选取图像加高斯噪声,假设1000步,每张图像都加了1000步的高斯噪声之后,我们可以再统计下加完噪声的这个噪声数据集的分布情况,你会意外的发现,这个噪声数据集竟然服从正态分布。其实这一点一比较好理解,我们刚才说了,DDPM 采样的时候其实就是通过不断的堆叠不同正态分布来模拟原始的数据分布的,那么训练的时候是在不断地加噪声,每次加的噪声都是分布一样的,那么最终生成的噪声数据分布肯定是跟你加的这个噪声分布一致呀。采样的时候就是根据这个噪声数据集,每次采样的时候都会调整正态分布的情况,最终学习到原始数据集的分布。DDPM是逐步调整吗,DDIM是一步到位,在看下这两个采样公式:
DDPM:
x t − 1 = 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ θ ( x t , t ) ) + σ t z \mathbf{x}_{t-1}=\frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta\left(\mathbf{x}_t, t\right)\right)+\sigma_t \mathbf{z} xt1=αt 1(xt1αˉt 1αtϵθ(xt,t))+σtz
可见DDPM只能一步一步来。
DDIM:
x s = α ˉ s ( x k − 1 − α ˉ k ϵ θ ( x k ) α k ‾ ) + 1 − α ˉ s − σ 2 ϵ θ ( x k ) + σ ϵ x_s=\sqrt{\bar{\alpha}_s}\left(\frac{x_k-\sqrt{1-\bar{\alpha}_k} \epsilon_\theta\left(x_k\right)}{\sqrt{\overline{\alpha_k}}}\right)+\sqrt{1-\bar{\alpha}_s-\sigma^2} \epsilon_\theta\left(x_k\right)+\sigma \epsilon xs=αˉs (αk xk1αˉk ϵθ(xk))+1αˉsσ2 ϵθ(xk)+σϵ
DDIM可以直接从第k步跳到s步,实现了采样的加速。

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

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

相关文章

一套采用JAVA语言开发的数字化产科管理平台源码,自主知识产权,三甲综合医院应用案例,系统稳定运行,全套源码交付。

一套采用JAVA语言开发的一套数字化产科管理平台源码,自主知识产权,三甲综合医院应用案例,系统稳定运行。全套源码交付。 数字化产科管理平台源码技术栈: 技术架构:前后端分离 开发语言:Java 开发工具…

深度学习基础--梯度下降与初始化

在神经网络的背景下,它们用于寻找能够最小化损失函数的参数,使模型能够根据输入准确预测训练数据的输出。基本方法是随机选择一组初始参数,然后逐步进行微小调整,平均而言这些调整会降低损失。每一次的调整都是基于当前参数位置对…

ERROR: Cannot uninstall numpy 1.24.2, RECORD file not found.

目录 1.问题描述:2.解决方法:2.1流程2.2结果 小结: 1.问题描述: 卸载 numpy 时报错: ERROR: Cannot uninstall numpy 1.24.2, RECORD file not found. You might be able to recover from this via: pip install --f…

HTB-sequal(mysql)

前言 各位师傅大家好,我是qmx_07,今天给大家讲解sequal这台靶机 渗透过程 信息搜集 服务器开放了3306mysql端口思路:mysql爆破-sC参数会执行 相关的默认脚本 连接mysql数据库 通过空密码连接道mysql数据库flag:7b4bec00d1a39…

【GD32】从零开始学GD32单片机 | USB通用串行总线接口+HID键盘例程(GD32F470ZGT6)

1. 简介 USB,全称通用串行总线,相信大家都非常熟悉了,日常生活只要用到手机电脑都离不开这个接口,像鼠标键盘U盘都需要使用这个接口进行数据传输,下面简单介绍一下。 1.1 版本标准 USB的标准总体可以分为低速、全速和…

04:布局规划

1.切换到丝印层 2.用2D线对模块区域划分

keil5烧录后不自动复位和Flash Download failed - “Cotex-M3“报错解决

目录 项目场景: 复位问题描述 复位原因分析: 复位解决方案: 下载错误问题描述 下载错误原因分析: 下载错误解决方案: 总结 项目场景: keil5编译stm32例程在烧录时候遇到的一些问题 复位问题描述 1. 使…

全面解读LSC局域网屏幕监控软件:功能、优势与应用场景一网打尽!

在信息化高速发展的今天,企业管理的效率和精准度成为决定竞争力的关键因素。 LSC局域网屏幕监控软件(LAN Screen Capture),作为安企神推出的一款专为现代企业量身打造的超级局域网监控管理软件,以其强大的功能和灵活的…

MAC环境导出项目的目录结构

一、安装Homebrew包管理工具 /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)" 官网网址:https://brew.idayer.com/ 二、用brew包管理工具安装tree brew install tree 三、打开终端,导出项目…

怎么用AI做视频总结?

利用AI工具批量生成影视短剧推广https://docs.qq.com/doc/DYnl6d0FLdHp0V2ll 搞个插件就可以了。 我只能说AI的终极目的就是为了视频服务的,语音(配音)、视频脚本(文案)、绘图(画面)、设计&…

数据结构:单链表逆置的相关问题

1.思路:这里主要是用到头插法的思想进行单链表的一个逆置 2.知识点回顾: (1)头插法 [1]什么叫头插法:新增节点在头节点后面(下图为单链表结构) [2&#xf…

Leetcode 257-二叉树的所有路径

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 题解 递归回溯 遇到叶节点返回 每层的做法,list加上当前节点的string值 本题解将res作为全局变量,作为局部变量写法也…

图像边缘检测Canny

一、Canny边缘检测原理 边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。 Canny边缘检测算法是由4步构成:噪声去除、计算图像梯度、非极大值抑制、滞后阈值 1、噪声去除:由于边缘检测很容易受到…

Vulnhub靶场 | DC系列 - DC6

文章目录 DC-6环境搭建渗透测试 DC-6 环境搭建 靶机镜像下载地址:https://vulnhub.com/entry/dc-6,315/需要将靶机和 kali 攻击机放在同一个局域网里;本实验kali 的 IP 地址:192.168.10.146。 渗透测试 使用 nmap 扫描 192.168.10.0/24 网…

【报错已解决】`ValueError: Expected 2D array, got 1D array instead`的

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言: 在使用机器学习库(如scikit-learn)时,开发者可能会遇到ValueError: Expec…

Qt/C++地址转坐标/坐标转地址/逆地址解析/支持百度高德腾讯和天地图

一、前言说明 地址和经纬度坐标转换的功能必须在线使用,一般用在导航需求上,比如用户输入起点地址和终点地址,查询路线后,显示对应的路线,而实际上各大地图厂家默认支持的是给定经纬度坐标来查询(百度地图…

光纤FPV无人机技术详解

1. 技术基础与原理 光纤FPV(First Person View,第一人称视角)无人机技术,是将光纤通信技术与无人机技术相结合的一项创新技术。该技术通过光纤作为高速、低延迟的数据传输媒介,实现了无人机拍摄的高清视频信号实时回传…

P0.9/P1.25全倒装共阴节能COB超微小间距LED显示屏已抢占C位

COB(Chip on Board)技术最早发源于上世纪60年代,是将LED芯片直接封装在PCB电路板上,并用特种树脂做整体覆盖。COB实现“点” 光源到“面” 光源的转换。点间距有P0.3、P0.4、P0.5、P0.6、P0.7、P0.9、P1.25、P1.538、P1.5625、P1.…

带有WebUI的cron替代品Dagu

什么是 Dagu ? Dagu 是一个强大的 Cron 替代品,它带有一个 Web UI。它允许你将命令之间的依赖关系定义为有向无环图(DAG),使用声明式的 YAML 格式。Dagu 的设计易于使用、自包含且无需编码,非常适合小型项目。 安装 在群晖上以 D…

科技与文化的完美碰撞 德施曼玄武•紫禁城K80亮相成都车展

8月30日-9月8日,第二十七届成都国际汽车展览会将在中国西部国际博览城举行,德施曼将与海尔、美的、松下等知名品牌携旗下重磅产品集中参展。大会同期“京东MALL智享家生活”活动也将开启,行业首个与紫禁城IP联名的智能锁产品德施曼玄武•紫禁…