AIGC笔记--基于DDPM实现图片生成

目录

1--扩散模型

2--训练过程

3--损失函数

4--生成过程

5--参考


1--扩散模型

完整代码:ljf69/DDPM

扩散模型包含两个过程,前向扩散过程和反向生成过程。

前向扩散过程对一张图像逐渐添加高斯噪声,直至图像变为随机噪声。

反向生成过程从一个随机噪声开始,逐渐去噪声直至生成一张图像。

2--训练过程

通过以下公式对图像进行加噪:

def forward(self, x0, t, eta = None):n, c, h, w = x0.shape # 输入图片的shapea_bar = self.alpha_bars[t]if eta is None:eta = torch.randn(n, c, h, w).to(self.device)noisy = a_bar.sqrt().reshape(n, 1, 1, 1) * x0 + (1 - a_bar).sqrt().reshape(n, 1, 1, 1) * eta # 加噪return noisy # 返回加噪结果

3--损失函数

通过一个UNet网络来预测损失,计算预测损失和真实损失MSE损失:

...
eta = torch.randn_like(x0).to(device) # 产生真实随机噪声
t = torch.randint(0, n_steps, (n,)).to(device)# 前向扩散过程
noisy_imgs = ddpm(x0, t, eta)# 通过UNet预测噪声
eta_theta = ddpm.backward(noisy_imgs, t.reshape(n, -1))# 计算预测噪声和真实随机噪声的MSE损失
loss = mse(eta_theta, eta)
...

4--生成过程

通过以下公式实现图片生成:

x = torch.randn(n_samples, c, h, w).to(device) # 随机初始化噪声
for idx, t in enumerate(list(range(ddpm.n_steps))[::-1]):time_tensor = (torch.ones(n_samples, 1) * t).to(device).long()eta_theta = ddpm.backward(x, time_tensor)alpha_t = ddpm.alphas[t]alpha_t_bar = ddpm.alpha_bars[t]x = (1 / alpha_t.sqrt()) * (x - (1 - alpha_t) / (1 - alpha_t_bar).sqrt() * eta_theta) # 去噪if t > 0:z = torch.randn(n_samples, c, h, w).to(device)beta_t = ddpm.betas[t]sigma_t = beta_t.sqrt()x = x + sigma_t * z

5--参考

怎么理解今年 CV 比较火的扩散模型(DDPM)

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

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

相关文章

C语言求 3*3 矩阵对角线之和

完整代码&#xff1a; // 求 3*3 矩阵对角线之和 #include<stdio.h>int main() {int n3;int arr[3][3];// 输入矩阵printf("请输入矩阵的元素:\n");for (int i 0; i < n; i){for (int j 0; j < n; j){scanf("%d", &arr[i][j]);}}int su…

Elasticsearch 写入优化,从 3000 到 8000/s,让你的 ES 飞起来

背景 基于elasticsearch-5.6.0 机器配置&#xff1a;3个云ecs节点&#xff0c;16G,4核&#xff0c;机械硬盘 优化前&#xff0c;写入速度平均3000条/s&#xff0c;一遇到压测&#xff0c;写入速度骤降&#xff0c;甚至es直接频率gc、oom等&#xff1b;优化后&#xff0c;写入速…

Python+requests+pytest+excel+allure 接口自动化测试实战

定义&#xff1a; Unittest是Python标准库中自带的单元测试框架&#xff0c;Unittest有时候也被称为PyUnit&#xff0c;就像JUnit是Java语言的标准单元测试框架一样&#xff0c;Unittest则是Python语言的标准单元测试框架。 Pytest是Python的另一个第三方单元测试库。它的目的…

QWidget快速美化-文本浏览器

将代码复制进QTextBrowser的样式表 代码: QTextBrowser{font:14pt "黑体";color:black; }QTextBrowser::QScrollArea{border:0px solid;border-right-width:1px;border-right-color:#dcdbdc;background-color:#f5f5f7; }QScrollBar:vertical{border:none;background…

day03_pandas_demo

文章目录 pandas介绍为什么使用pandasDataFrameDataFrame属性DataFrame的索引修改行列的索引值重设索引值以某列设置新索引 MultiIndexSerias索引操作直接索引按名字索引按数值索引 赋值操作排序对内容排序按索引排序 DataFrame的运算算术运算逻辑运算逻辑运算符号 < > |…

代码随想录 Day26 贪心 01 全集 LeetCode455 分发饼干 LeetCodeT346摆动序列 LeetCdoe T53 最大子数组和

前言:贪心无套路 本质: 局部最优去推导全局最优 两个极端 贪心算法的难度一般要么特别简单,要么特别困难,所以我们只能多见识多做题,记住无需数学证明,因为两道贪心基本上毫无关系,我们只需要去思考局部最优即可 贪心的小例子 比如有一堆钞票&#xff0c;你可以拿走十张&#x…

SpringBoot AOP + Redis 延时双删功能实战

一、业务场景 在多线程并发情况下&#xff0c;假设有两个数据库修改请求&#xff0c;为保证数据库与redis的数据一致性&#xff0c;修改请求的实现中需要修改数据库后&#xff0c;级联修改Redis中的数据。 请求一&#xff1a;A修改数据库数据 B修改Redis数据 请求二&#xff…

谷歌真的不喜欢 Node.js ?

有人在 Quora 上提问&#xff0c;为什么谷歌不喜欢 Node.js 呢&#xff0c;Google 的 UX 工程师和来自 Node.js 团队的开发者分别回答了他们对这个问题的看法&#xff0c;对于编程语言来说&#xff0c;每一门语言都有它自己的优势&#xff0c;重要的是如何用它去解决问题。 谷…

VUE父组件向子组件传递数据和方法

文章目录 1 父组件写法2 子组件写法 1 父组件写法 父组件参数和方法 data() {return {// 遮罩层loading: true,// 表格数据yfeList: []}}导入组件 import yfTable from "/views/yf/yfTable.vue";组件 components: {yfTabTable},传值使用 <yfTabTable :loadin…

拥有自己的服务器是一件很不错的事情

在不同的语境中&#xff0c;“服务器”一词的含义也不尽相同。本文中谈到的服务器&#xff0c;指的是具体的物理机器&#xff08;而非服务器程序&#xff09;。与普通的个人计算机不同&#xff0c;服务器通常保持在线状态&#xff0c;通常用来执行一些不间断的程序或任务&#…

驱动开发LED灯绑定设备文件

头文件 #ifndef __HEAD_H__ #define __HEAD_H__typedef struct {unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t;#define PHY_LED1_ADDR 0x50006000 #define PHY_LED2_ADDR 0x50007000 #defin…

【软考-中级】系统集成项目管理工程师-项目收尾管理历年案例

持续更新。。。。。。。。。。。。。。。 目录 2017 下 试题三(17分)背诵整理1. 项目总结会议一般讨论的内容2. 系统文档验收所涉及的文档都有哪些 系列文章 2017 下 试题三(17分) 阅读下列说明&#xff0c;回答问题 1至问题 4&#xff0c;将解答填入答题纸的对应栏内     …

大二第三周总结(算法+生活)

算法&#xff1a; 题目&#xff1a;有效的括号 这个题目也是做过很多回了。主要就是数据结构中”栈“的应用&#xff0c;先进后出。 解题思路&#xff1a; 1.创建 Map 哈希表形成键值对映射 2.进行遍历字符串 在遍历过程中 如果 遍历到的字符c 是左括号&#xff0c;则入栈 pu…

基于PHP的宠物爱好者交流平台管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

Mysql第三篇---响应太慢?数据库卡顿?如何优化?

Mysql第三篇—响应太慢&#xff1f;数据库卡顿&#xff1f;如何优化&#xff1f; 统计SQL的查询成本&#xff1a;last_query_cost 一条SQL查询语句在执行前需要确定查询执行计划&#xff0c;如果存在多种执行计划的话&#xff0c;MySQL会计算每个执行计划所需要的成本&#x…

CDN+Nginx反向代理来隐藏c2地址

思路&#xff1a;通过借助CDN和Nginx反向代理和HTTPS来隐藏真实c2服务器Nginx反向代理&#xff1a;通过Nginx对外部流量转发到本地&#xff0c;再设置防火墙只允许localhost访问cs端口达到IP白名单的效果 准备 在这个实验环境中&#xff0c;我们需要准备服务器两台(一台服务端…

day4驱动开发

目的&#xff1a;通过字符设备驱动的分步实现编写LED驱动&#xff0c;另外实现特备文件和设备的绑定 驱动文件 &#xff1a; #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/device.h> #include <lin…

day40

今日内容概要 针对记录的SQL语句 配置文件的介绍 存储引擎的使用(存储的方式) 数据类型(重点) 整型 浮点型 字符串 日期 枚举 针对记录的sql语句 针对库的增删改查&#xff08;文件夹&#xff09; 1.创建库 create databases db1; # 设置库的默认编码 create databa…

illuminate/database 使用 一

illuminate/database 是完整的php数据库工具包&#xff0c;即ORM&#xff08;Object-Relational Mapping&#xff09;类库。 提供丰富的查询构造器&#xff0c;和多个驱动的服务。作为Laravel的数据库层使用&#xff0c;也可以单独使用。 一 使用 加载composer之后&#xff…

自然语言处理---迁移学习

fasttext介绍 作为NLP工程领域常用的工具包&#xff0c;fasttext有两大作用&#xff1a;进行文本分类、训练词向量。在保持较高精度的情况下&#xff0c;快速的进行训练和预测是fasttext的最大优势。fasttext优势的原因: fasttext工具包中内含的fasttext模型具有十分简单的网络…