大模型 Dalle2 学习三部曲(一)Latent Diffusion Models学习

news2024/11/20 10:29:52

引言

Diffusion model大获成功,但是它的短板也很明显,需要大量的计算资源,并且推理速度比较慢。如何才能提升Diffusion model的计算效率。业界有各种各样的改进,无疑Latent Diffusion Models(潜在扩散模型,LDMs)是比较成功的一篇,那就来学习一下LDMS是怎么做的吧


论文贡献

1,与基于变换的方法相比,论文的方法在处理更高维度数据,可以高效地应用于高分辨率图像的合成,具体措施如下

  1. )使用潜在空间进行训练:作者在空间而不是像素空间上训练扩散模型。这使得模型可以在更高分辨率的图像上实现高效的图像合成,同时降低计算复杂性。
  2. )训练自动编码器:首先,作者训练了一个自动编码器,它提供了一个低维(因此高效)的表示空间,该空间在感知上等价于数据空间。这种表示空间使得模型可以更好地处理高维数据,同时保留了图像的细节。
  3. )在潜在空间中训练扩散模型:在自动编码器的潜在空间上训练扩散模型,使得模型可以在更高分辨率的图像上实现高效的图像合成和条件生成。这种方法在降低计算复杂性的同时,保留了扩散模型的高质量和灵活性。

2论文在多个任务(无条件图像合成、修复、随机超分辨率)和数据集上实现了竞争性的性能,同时显著降低了计算成本。与基于像素的扩散方法相比,论文还显著降低了推断成本。

3,论文发现,与先前同时学习编码器/解码器架构的方法相比,论文的方法不需要精细权衡重建和生成能力。这确保了极其准确的重建,并且对潜在空间的正则化要求非常低。

4,此外,论文设计了一种基于交叉注意力的通用条件机制,实现了多模态训练。

  1. )引入交叉注意力层:作者在模型架构中引入了交叉注意力层,使得潜在扩散模型(LDMs)能够处理各种条件输入,例如文本或边界框。
  2. )条件潜在扩散模型:作者将交叉注意力层与 UNet 结合,以实现条件图像生成。这使得模型可以在各种条件图像合成任务中实现高效的图像生成。
  3. )文本到图像合成:作者在 LAION-400M 数据集上训练了一个基于文本提示的条件 LDM。他们使用 BERT-tokenizer 对文本进行编码,并实现 τθ 作为 Transformer,以从文本中推断出潜在编码,然后通过(多头)交叉注意力将其映射到 UNet。
  4. )多模态训练:作者在多个数据集上训练了模型,以实现类别条件、文本到图像和布局到图像的生成。这种方法可以在不同的任务上获得高度竞争性的性能,而无需针对特定任务的架构。

5,最后,论文在https://github.com/CompVis/latent-diffusion上发布了预训练的潜在扩散和自编码模型。

具体方法

1,结构整体理解

Latent Diffusion Models整体框架如图,分为左中右三个部分,左边是一个训练好自编码模型(AutoEncoder,包括一个编码器 E 和一个解码器 D ),中间是个Diffusion Models,右边是个condition模块

首先为什么要加入左边红色这个模块,我们可以这么想,Diffusion Models的问题在于耗时和耗费资源,那么最耗资源的部分是哪里,肯定是从清晰图像到相对模糊的这部分,因为这时候要从图像的每个像素点开始计算,占用了大量的资源和时间,

解决的方法也很直观,我们先把像素点压缩合并一下,大图像变小图像,然后从小图像开始做diffusion,因为压缩和解压缩的这个过程远比diffusion过程来的快和节省资源,所以整个过程也就一下子压缩节省了大量资源和时间。

同理我们把像素点压缩的方法替换成编码器和解码器,小图片理解成隐空间,对这就是Latent Diffusion Models的做法了,是不是很自然的一个思路了。

好那让我们再具体看看Latent Diffusion Models是怎么做的。对应图左中右三部分,分别为图片感知压缩(Perceptual Image Compression),潜在扩散模型(Latent Diffusion Models),条件机制(Conditioning Mechanisms)

2,图片感知压缩(Perceptual Image Compression)对应图最左边AutoEncoder部分

感知压缩的扩散模型的训练本质上是一个两阶段训练的过程的第一阶段,第一阶段训练一个自编码器

在第一阶段训练自编码器时,为了避免潜在表示空间出现高度的异化,作者使用了两种正则化方法,一种是KL-reg,另一种是VQ-reg。

具体地说,给定一个在RGB空间中的图像x∈R H×W×3,编码器E将x编码为一个潜在表示z = E(x) 编码图像,解码器 D 从潜在空间重构图像,得到 x˜ = D(z) = D(E(x)),其中 z ∈ R^(h×w×c)

3,潜在扩散模型(Latent Diffusion Models)对应图1中间部分

潜在扩散模型对应的是两阶段训练的过程的阶段针对第一阶段得到的隐空间进行diffusion操作

回忆一下Diffusion Models的公式

LDM = Ex,ε∼N(0,1),th [ (ε - εθ(xt, t))^2 / 2 ]

我们把编码器 E 和一个解码器 D代入公式得到

LDM = E[x, ε ∼ N(0,1), t]((ε - ε_θ(z_t, t))^2 / 2)

4,条件机制(Conditioning Mechanisms)对应图1右边部分

其实到上一步Latent Diffusion Models主体工作已经可以完成,不过作者觉得可以无条件扩散生成,也可以有条件引导模型进行更好的扩散。如图1右边部分。通过使用交叉注意力机制将DM的底层UNet骨干增强为更灵活的条件图像生成器。

具体来说,引入一个特定领域的编码器τθ,该编码器将y投影到中间表示τθ(y)∈RM×dτ,然后通过交叉注意力层将其映射到UNet的中间层,该层实现

Attention(Q, K, V) = softmax  QKT √ d  · V,

其中

Q = W (i) Q · ϕi(zt),

K = W (i) K · τθ(y),

V = W (i) V · τθ(y)

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

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

相关文章

SpringMVC入门详细介绍

一. SpringMVC简介 Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发&a…

Redis面试题(笔记)

目录 1.缓存穿透 2.缓存击穿 3.缓存雪崩 小结 4.缓存-双写一致性 5.缓存-持久性 6.缓存-数据过期策略 7.缓存-数据淘汰策略 数据淘汰策略-使用建议 数据淘汰策略总结 8.redis分布式锁 setnx redission 主从一致性 9.主从复制、主从同步 10.哨兵模式 服务状态监…

QT Day2!!1.登录跳转界面 2.枚举类型 3.左值与右值4.面试问题

1.作业登录跳转界面 //form.h #ifndef FORM_H #define FORM_H#include <QWidget>namespace Ui { class Form; }class Form : public QWidget {Q_OBJECTpublic:explicit Form(QWidget *parent nullptr);~Form();public slots:void jump_slot();private:Ui::Form *ui; };…

1999块的3D扫描仪CR-Scan Ferret效果如何?

CR-Scan Ferret 13年前&#xff0c;微软推出的消费级深度相机Kinect轰动全球&#xff0c;但是Kinect三维扫描的细节难以令人满意。 今年4月&#xff0c;创想三维和奥比中光合作开发的一款消费级、高精度的三维扫描仪CR-Scan Ferret&#xff0c;在某东价格只有1999。这款扫描仪…

企业如何防止数据外泄——【部署智能透明加密防泄密系统】

为防止公司文件泄密&#xff0c;可以采取以下措施&#xff1a; www.drhchina.com 分部门部署&#xff1a;根据不同的部门需要&#xff0c;为不同部门用户部署灵活的加密方案。例如&#xff0c;对研发部、销售部、运营部的机密资料进行强制性自动加密&#xff0c;对普通部门的文…

开发指导—利用 CSS 动画实现 HarmonyOS 动效(二)

注&#xff1a;本文内容分享转载自 HarmonyOS Developer 官网文档 点击查看《开发指导—利用CSS动画实现HarmonyOS动效&#xff08;一&#xff09;》 3. background-position 样式动画 通过改变 background-position 属性&#xff08;第一个值为 X 轴的位置&#xff0c;第二个…

【mybatis-plus】多数据源切换[dynamic-datasource] 手动切换数据源

Springbootmybatis-plusdynamic-datasourceDruid 手动切换数据源 文章目录 Springbootmybatis-plusdynamic-datasourceDruid 手动切换数据源0.前言1. 多数据源核心类浅析1. 1. DynamicDataSourceContextHolder切换数据源核心类1.2. DynamicRoutingDataSource 2.基于核心类的理解…

楼兰图腾——树状数组

在完成了分配任务之后&#xff0c;西部 314 来到了楼兰古城的西部。 相传很久以前这片土地上(比楼兰古城还早)生活着两个部落&#xff0c;一个部落崇拜尖刀(V)&#xff0c;一个部落崇拜铁锹(∧)&#xff0c;他们分别用 V 和 ∧ 的形状来代表各自部落的图腾。 西部 314 在楼兰古…

面试中的时间管理:如何在有限时间内展示最大价值

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

基于SSM的新能源汽车在线租赁系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

Mysql 高阶语句

高阶语句 对 MySQL 数据库的查询&#xff0c;除了基本的查询外&#xff0c;有时候需要对查询的结果集进行处理&#xff1b; 例如只取 10 条数据、对查询结果进行排序或分组等&#xff0c;来获取想要有用的数据 无非还是对于MySQL —— 增、删、改、查 的操作 升降序 SELECT…

电压互感器倍频感应耐压试验方法

试验方法 升压设备的容器应足够&#xff0c; 试验前应确认高压升压等设备功能正常&#xff1b; 按上图接好线&#xff0c; 三倍频发生器、 高压器外壳必须可靠接地。 将三倍频电源发生装置的输出线与被试电压互感器的一组二次绕组接线端连接好&#xff08;如 a-n 端&#xff0…

人体呼吸存在传感器成品,毫米波雷达探测感知技术,引领智能家居新潮流

随着科技的不断进步和人们生活质量的提高&#xff0c;智能化家居逐渐成为一种时尚和生活方式。 人体存在传感器作为智能家居中的重要组成部分&#xff0c;能够实时监测环境中人体是否存在&#xff0c;为智能家居系统提供更加精准的控制和联动。 在这个充满创新的时代&#xf…

测试靶场bWAPP安装部署

bWAPP&#xff08;Buggy Web Application&#xff09;是一个用于学习和练习网络应用安全的漏洞测试平台。它是一个开源的虚拟机或Docker映像&#xff0c;旨在为安全研究人员、开发人员和学生提供一个实践和演示各种Web应用漏洞的环境。 bWAPP包含了许多已知的Web应用程序漏洞&…

PAT 1164 Good in C 测试点3,4

个人学习记录&#xff0c;代码难免不尽人意。 When your interviewer asks you to write “Hello World” using C, can you do as the following figure shows? Input Specification: Each input file contains one test case. For each case, the first part gives the 26 …

「解析」YOLOv5 classify分类模板

学习深度学习有些时间了&#xff0c;相信很多小伙伴都已经接触 图像分类、目标检测甚至图像分割(语义分割)等算法了&#xff0c;相信大部分小伙伴都是从分类入门&#xff0c;接触各式各样的 Backbone算法开启自己的炼丹之路。 但是炼丹并非全是 Backbone&#xff0c;更多的是各…

Redis——数据结构介绍

Redis是一个key-value的数据库&#xff0c;key一般是String类型&#xff0c;不过value的类型是多样的&#xff1a; String&#xff1a;hello wordHash&#xff1a;{name:"Jack",age:21}List&#xff1a;[A -> B -> C -> D]Set&#xff1a;{A,B,C}SortedSet…

盖子的c++小课堂——第二十二讲:2维dp

前言 大家好&#xff0c;我又来更新了&#xff0c;今天终于有时间了aaaaaaaa 破500粉了&#xff0c;我太高兴了哈哈哈哈哈哈&#xff08;别看IP地址&#xff0c;我去北京旅游回来了&#xff0c;他没改回来&#xff09;&#xff0c;然后我马上就成为创作者一年了&#xff0c;希…

航空货运站AAT EDI 解决方案

Asia Airfreight Terminal (AAT)是一个航空货运站&#xff0c;总部设在香港国际机场&#xff0c;是亚洲首屈一指的运输枢纽。 AAT旨在成为世界上最好的航空货运站&#xff0c;将围绕成本竞争力和服务效率&#xff0c;客户服务&#xff0c;创新和员工承诺的业务战略来构建。 | 业…

Gradle下载安装教程

1、Gradle 入门 1.1、Gradle 简介 Gradle 是一款Google 推出的基于 JVM、通用灵活的项目构建工具&#xff0c;支持 Maven&#xff0c;JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml 文件&#xff0c;转而使用简洁的、支持多种语言(例如&#xff1a;java、groo…