什么是稳定扩散,它是如何工作的?

news2024/10/6 10:29:36
推荐基于稳定扩散(stable diffusion) AI 模型开发的自动纹理工具: DreamTexture.js自动纹理化开发包 - NSDT

稳定扩散是潜在扩散模型的一个版本。潜在空间用于获得数据的低维表示的好处。之后,使用扩散模型和添加和去除噪声的方法根据文本生成图像。在接下来的章节中,我将更详细地描述潜在空间以及扩散模型的功能方式,我将提供一个有趣的示例,说明模型可以根据给定文本生成的图像。

潜在空间

简单地说,伪装的潜在空间是压缩数据的表示。数据压缩被定义为通过使用比原始表示中更小的位对信息进行编码的过程。让我们想象一下,我们必须使用 20 维向量呈现一个 10 维向量。通过降低维度,我们正在丢失数据。但是,在这种情况下,这并不是一件坏事。降低维度使我们能够过滤不太重要的信息,只保留最重要的信息。

简而言之,假设我们想要使用全连接卷积神经网络来训练对图像进行分类的模型。当我们说模型正在学习时,我们的意思是它正在学习神经网络每一层的特定属性。例如,这些是边缘、特定角度、形状等。每当模型必须使用数据(已存在的图像)进行学习时,图像的尺寸都会在恢复到原始大小之前减小。最后,该模型使用解码器从压缩数据中重建图像,同时事先学习所有相关信息。因此,空间变小,以便最重要的属性被解救和保留。这就是为什么潜在空间适用于扩散模型的原因。有一种方法可以从包含许多细节的大量图像的训练集中挑选出最重要的属性,并且这些属性可用于对相同或不同类别中的两个任意对象进行分类,这非常有用。

使用卷积神经网络解救最重要的属性

使用卷积神经网络解救最重要的属性

使用卷积神经网络解救最重要的属性

使用卷积神经网络解救最重要的属性

扩散模型

扩散模型是生成模型。它们用于生成与训练它们所依据的数据相似的数据。从根本上说,扩散模型的功能是通过迭代添加高斯噪声来“破坏”训练的数据,然后它们学习如何通过消除噪声来恢复数据。

高斯噪声

高斯噪声

前向扩散过程是将越来越多的噪声添加到图像中的过程。因此,拍摄图像并以 t 个不同的时间步长添加噪声,其中在 T 点中,整个图像只是噪声。与前向扩散过程相比,后向扩散是一个相反的过程,在前向扩散过程中,来自时间步长t的噪声在时间步长t-1中被迭代去除。重复这个过程,直到使用U-Net卷积神经网络从图像中去除整个噪声,该网络除了在机器学习和深度学习中的所有应用外,还经过训练来估计图像上的噪声量。

从左到右,图片演示了噪声的迭代添加,从右到左,它展示了噪声的迭代去除。

为了估计和消除噪声,最常使用U-Net。有趣的是,神经网络的架构让我们想起了字母U,这就是它的名字。U-Net 是一个全连接的卷积神经网络,这使得它对图像处理非常有用。U-Net的特点是能够以图像为入口,通过减少采样来找到该图像的低维表示,这使得它更适合处理和查找重要属性,然后通过增加采样将图像恢复到第一维。

U-Net 架构

更详细地说,去除噪声,即从时间步骤 t-1 中的任意时间步骤 t 过渡,其中 t 编号是 T0(没有噪声的图像)和最终数字 TMAX(总噪声)之间的数字,其方式如下:输入是时间步长 t 中的图像,在该时间步长中,图像上存在特定的噪声。使用U-Net神经网络,可以预测噪声的总量,然后在时间步长t中从图像中去除总噪声的“部分”。这就是在噪声较少的时间步长 t-1 中获取图像的方式。

稳定的扩散架构

从数学上讲,将这种方法进行 T 次比尝试消除整个噪声更有意义。通过重复这种方法,噪音将逐渐消除,我们将获得更“干净”的图像。一个简化的过程如下:有一个带有噪声的图像,我们试图通过在初始位置添加完整的噪声并迭代地去除它来预测没有噪声的图像。

使用去除噪点的方法生成图像

稳定扩散

为什么要稳定扩散?扩散模型最大的问题是,在时间和计算方面,它们非常“昂贵”。考虑到U-Net的功能,稳定扩散克服了上述问题。如果我们想生成尺寸为 1024x1024 的图像,U-Net 应该使用 1024x1024 大小的噪点,然后从中制作图像。对于一个扩散步骤来说,这可能是一种昂贵的方法,特别是如果该方法在t甚至可以达到一百个时重复。在以下示例中,时态步长数为 45。稳定的扩散模型在大约 6 秒内为给定的步骤数生成两张图像,而其他一些扩散模型甚至需要 5 到 20 分钟,具体取决于 GPU 规格和图像大小。最有趣的部分是,即使有 8 GB 的 VRAM 内存,也可以在本地成功启动稳定的扩散模型。到目前为止,这个问题已经通过在 256x256 大小的较小图像上进行训练来解决,然后使用额外的神经网络来生成更高分辨率的图像(超分辨率扩散)。潜在扩散模型有不同的方法。概念潜在扩散模型不直接在图像上操作,而是在潜在空间中操作!初始图像实际上是在更小的空间中编码的,因此通过使用 U-Net 在图像的低维表示上添加和删除噪声。

最终稳定扩散架构

稳定扩散模型的最终架构

可能性

考虑到该模式的复杂架构,稳定扩散可以通过使用文本提示“从头开始”生成图像,其中可以描述应该显示或遗漏哪些元素。此外,也可以使用文本提示在现有图像上添加新元素。最后,我想给大家举一个例子——在网站 huggingface.co 上,有一个空间,你可以用一个稳定的扩散模型来尝试不同的东西。以下是在提示中写下文字“A pikachu fine dining with a view to the Eiffel Tower”时的结果:

与空间的直接联系:https://huggingface.co/spaces/stabilityai/stable-diffusion

在过去的几个月里,Stable Diffusion获得了巨大的宣传。其原因是源代码可供所有人使用,并且稳定扩散不对生成的图像拥有任何权利,并且它还允许人们发挥创造力,这可以从该模型创建的大量令人难以置信的已发布图像中看出。我们可以自由地说,生成模型每周都会开发和改进,跟踪它们的未来进展将非常有趣。

转载:什么是稳定扩散,它是如何工作的? (mvrlink.com)

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

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

相关文章

《红蓝攻防对抗实战》十.内网穿透之利用DNS协议进行隧道穿透

一.利用DNS协议进行隧道穿透 1.环境配置2.Windows系统下进行DNS隧道穿透利用3.Linux系统下进行DNS隧道穿透利用 前文推荐: 《红蓝攻防对抗实战》一. 隧道穿透技术详解 《红蓝攻防对抗实战》二.内网探测协议出网之TCP/UDP协议探测出网 《红蓝攻防对抗实战》三.内网…

抖音小程序开发:打造高效餐饮团购平台的技术指南

在餐饮行业,通过抖音小程序开发一个高效的团购平台,可以为餐厅提供更广泛的曝光,增加销售机会。本文将从技术角度出发,为您提供一份详细的抖音小程序开发指南,助您打造一流的餐饮团购平台。 一、确定需求和功能 在开…

LeetCode | 234. 回文链表

LeetCode | 234. 回文链表 O链接 这里的解法是先找到中间结点然后再将中间节点后面的节点逆序一下然后再从头开始和从中间开始挨个比较如果中间开始的指针到走最后都相等,就返回true,否则返回false 代码如下: struct ListNode* reverseLis…

只会CRUD程序员朋友,你开始拥抱云计算技术了吗

阅读建议 嗨,伙计!刷到这篇文章咱们就是有缘人,在阅读这篇文章前我有一些建议: 本篇文章大概6000多字,预计阅读时间长需要6分钟。本篇文章的理论性较强,是一篇质量分数较高的技术文章,建议收藏…

11. EPIC定时器

11. EPIC定时器 EPIT定时器简介EPIT定时器结构分析EPIT 定时器相关寄存器EPITx_CREPITx_SREPITx_LR 加载寄存器EPITx_CMPR 比较寄存器EPITx_CNR 计数寄存器 EPIT 配置步骤 例程代码编写bsp_epittimer.hbsp_epittimer.cmain.c EPIT定时器简介 EPIT定时器是增强的周期中断定时器…

jupyter notebook中markdown改变图像大小

文章目录 &#x1f56e;原始图像&#x1f56e;改变图像大小&#x1f56e;使图像靠左 在 jupyter notebook中&#xff0c;导入的图片过大&#xff0c;想要改变图像的大小 &#x1f56e;原始图像 &#x1f56e;改变图像大小 复制小括号里面的内容到src后面&#xff0c;满足<…

【LeetCode】挑战100天 Day09(热题+面试经典150题)

【LeetCode】挑战100天 Day09&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-112.1 题目2.2 题解 三、面试经典 150 题-113.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&…

【自定义类型:结构体】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 1. 结构体类型的声明 1.1 结构体的概念 1.2 结构的声明 ​编辑 1.3 特殊的声明 1.4 结构的自引用 2. 结构体变量的创建和初始化 3. 结构成员访问操作符 4. 结构体内…

学习linux必不可少的【yum命令】!

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一…

【JavaEE初阶】 TCP滑动窗口与流量控制和拥塞控制

文章目录 &#x1f384;为什么出现滑动窗口&#x1f38b;滑动窗口丢包问题&#x1f6a9;情况一&#xff1a;数据包已经抵达&#xff0c;ACK被丢了。&#x1f6a9;情况二&#xff1a;数据包就直接丢了 &#x1f332;流量控制&#xff08;安全机制&#xff09;&#x1f333;拥塞控…

STM32F4X SDIO(九) 例程讲解-SD卡擦除、读写

STM32F4X SDIO &#xff08;九&#xff09; 例程讲解-SD卡擦除、读写 例程讲解-SD卡擦除、读写SD卡擦除CMD32:ERASE_WR_BLK_START命令发送命令响应 CMD33:ERASE_WR_BLK_END命令发送命令响应CMD38:ERASE命令响应 CMD13:SD_CMD_SEND_STATUS命令发送命令回应 SD卡读数据CMD16:SET_…

C++ 配合图形库实现画线效果

#include<stdio.h> #include <conio.h> #include<math.h> #include <graphics.h> // 引用图形库头文件 #define N 12 int List[N][N];void draw() {for (int i 0; i < N; i) {int x 200 * cos(2 * 3.14 * i / N);int y 200 * sin(2 * 3.1…

SwiftUI 如何保证 Text 中字符数量相等的字符串显示宽度一定相同?

0. 问题现象 在 SwiftUI 中我们往往需要将内容相似的字符串展列出来给用户比较,这些字符串内容各有不同但字符数量始终是相等的,我们希望它们的显示宽度始终保持一致: 如上图所示:即使是等宽字符组成的字符串在字符数量相等时它们的显示宽度仍然可能不一致。但演示中最底部…

抖音短视频账号矩阵系统、短视频矩阵源码+无人直播源码开发可打包

抖音短视频账号矩阵系统、短视频矩阵源码无人直播源码开发可打包 矩阵系统源码主要有三种框架&#xff1a;Spring、Struts和Hibernate。Spring框架是一个全栈式的Java应用程序开发框架&#xff0c;提供了IOC容器、AOP、事务管理等功能。Struts框架是一个MVC架构的Web应用程序框…

Raft分布式一致性算法

拜占庭将军 假设多位拜占庭将军中没有叛军&#xff0c;信使的信息可靠但有可能被暗杀的情况下&#xff0c;将军们如何达成是否要进攻的一致性决定&#xff1f;解决问题的思路是&#xff0c;从多位处于平等地位的将军中选举出一位大将军&#xff0c;所有作战指令由大将军发出。…

python升级pip的时候一直失败

如图,一直提示使用 python.exe -m pip install --upgrade pip 进行升级pip,但是执行这句命令又不成功.然后综合了几篇文章以后使用了下面的命令可以升级了 python -m pip install --upgrade pip --user -i https://mirrors.aliyun.com/pypi/simple/ 主要是在推荐的语句上使用…

解决内存泄漏问题,Profiler工具的使用介绍

什么是内存泄漏 内存泄漏&#xff08;Memory Leak&#xff09;是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放&#xff0c;造成系统内存的浪费&#xff0c;导致程序运行速度减慢甚至系统崩溃等严重后果。 以上是官方针对内存泄漏的说法。说的通俗一点&#x…

高频SQL50题(基础版)-3

文章目录 主要内容一.SQL练习题1.1174-即时食物配送代码如下&#xff08;示例&#xff09;: 2.550-游戏玩法分析代码如下&#xff08;示例&#xff09;: 3.2356-每位教师所教授的科目种类的数量代码如下&#xff08;示例&#xff09;: 4.1141-查询近30天活跃用户数代码如下&…

【FPGA】Verilog:计数器 | 异步计数器 | 同步计数器 | 2位二进制计数器的实现 | 4位十进制计数器的实现

目录 Ⅰ. 实践说明 0x00 计数器&#xff08;Counter&#xff09; 0x01 异步计数器&#xff08;Asynchronous Counter&#xff09; 0x02 同步计数器&#xff08;Synchronous Counter&#xff09; Ⅱ. 实践&#xff1a;2位二进制计数器 0x00 实践说明 0x01 输出表 0x02 代…

由于找不到dll无法执行代码的解决方法,深度解析5个dll修复方法

在使用计算机的过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到dll无法执行代码”。这个错误通常发生在程序运行时&#xff0c;系统无法找到所需的动态链接库&#xff08;DLL&#xff09;文件。这个问题可能由多种原因引起&#xff0c;包括缺少…