解锁Diffusion Model: 初识Stable Diffusion、DALL-E、Imagen

news2024/10/7 11:26:24

 ------->更多内容,请移步“鲁班秘笈”!!<-------

扩散模型在生成高质量图像、视频、声音等方面表现突出。它们与物理学中的自然扩散过程相似而得名,自然扩散过程描述了分子如何从高浓度区域移动到低浓度区域。在机器学习的背景下,扩散模型通过逆转扩散过程来生成新数据。主要的思想是向数据添加随机噪声,然后反过来从噪声数据中推理和获取原始数据。

“是先有雕像,还是先有石头,其实雕像已经早在石头里面!”

Diffusion Model

Diffusion Model(扩散模型)其实理解起来不难,它分为两个过程,正向扩散和逆向扩散。正向扩散过程从基本分布(通常是高斯分布)采样开始生成噪声。选择一幅图片,然后对图片不断地增加噪声,随着噪声不断地增加,最后会变为一个纯噪声图片。可以想象一下较早期收不到信号的电视画面!

每一个噪声都是在前一时刻增加噪声而来。从最开始的x0开始,反复迭代直到最终得到xt的纯噪声图像(中间经历N轮)。因为Diffusion的本质是去噪,为了推导出逆向的去噪方法,采用了很取巧的加噪声的原理。<大白话的意思是,让你在画上乱涂是很容易的,但是让你画出还是有难度的吧!>。

添加噪声的过程的目的其实就是不断构建新的训练样本,因为前一时刻可以预测出来后一时刻的噪声。按照刚才的说法,在第一个过程的扩散中将数据收集起来,用于下面的这个Noise Predicter的模型训练。最终训练出来的模型可以从噪声中恢复(创造)出清晰的图片。

这个模型是一个逆噪声的模型,它用于预测输入图片中在本轮需要去掉的噪声,然后将原图与预测生成的噪声相减,突出下一轮更清晰的图。这个训练过程将刚才正向迭代的数据集作为样本反向训练这个模块(上图蓝色的为输入值,红色的为预测值),读者好好思考下为什么?<说白了就是训练它的去噪声能力!> 是不是很巧妙,也是不是很简单~

当训练完毕再生成图片的时候,就开始要表演魔术了。可以随机生成噪声,然后丢进去Noise Predicter,一轮一轮的去掉噪声,一幅清晰的图片不就展示在读者的眼前。具体的算法如上,在原来的论文中,第0步代表最清晰的图,第N步代表噪声图,一般N是个超参数。可视化过程如下:

那么文绉绉的术语如下:“它逐渐增加了复杂性,通常被可视化为结构化噪声的添加。通过连续变换对初始数据的扩散使模型能够捕获和再现目标分布中固有的复杂模式和细节。前向扩散过程的最终目标是将这些简单的开始演变为紧密模拟所需复杂数据分布的样本。前向扩散过程的最终目标是将这些简单的开始演变为紧密模拟所需复杂数据分布的样本。这确实表明了如何从最少的信息开始可以带来丰富、详细的输出。”

通过缓慢添加(去除)噪声来生成样本的马尔可夫链前向(反向)扩散过程。

文本生成图片

现在的Stable Diffusion、DALL-E、Imagen背后都有比较类似的文本生成图片的架构。抽象出来一般分为三部分:1 文字Embedding(Encoder)、2 文字和图的Diffusion的过程生成具有特定意义的中间向量(Latent Representation)、3 将最终的中间向量丢到解码器(Decoder)进而生成图片。

值得注意的是第2部分的过程也是Diffusion的逆生成过程,将噪声和文本一起输入去噪声模块,不断地重复,值得生成的中间表达向量比较优质,在将中间表达向量丢到解码器生成图片。

是不是很熟悉的味道和配方,其实类似于自动编解码器。先来看看Stable Diffusion的架构图。

上面的正向扩散,下面是逆向训练过程。Z是原始的图片,Zt是噪声图。读者可以在图中找1,2,3,其实就是从右到左的三个部分。

再来看看DALL-E的模型架构图,这时候的1,2,3则是从左往右。text-encoder就是之前说的1文字编码器,prior就是2中间的Diffusion过程,最后的decoder就是3。

上图虚线上方,描述了CLIP训练过程,通过该过程可以学习文本和图像的联合表示空间。还记得CLIP么,不记得的话点击链接回去温习一下。

虚线下方,描述了文本到图像的生成过程:将CLIP文本嵌入馈送到自回归或扩散prior以生成图像嵌入,然后使用此嵌入来调节扩散解码器,从而生成最终图像。值得一提的是,在prior和解码器的训练期间,CLIP 模型处于冻结状态。

而22年的Google的Imagen也是类似的架构,从上往下1,2,3。读者可以发现这个图中,第二部分输出的Latent Representation是64*64的图(应该称呼为特征表达向量),最终64*64会经过Decoder(这里也使用了Diffusion Model)生成1024*1024的图片。

相信读者还是会有很多疑问,不着急。先建立起基本的概念,形成初步的认知,后续会循序渐进地带着读者进一步遨游这个领域。

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

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

相关文章

【Python】已解决:ModuleNotFoundError: No module named ‘cv2’

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;ModuleNotFoundError: No module named ‘cv2’ 一、分析问题背景 在Python编程中&#xff0c;当你尝试导入一个不存在的模块时&#xff0c;会遇到ModuleNotFou…

公有链、私有链与联盟链:区块链技术的多元化应用与比较

引言 区块链技术自2008年比特币白皮书发布以来&#xff0c;迅速发展成为一项具有颠覆性潜力的技术。区块链通过去中心化、不可篡改和透明的方式&#xff0c;提供了一种全新的数据存储和管理方式。起初&#xff0c;区块链主要应用于加密货币&#xff0c;如比特币和以太坊。然而&…

Vue84-Vuex的工作原理与搭建开发环境

一、vuex工作原理 stats&#xff1a;是一个object对象&#xff0c;里面有很多key-value&#xff0c;存放的就是要操作的数据。mutations&#xff1a;是一个object对象&#xff0c;真正去操作stats的人。actions的作用&#xff1a;是一个object对象&#xff0c;当一个动作对应的…

力扣Hot100-24两两交换链表中的节点(三指针)

给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4] 输出&#xff1a;[2,1,4…

VirtualBox 虚拟机的网络通过宿主机的网络进行冲浪

虚拟机与宿主机通过桥接模式处在同一个网络中 1.说明2.操作步骤2.1.虚拟机设置网络2.2.手动指定虚拟机的IP 1.说明 A.虚拟机 ubuntu-20.04 B.宿主机网络 Wireless LAN adapter WLAN:Connection-specific DNS Suffix . : lanIPv4 Address. . . . . . . . . . . : 192.168.111…

MYSQL的简易安装

先下载好安装包 官网&#xff1a;https://www.mysql.com 双击运行进入界面 打开之后将左侧的产品移到右侧 点击使用的产品设置路径 之后一直下一步即可 选择主机类型 同时要记住端口号 设置密码 设置系统服务列表中的服务名称 之后一直下一步就可以了 安装完成记得配置环…

AUTOSAR NvM模块(七)

NvM工具配置demo 一切block的配置根据自己的需求&#xff01; NvMBlockDescriptor NvM Common MemIf General FeeBlockConfiguration FeeGeneral

CASS中按指定距离和方向移动图形

1、绘制一个图形 打开软件&#xff0c;随意绘制一个矩形&#xff0c;并量取左下角点的坐标值&#xff0c;具体如下&#xff1a; 2、按距离移动原理讲解 例1&#xff1a;将图形沿着y轴负方向移动100米&#xff0c;如何实现&#xff1f; 如上图所示&#xff0c;测绘中的坐标系…

【FPGA】STA静态时序分析

文章目录 一.定义二.分类1. 静态时序分析2. 静态时序分析 三. 概念四. 时间余量1.场景2.建立时间余量3.保持时间余量 一.定义 时序分析:检查电路是否满足时序要求&#xff1b; 二.分类 1. 静态时序分析 STA,遍历所有的时序路径&#xff0c;根据时序库&#xff08;.lib文件&…

基于Java中的SSM框架实现物流管理系统项目【项目源码+论文说明】

基于Java中的SSM框架实现物流管理系统演示 摘要 企业的发展离不开物流的运输&#xff0c;在一个大型的企业中&#xff0c;商品的生产和建设&#xff0c;推广只是前期的一些工作&#xff0c;在后期的商品销售和物流方面的建立&#xff0c;才能让一个企业得到大力的发展。 企业…

源代码层面分析Appium-inspector工作原理

Appium-inspector功能 Appium Inspector 基于 Appium 框架&#xff0c;Appium 是一个开源工具&#xff0c;用于自动化移动应用&#xff08;iOS 和 Android&#xff09;和桌面应用&#xff08;Windows 和 Mac&#xff09;。Appium 采用了客户端-服务器架构&#xff0c;允许用户通…

BNO055 智能传感器

型号简介 BNO055是博世&#xff08;bosch-sensortec&#xff09;的一款系统级封装 (SiP) 解决方案&#xff0c;集成了三轴 14 位加速度计、精确的闭环三轴 16 位陀螺仪、三轴地磁传感器和运行 BSX3.0 FusionLib 软件的 32 位微控制器。这款智能传感器比同类解决方案小得多。通过…

JAVA 获取客户端信息工具类

获取客户端信息工具类 import com.wangyao.common.constant.ConstantNumeral; import jakarta.annotation.Nullable; import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.constraints.NotNull; import lombok.extern.slf4j.Slf4j;import java.io.IOEx…

一文了解微服务架构路线

为什么选择微服务架构&#xff1f; 众所周知&#xff0c;单体应用程序&#xff0c;由于其种种不足&#xff0c;几乎不支持敏捷方法。如果你想为一个大型或复杂的业务创建一个软件项目&#xff0c;最好从微服务架构开始。 微服务架构是一种灵活的架构&#xff0c;可以显著性地提…

阿里云 ECS 服务器的安全组设置

阿里云 ECS 服务器的安全组设置 缘由安全组多个安全组各司其职一些常见的IP段百度 IP 段华为云 IP 段搜狗蜘蛛 IP 段阿里云 IP 段 。。。 缘由 最近公司规模缩减&#xff0c;原有的托管在 IDC 机房的服务器&#xff0c;都被处理掉了&#xff0c;所有代码都迁移到了阿里云的云服…

手机图库照片删除如何找回?别再捶胸顿足,用这3招恢复

手机和电脑中的照片越来越多&#xff0c;人们在浏览照片时&#xff0c;可能会不小心删除一些重要的照片。这些照片可能是旅行中的风景照、与家人朋友的合影&#xff0c;甚至是一些具有纪念意义的照片。一旦删除&#xff0c;我们可能就无法找回这些照片了。因此&#xff0c;图库…

【postgresql】索引

见的索引类型&#xff1a; B-tree 索引&#xff1a;这是最常用的索引类型&#xff0c;适用于大多数查询。B-tree索引可以高效地处理范围查询。 Hash 索引&#xff1a;适用于等值查询&#xff0c;但不支持范围查询。 GiST 索引&#xff1a;通用搜索树&#xff08;GiST&#xf…

ELISA实验前,需要做好哪些准备?

进行ELISA试剂盒实验前&#xff0c;需要进行周密的准备工作以确保实验的顺利进行和实验的准确性。那么&#xff0c;具体应该做哪些准备呢&#xff1f;欣博盛生物为您总结了一些关键的准备工作步骤&#xff1a; 1. 阅读说明书 仔细阅读ELISA试剂盒的说明书&#xff0c;了解试剂…

CANoe的capl调用Qt制作的dll

闲谈 因为Qt封装了很多个人感觉很好用的库&#xff0c;所以一直想通过CAPL去调用Qt实现一些功能&#xff0c;但是一直没机会&#xff08;网络上也没看到这方面的教程&#xff09;&#xff0c;这次自己用了两天&#xff0c;踩了很多坑&#xff0c;终于是做成了一个初步的调用方…

AI大模型深度学习:理论与应用全方位解析

背景 在当前技术环境下&#xff0c;AI大模型学习不仅要求研究者具备深厚的数学基础和编程能力&#xff0c;还需要对特定领域的业务场景有深入的了解。通过不断优化模型结构和算法&#xff0c;AI大模型学习能够不断提升模型的准确性和效率&#xff0c;为人类生活和工作带来更多…