从扩散模型基础到DIT

Diffusion model 扩散模型如何工作?

输入随机噪声和文本内容,通过多次预测并去除图片中的噪声后,最终生成清晰的图像。

以上左边这张图,刚开始是随机噪声,999为时间序列。

为什么不直接预测下一张图片呢?

预测噪声还是简单一点。

如何训练 Noise Predicter呢?

具体的方法是自己去按步骤加噪音,这样就构建了训练样本。预测目标就是我们加的噪声。

如何加入文字?

可以看出,增加文字输入即可

DDPM原理

当然具体的噪声loss计算,以及去噪公式稍微麻烦一点,并不是直接加减。

左图中为噪声的均方误差loss计算。

图中XT为T时刻的有噪图片,Xt-1为去噪后的图片。

UNET噪声预测器

对于Stable Diffusion等主流的扩散模型,噪声预测部分都是使用UNET。图示结构如下,可以看出输入含噪声图片,输出噪声

训练代码如下:

这里nn_model即为UNET网络,支持图片,时间和文本上下文嵌入等相关信息。参考代码如下:

 

训练代码

预测代码

DDIM

比DDPM快10倍,采样步数到500步以上DDPM更好,否则DDIM更好。

Stable Diffusion

其他模型结构如下,很类似。

引入VAE(变分自编码器)

为了加快图像生成过程,Stable Diffusion 并不是在像素图像本身上运行扩散过程,而是在图像的压缩版本上运行。该论文称其为“Departure to Latent Space”。

https://arxiv.org/abs/2112.10752

这种压缩(以及后来的解压缩/绘画)是通过自动编码器完成的。自动编码器将图像压缩到潜空间(Latents),然后使用解码器凭借这些压缩后的数据重建。

实际使用过程中直接调用已经训练好的VAE做编码和解码即可。原理如下:

参考:Stable Diffusion|图解稳定扩散原理 - 知乎

模型细节如下:

注意这里的文本也是做了编码为向量。

DIT(Scalable diffusion models with transformers)

基于transformers的可扩展的扩散模型

DIT利用transformer替换了unet.

有什么好处? 更高的Gflops(网络复杂度),具备更好的扩展性scaling(tokens扩展,网络深度扩展,增加参数量就能有更好的性能),有较低的t FID of 2.27 即预测效果

transformer统一了NLP和视觉领域,SORA正是基于此论文完成主体部分。

什么是FID

即衡量两张图片之间的相似性。

从它的训练和预测代码中,我们看到也使用了训练好的VAE模型。

训练时调用encoder

预测时调用decoder

SORA

​在上一篇文章中已经介绍过

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

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

相关文章

springboot+vue的宠物咖啡馆平台(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

【深度学习笔记】3_4 逻辑回归之softmax-regression

3.4 softmax回归 Softmax回归(Softmax Regression),也称为多类逻辑回归(Multinomial Logistic Regression),是一种用于多分类问题的分类算法。虽然名字里面带回归,实际上是分类。 前几节介绍的…

Rust之构建命令行程序(四):用TDD(测试-驱动-开发)模式来开发库的功能

开发环境 Windows 11Rust 1.75.0 VS Code 1.86.2 项目工程 这次创建了新的工程minigrep. 用测试-驱动模式来开发库的功能 既然我们已经将逻辑提取到src/lib.rs中,并将参数收集和错误处理留在src/main.rs中,那么为代码的核心功能编写测试就容易多了。我…

【MATLAB源码-第146期】基于matlab的信源编码仿真GUI,对比霍夫曼编码,算术编码和LZ编码。

操作环境: MATLAB 2022a 1、算法描述 霍夫曼编码、算术编码和LZ编码是三种广泛应用于数据压缩领域的编码技术。它们各自拥有独特的设计哲学、实现方式和适用场景,因此在压缩效率、编解码速度和内存使用等方面表现出不同的特点。接下来详细描述这三种编…

【大厂AI课学习笔记】【2.2机器学习开发任务实例】(7)特征构造

特征分析之后,就是特征构造。 特征构造第一步 特征构造往往要进行数据的归一化。 在本案例中,我们将所有的数据,将所有特征区间调整为0~1之间。 如上图。 那么,为什么要进行归一化,又如何将数据,调整为…

QtCreator“设计”按钮灰色无法点击,如何解决

Mac中安装QML Designer插件: 首选项-> 关于插件 -> 勾选QT Quick下的QML Designer 点击确定安装插件,重启Qt Creator后生效

【Langchain多Agent实践】一个有推销功能的旅游聊天机器人

【LangchainStreamlit】旅游聊天机器人_langchain streamlit-CSDN博客 视频讲解地址:【Langchain Agent】带推销功能的旅游聊天机器人_哔哩哔哩_bilibili 体验地址: http://101.33.225.241:8503/ github地址:GitHub - jerry1900/langcha…

【达梦数据库】数据库的方言问题导致的启动失败

问题场景 在项目中采用了hibernate ,连接数据库原本为ORACLE,后续打算改造为国产数据库 达梦 链接配置: # 达梦写法, index:driver-class-name: dm.jdbc.driver.DmDriverjdbc-url: jdbc:dm://192.168.220.225:5236/IDX4username:…

【QT 5 +Linux下软件生成+qt软件生成使用工具+学习他人文章+第一篇:使用linuxdeployqt软件生成】

【QT 5 Linux下软件生成qt软件生成使用工具学习他人文章第一篇:使用linuxdeployqt软件生成】 1、前言2、实验环境3、自我学习总结-本篇总结1、新手的疑问,做这件事的目的2、了解工具:linuxdeployqt工具3、解决相关使用过程中问题 4、参照文章…

新手想要做好抖音小店,在开店前你需要知道这五点注意事项!

大家好,我是电商小布。 开抖店你说难吗,其实也不难,把需要的材料准备好就可以着手开店。 难的呢,是在小店的运营上边。 所以新手开店想要少出错,少踩坑,一定要提前把店铺的相关注意事项搞清楚。 今天&a…

将yolov8权重文件转为onnx格式并在c#中使用

yolo模型转ONNX 在yolov8中,我们将训练结果的.pt权重文件转换为onnx格式只需要使用ultralytics库中的YOLO类,使用pip安装ultralytics库,然后执行下面python代码 from ultralytics import YOLO# 加载YOLOv8模型 model YOLO("best.pt&q…

Selenium浏览器自动化测试框架详解

selenium简介 介绍 Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google C…

深度学习中数据的转换

原始(文本、音频、图像、视频、传感器等)数据被转化成结构化且适合机器学习算法或深度学习模型使用的格式。 原始数据转化为结构化且适合机器学习和深度学习模型使用的格式,通常需要经历以下类型的预处理和转换: 文本数据&#xf…

台式电脑电源功率越大越费电吗?装机选购多少W电源

要组装一台电脑,我们首先需要选择硬件。 硬件搭配最关键的一点就是CPU和主板的兼容性。 硬件、电源等之间的平衡都需要仔细考虑。 那么台式电脑电源多大功率合适呢? 下面分享组装电脑电源瓦数选购指南,教您正确选择合适的电源瓦数。 让我们来…

消息中间件篇之RabbitMQ-消息不丢失

一、生产者确认机制 RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功。 当消息没有到交换机就失败了,就会返回publish-confirm。当消息没有到达MQ时&…

防御保护--VPN

目录 VPN的概述 VPN的分类 VPN的核心技术 --- 隧道技术 VPN其他常用技术 VPN的概述 VPN --- 虚拟专用网 --- 一般指依靠ISP或者其他NSP,也可以是企业自身,提供的一条虚拟网 络专线。这个虚拟的专线是逻辑上的,而不是物理上的,所…

LeetCode 2583. 二叉树中的第 K 大层和

题目链接https://leetcode.cn/problems/kth-largest-sum-in-a-binary-tree/?envTypedaily-question&envId2024-02-23 和我上一篇发的博客类似,通过广度优先遍历二叉树,使用队列存每层的节点值, 最后再做处理,输出第K大层和 …

书生·浦语大模型实战营第二节课作业

使用 InternLM-Chat-7B 模型生成 300 字的小故事(基础作业1)。 熟悉 hugging face 下载功能,使用 huggingface_hub python 包,下载 InternLM-20B 的 config.json 文件到本地(基础作业2)。 下载过程 进阶…

Nest.js权限管理系统开发(三)环境变量与配置文件

一般来说数据库的配置包含了一些敏感信息,不宜写在代码中提交到远程仓库,所以我们可以将配置写在配置文件中,然后提交 git 时候将生产环境的配置文件其忽略。我们可以新建.env和.env.prod两个文件分别存放开发与生产环境配置,也可以使用YAML等…

2024-2-22 作业

作业要求: 复习前面知识点(指针、结构体、函数)整理思维导图顺序表(按位置插入、按位置删除和去重、重新写)理解链表的代码,尝试写一下链表的尾插和输出 1.复习前面知识点(指针、结构体、函数) 2.整理思维导图 3.顺序表(按位置插入、按位置删除和去重、…