DDPM--Denoising Diffusion Probabilistic Models

1 简介

本文根据2020年《Denoising Diffusion Probabilistic Models》翻译总结的,即DDPM,去噪扩散概率模型。

GAN、autoregressive models、flows、variational autoencoders(VAEs)可以生成惊人的图像。

本文介绍了一种新的模型,Diffusion Probabilistic Model 是一个参数化的马尔科夫链,使用variational 推断进行训练。

在这里插入图片描述

算法如下:
在这里插入图片描述

2 背景

在这里插入图片描述
在这里插入图片描述

2.1 扩散模型目标函数

扩散模型的目标函数是极大似然(maximum likelihood),https://blog.youkuaiyun.com/zephyr_wang/article/details/130804248。目标函数可以参考2015年原始扩散模型论文https://blog.youkuaiyun.com/zephyr_wang/article/details/130798380

原始扩散模型的目标函数如下,交叉熵函数,衡量p与q的相似性:
在这里插入图片描述
L=E[log(p(x))]

另外,上面式中的p(x)有如下形式:
在这里插入图片描述

上面最后一步,是将log期望E变成期望E的log,变成大于等于号的。

2.2 扩散模型损失函数

根据2.1节,我们得到扩散函数的损失函数(交叉熵):

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

因此,在式5中的所有KL divergence在高斯过程间比较,他们可以不使用Monte Carlo estimates.,而使用Rao-Blackwellized fashion来计算。

3 Diffusion models and denoising autoencoders

3.1 前向过程和L_T

在这里插入图片描述

3.2 逆过程和L_(1:T-1)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.3 reverse process decoder, and L0

在这里插入图片描述

3.4简化后的损失函数

在这里插入图片描述

4.实验

我们设T=1000.
前向过程的变量线性增加,从β_1=〖10〗^(-4)到β_T=0.02.

为了表示逆过程,我们采用u-net骨干。
下表在数据CIFAR10.上比较了Inception scores, FID scores, and negative log likelihoods (lossless codelengths) ,我们的模型如FID成绩很好。
在这里插入图片描述

### DDPM-CD 编辑模型介绍 #### 模型背景与定义 扩散概率模型是一种强大的生成模型,能够生成高质量的数据样本。特别地,在遥感变化检测(Change Detection, CD)领域中的应用展示了其独特的优势[^3]。DDPM-CD编辑模型基于Denoising Diffusion Probabilistic Models (DDPM),通过引入特定于变化检测的任务导向机制来增强模型性能。 #### 主要特点 该类模型的主要特点是能够在保持原有DDPM结构的同时,针对变化检测任务进行了优化调整。具体而言: - **噪声注入过程**:采用逐步加噪的方式模拟真实世界中随着时间推移发生的环境改变。 - **反向推理阶段**:利用预训练好的权重参数执行去噪操作,从而恢复原始状态下的场景表示。 - **损失函数设计**:为了更好地捕捉时间序列间的差异信息,通常会加入额外的监督信号作为辅助指导。 #### 实现方法概览 对于DDPM-CD的具体实现来说,可以遵循如下思路构建整个流程: 1. 数据准备:收集并整理包含不同时期同一地理位置影像资料的数据集; 2. 前处理步骤:对获取到的图片实施标准化、裁剪等必要的前处理措施; 3. 架构搭建:参照经典DDPM架构建立基础框架,并在此基础上融入适应性改进模块; 4. 训练策略:设定合理的迭代次数以及学习率衰减方案以确保收敛稳定; 5. 后处理分析:运用评估指标衡量预测效果的好坏程度,并据此作出相应修正建议。 ```python import torch from torchvision import datasets, transforms from torch.utils.data import DataLoader from ddpm_cd_model import DDPM_CD_Model # 自定义的DDPM-CD模型库 transform = transforms.Compose([ transforms.Resize((64, 64)), transforms.ToTensor(), ]) dataset = datasets.ImageFolder(root='./data', transform=transform) dataloader = DataLoader(dataset, batch_size=32) model = DDPM_CD_Model() optimizer = torch.optim.Adam(model.parameters(), lr=0.001) for epoch in range(num_epochs): for i, data in enumerate(dataloader): optimizer.zero_grad() loss = model(data) loss.backward() optimizer.step() torch.save(model.state_dict(), 'ddpm_cd.pth') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值