AIGC笔记--DDIM的简单实现

1--DDIM介绍

原论文:DENOISING DIFFUSION IMPLICIT MODELS

2--核心代码

# ddim的实现
def compute_alpha(beta, t):
    beta = torch.cat([torch.zeros(1).to(beta.device), beta], dim=0) # beta -> [1, beta]
    # 先通过cumprod计算累乘结果,即: alpha_(t)_hat = alpha_(t) * alpha_(t-1) * ... * alpha_1 * alpha_0
    # 再选取alpha_(t)_hat, 这里用索引t+1来选取
    a = (1 - beta).cumprod(dim=0).index_select(0, t + 1).view(-1, 1, 1, 1)
    return a

# ddim的实现, 参考: https://github.com/ermongroup/ddim/blob/main/functions/denoising.py
def generalized_steps(x, seq, model, b, **kwargs):
    with torch.no_grad():
        n = x.size(0) # batchsize
        seq_next = [-1] + list(seq[:-1]) # t-skip: [-1, 0, 10, 20, ..., 980], len: 100
        x0_preds = []
        xs = [x]
        for i, j in zip(reversed(seq), reversed(seq_next)): # i = t, j = t-skip
            t = (torch.ones(n) * i).to(x.device) # t
            next_t = (torch.ones(n) * j).to(x.device) # t-1
            at = compute_alpha(b, t.long()) # alpha_(t)_hat
            at_next = compute_alpha(b, next_t.long()) # alpha_(t-1)_hat
            xt = xs[-1].to('cuda') # 获取当前时间步的样本,即x_t
            et = model(xt, t) # 预测噪声
            x0_t = (xt - et * (1 - at).sqrt()) / at.sqrt() # 论文公式(12)中的 predicted x0
            x0_preds.append(x0_t.to('cpu')) # 记录当前时间步的 predicted x0
            c1 = (kwargs.get("eta", 0) * ((1 - at / at_next) * (1 - at_next) / (1 - at)).sqrt()) # 计算公式(12)中的标准差(\sigma)_(t)
            c2 = ((1 - at_next) - c1 ** 2).sqrt() # 论文公式(12)中 direction pointing to xt 的系数
            xt_next = at_next.sqrt() * x0_t + c1 * torch.randn_like(x) + c2 * et # 根据公式(12)计算x_(t-1)
            xs.append(xt_next.to('cpu')) # 记录每一个时间步的x_(t-1)

    return xs, x0_preds # 保存了每一个时间步的结果

3--完整代码

DDIM_Demo

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微软找腾讯接盘,Windows直接安装手机APP体验起飞了

熟悉微软的同学都知道微软有个传统艺能——什么好用砍什么。 比如 Win10 砍掉了还算方便的小娜,推出 Win11 砍掉了 Win10 上面好用的磁贴功能等。 上一秒用户还在夸奖点赞。 下一秒就给你砍掉,顺带还塞一堆 BUG 给你。 但没办法,PC 近乎垄断…

【WEEK15】 【DAY1】Swagger第四部分【中文版】

2024.6.3 Monday 接上文【WEEK14】 【DAY5】Swagger第三部分【中文版】 目录 16.9.拓展:其他皮肤16.9.1.修改pom.xml16.9.2.重启并分别访问对应的网址16.9.2.1.swagger-ui16.9.2.2.bootstrap-ui16.9.2.3.Layui-ui16.9.2.4.mg-ui 16.9.拓展:其他皮肤 16.…

【K8s】专题四(4):Kubernetes 控制器之 StatefulSet

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号! 目录 一、基本介绍 二、工作原理 三、相关特性 四、资源清单(示例) 五…

AI写作:如何利用AI提升文章创作效率?

工欲善其事,必先利其器。 随着AI技术与各个行业或细分场景的深度融合,日常工作可使用的AI工具呈现出井喷式发展的趋势,AI工具的类别也从最初的AI文本生成、AI绘画工具,逐渐扩展到AI思维导图工具、AI流程图工具、AI生成PPT工具、AI…

cicd的基本概念

一.gitlab-cicd技术点 DevOps CI/CD理念与主流工具 DevOps 运动的兴起给业界提供了一个参考答案。其中CI 和 CD两个理念就是解决开发者和运维协同工作的一剂良方。 CI 是 Continuous Integration 的缩写,表示持续集成。CD 是 Continuous Delivery 的缩写&#xf…

10- Redis 键值对数据库是怎么实现的?

在开始将数据结构之前,先给介绍下 Redis 是怎样实现键值对(key-value)数据库的。 Redis 的键值对中的 key 就是字符串对象,而 value 可以是字符串对象,也可以是集合数据类型的对象,比如 List 对象&#xf…

刷题训练之分治快排

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:熟练掌握分治快排算法。 > 毒鸡汤:学习,学习,再学习 ! 学,然后知不足。 > 专栏选自:刷…

ThreadLocal与ForkJoin使用踩坑记录

由于并发的需要原因,使用CompletableFuture异步执行Dubbo接口,RpcContext中存储了tenantId等信息。上线一段时间后,发现有些时候拿到的上下文并不是自己线程的上下文。 原因分析 CompletableFuture.supplyAsync内部使用ForkJoinPool执行。 要…

【EI会议/稳定检索】2024年电机与电气控制国际会议(ICMEC 2024)

2024 International Conference on Motor and Electrical Control 2024年电机与电气控制国际会议 【会议信息】 会议简称:ICMEC 2024 截稿时间:(以官网为准) 大会地点:中国厦门 会议官网:www.meciac.com 会议邮箱&…

夸张,腾讯实习三个月,存款20W+

大家好,我是白露。 今天在牛客上看到一条帖子,让我感叹万分:实习两三个月,竟然已经存下了20多万的存款。 这也太夸张了吧?不太真实啊…… 很多网友表示疑问,“两三个月实习顶多存两三万吧?武理…

【工具】windows下VMware17解锁mac安装选项(使用unlocker427)

目录 0.简介 1.环境 2.安装前后对比 3.详细安装过程 3.1 下载unlocker427 1)下载地址 2)下载unlocker427.zip 3)解压之后是这样的 4)复制iso中的两个文件到你本地的VMware的安装目录下 5)复制windows下的所有…

【笔记】从零开始做一个精灵龙女-装备阶段

这里只记录相对重要的步骤和一些思路 但是头发那块很详细哦~ (标的小数字不用在意,那个是我网课的时长记录) 耳环 1.创建一个圆环,调整参数 做好后再复制一个小的 肩甲 2.0-2.4 1.创建圆柱体/球体也可 然后把底部的两个点删…

有哪些好用的ai工具,可以提升科研、学习、办公等效率?

最近,Sora的诞生为AI再添了一把火。 据介绍,这款“文生视频”的Sora可以直接输出长达60秒的视频,并且包含高度细致的背景、复杂的多角度镜头,以及富有情感的多个角色。 不仅能准确呈现细节,还能理解物体在物理世界中…

Accelerate笔记:本地SGD

本地 SGD 是一种分布式训练技术,其中梯度不是每一步都同步。每个进程都会更新自己版本的模型权重,在给定的步数后,通过跨所有进程平均这些权重来同步它们。 在底层,本地 SGD 代码禁用了自动梯度同步(但累积仍然如预期工…

什么是最好的手机数据恢复软件?6 款手机数据恢复软件 [2024 年更新]

什么是最好的手机数据恢复软件?在这篇文章中,您将了解 6 款最好的免费手机数据恢复软件,并学习如何恢复数据的完整指南。 最好的手机数据恢复软件是什么? 手机数据恢复软件是恢复智能手机中丢失或删除的文件、消息、照片和其他宝…

Win10文件系统错误(-2147219196)

问题出现的原因: C盘快挤满了,导致电脑很卡,于是删掉了C盘用户下的一些文件C:\Users\DIY-PC,省了五六十G的内存,结果发现把一些系统文件也删掉了,导致图片预览报错 问题现象: (自…

6月软考新通知:24下集成大概率是中级蕞简单的一门

2024下半年软考6月新通知: 一、24下软考考试时间安排: 24下半年软考报名时间:8月19日-9月15日 24下半年软考考试时间:11月9-12日 24下半年软考成绩查询:12月中(预计) 二、考情分析 24上软考…

免费,C++蓝桥杯等级考试真题--第7级(含答案和解析)

C蓝桥杯等级考试真题--第7级 答案:D 解析:步骤如下: 首先,--a 操作会使 a 的值减1,因此 a 变为 3。判断 a > b 即 3 > 3,此时表达式为假,因为 --a 后 a 并不大于 b。因此,程…

气压、湿度、震动开关、声音、红外火焰传感器 | 配合Arduino使用案例

BMP180 气压传感器 BMP180 是一种用于测量气压的科学仪器。可以获取到温度、气压、海拔。 先在 arduino ide 中安装依赖 /****** Arduino 接线 ***** Arduino 传感器* VCC 5v* GND GND* A4 SDA * A5 SCL ***********************/#include &l…

【Springcloud微服务】MybatisPlus下篇

🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Springcloud微服务 🌠 首发时间:2024年6月4日 🦋 欢迎关注🖱点赞👍收藏🌟留言&#x1f43…