Jay Alammar再发新作:超高质量图解Stable Diffusion,看完彻底搞懂「图像生成」原理(1)

简介: Jay Alammar再发新作:超高质量图解Stable Diffusion,看完彻底搞懂「图像生成」原理



 新智元报道  

编辑:LRS

【新智元导读】小白都能看懂的Stable Diffusion原理!


还记得火爆全网的图解Transformer吗?最近这位大佬博主Jay Alammar在博客上对大火的Stable Diffusion模型也撰写了一篇图解,让你从零开始彻底搞懂图像生成模型的原理,还配有超详细的视频讲解!文章链接:https://jalammar.github.io/illustrated-stable-diffusion/视频链接:https://www.youtube.com/watch?v=MXmacOUJUaw

图解Stable Diffusion

AI模型最新展现出的图像生成能力远远超出人们的预期,直接根据文字描述就能创造出具有惊人视觉效果的图像,其背后的运行机制显得十分神秘与神奇,但确实影响了人类创造艺术的方式。Stable Diffusion的发布是AI图像生成发展过程中的一个里程碑,相当于给大众提供了一个可用的高性能模型,不仅生成的图像质量非常高,运行速度快,并且有资源和内存的要求也较低。相信只要试过AI图像生成的人都会想了解它到底是如何工作的,这篇文章就将为你揭开Stable Diffusion工作原理的神秘面纱。Stable Diffusion从功能上来说主要包括两方面:1)其核心功能为仅根据文本提示作为输入来生成的图像(text2img);2)你也可以用它对图像根据文字描述进行修改(即输入为文本+图像)。下面将使用图示来辅助解释Stable Diffusion的组件,它们之间如何交互,以及图像生成选项及参数的含义。

Stable Diffusion组件

Stable Diffusion是一个由多个组件和模型组成的系统,而非单一的模型。当我们从模型整体的角度向模型内部观察时,可以发现,其包含一个文本理解组件用于将文本信息翻译成数字表示(numeric representation),以捕捉文本中的语义信息。虽然目前还是从宏观角度分析模型,后面才有更多的模型细节,但我们也可以大致推测这个文本编码器是一个特殊的Transformer语言模型(具体来说是CLIP模型的文本编码器)。模型的输入为一个文本字符串,输出为一个数字列表,用来表征文本中的每个单词/token,即将每个token转换为一个向量。然后这些信息会被提交到图像生成器(image generator)中,它的内部也包含多个组件。图像生成器主要包括两个阶段:1. Image information creator这个组件是Stable Diffusion的独家秘方,相比之前的模型,它的很多性能增益都是在这里实现的。该组件运行多个steps来生成图像信息,其中steps也是Stable Diffusion接口和库中的参数,通常默认为50或100。图像信息创建器完全在图像信息空间(或潜空间)中运行,这一特性使得它比其他在像素空间工作的Diffusion模型运行得更快;从技术上来看,该组件由一个UNet神经网络和一个调度(scheduling)算法组成。扩散(diffusion)这个词描述了在该组件内部运行期间发生的事情,即对信息进行一步步地处理,并最终由下一个组件(图像解码器)生成高质量的图像。2. 图像解码器图像解码器根据从图像信息创建器中获取的信息画出一幅画,整个过程只运行一次即可生成最终的像素图像。可以看到,Stable Diffusion总共包含三个主要的组件,其中每个组件都拥有一个独立的神经网络:1)Clip Text用于文本编码。输入:文本输出:77个token嵌入向量,其中每个向量包含768个维度2)UNet + Scheduler在信息(潜)空间中逐步处理/扩散信息。输入:文本嵌入和一个由噪声组成的初始多维数组(结构化的数字列表,也叫张量tensor)。输出:一个经过处理的信息阵列3)自编码解码器(Autoencoder Decoder),使用处理过的信息矩阵绘制最终图像的解码器。输入:处理过的信息矩阵,维度为(4, 64, 64)输出:结果图像,各维度为(3,512,512),即(红/绿/蓝,宽,高)


相关文章
|
前端开发 安全 应用服务中间件
Nginx实现多域名转发到不同项目的配置
Nginx实现多域名转发到不同项目的配置
Nginx实现多域名转发到不同项目的配置
|
5月前
|
SQL 缓存 安全
深度理解 Java 内存模型:从并发基石到实践应用
本文深入解析 Java 内存模型(JMM),涵盖其在并发编程中的核心作用与实践应用。内容包括 JMM 解决的可见性、原子性和有序性问题,线程与内存的交互机制,volatile、synchronized 和 happens-before 等关键机制的使用,以及在单例模式、线程通信等场景中的实战案例。同时,还介绍了常见并发 Bug 的排查与解决方案,帮助开发者写出高效、线程安全的 Java 程序。
283 0
|
6月前
|
Java API 微服务
2025 年 Java 校招面试全攻略:从面试心得看 Java 岗位求职技巧
《2025年Java校招最新技术要点与实操指南》 本文梳理了2025年Java校招的核心技术栈,并提供了可直接运行的代码实例。重点技术包括: Java 17+新特性(Record类、Sealed类等) Spring Boot 3+WebFlux响应式编程 微服务架构与Spring Cloud组件 Docker容器化部署 Redis缓存集成 OpenAI API调用 通过实际代码演示了如何应用这些技术,如Java 17的Record类简化POJO、WebFlux构建响应式API、Docker容器化部署。
319 5
|
编解码 算法 索引
基于simulink的模拟锁相环和数字锁相环建模与对比仿真
本研究利用Simulink对模拟锁相环(PLL)和数字锁相环(DPLL)进行建模,通过对比两者的收敛曲线及锁定频率值,分析其性能差异。系统采用MATLAB2022a版本,详细介绍了PLL和DPLL的工作原理,涵盖鉴相器、滤波器及振荡器等关键组件的功能与数学描述。
|
8月前
|
存储 弹性计算 资源调度
阿里云服务器收费模式对比:包年包月与按量付费的适用场景与选择参考
在我们购买阿里云服务器的时候,云服务器的收费模式主要有多种收费模式,其中包年包月和按量付费两种主流模式。对于准备在阿里云上部署应用的用户来说,选择合适的收费模式至关重要,因为它直接关系到成本控制和资源使用的灵活性。本文将对这两种收费模式做一个对比,以供参考和选择。
1212 14
|
存储 NoSQL 大数据
大数据 数据存储优化
【10月更文挑战第25天】
651 2
|
JavaScript 应用服务中间件 PHP
nginx server 禁止特定目录下的某类文件访问
【8月更文挑战第26天】这段Nginx配置代码旨在保护`/uploads/`目录下的文件,禁止执行任何`.php`, `.html`, `.htm`, 或 `.js`等潜在有害文件,即便被访问也无法运行。取而代之的是重定向到首页。为了实现这一设置,用户需要定位到对应子域名的`.conf`配置文件中进行相应修改。若网站支持多个访问域名,则需确保在正确的`.conf`文件中实施此配置。
406 1
|
Java 应用服务中间件 测试技术
PHP和Java在性能上的差异有哪些?
【7月更文挑战第2天】PHP和Java在性能上的差异有哪些?
819 0
|
数据可视化 搜索推荐 数据管理
2023 年度国内低代码平台排名榜 (这 5 款低平台备受欢迎!)
2023 年度国内低代码平台排名榜 (这 5 款低平台备受欢迎!)
938 0