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

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

文本编码器:一个Transformer语言模型

模型中的语言理解组件使用的是Transformer语言模型,可以将输入的文本提示转换为token嵌入向量。发布的Stable Diffusion模型使用 ClipText (基于 GPT 的模型) ,这篇文章中为了方便讲解选择使用 BERT模型。Imagen论文中的实验表明,相比选择更大的图像生成组件,更大的语言模型可以带来更多的图像质量提升。早期的Stable Diffusion模型使用的是OpenAI发布的经过预训练的 ClipText 模型,而在Stable Diffusion V2中已经转向了最新发布的、更大的CLIP模型变体OpenClip.CLIP是怎么训练的?CLIP需要的数据为图像及其标题,数据集中大约包含4亿张图像及描述。数据集通过从网上抓取的图片以及相应的「alt」标签文本来收集的。CLIP 是图像编码器和文本编码器的组合,其训练过程可以简化为拍摄图像和文字说明,使用两个编码器对数据分别进行编码。然后使用余弦距离比较结果嵌入,刚开始训练时,即使文本描述与图像是相匹配的,它们之间的相似性肯定也是很低的。随着模型的不断更新,在后续阶段,编码器对图像和文本编码得到的嵌入会逐渐相似。通过在整个数据集中重复该过程,并使用大batch size的编码器,最终能够生成一个嵌入向量,其中狗的图像和句子「一条狗的图片」之间是相似的。就像在 word2vec 中一样,训练过程也需要包括不匹配的图片和说明的负样本,模型需要给它们分配较低的相似度分数。

文本信息喂入图像生成过程

为了将文本条件融入成为图像生成过程的一部分,必须调整噪声预测器的输入为文本。所有的操作都是在潜空间上,包括编码后的文本、输入图像和预测噪声。为了更好地了解文本token在 Unet 中的使用方式,还需要先了解一下 Unet模型。Unet 噪声预测器中的层(无文本)一个不使用文本的diffusion Unet,其输入输出如下所示:在模型内部,可以看到:1. Unet模型中的层主要用于转换latents;2. 每层都是在之前层的输出上进行操作;3. 某些输出(通过残差连接)将其馈送到网络后面的处理中4. 将时间步转换为时间步长嵌入向量,可以在层中使用。Unet 噪声预测器中的层(带文本)现在就需要将之前的系统改装成带文本版本的。主要的修改部分就是增加对文本输入(术语:text conditioning)的支持,即在ResNet块之间添加一个注意力层。需要注意的是,ResNet块没有直接看到文本内容,而是通过注意力层将文本在latents中的表征合并起来,然后下一个ResNet就可以在这一过程中利用上文本信息。

参考资料:

https://jalammar.github.io/illustrated-stable-diffusion/

https://www.reddit.com/r/MachineLearning/comments/10dfex7/d_the_illustrated_stable_diffusion_video/

相关文章
|
6月前
|
编译器 C语言 C++
【工具推荐】VSCode下载安装汉化保姆级教程(附安装包+图文步骤)
VSCode是微软开发的免费开源代码编辑器,轻量高效、跨平台(Windows/macOS/Linux),支持智能补全、集成调试、Git和终端。通过海量扩展可适配前端、后端、Python、C等多种开发需求,新手与专业人士皆宜。(239字)
|
9月前
|
机器学习/深度学习 数据采集 人工智能
大模型训练方法与技术术语解释
预训练奠定语言基础,微调适配特定任务,RLHF融入人类偏好,思维链提升推理能力。少样本与零样本实现快速迁移,指令微调增强指令理解。自监督学习利用海量无标注数据,温度控制生成随机性,蒸馏压缩模型规模,缩放定律指导模型扩展,共同推动大模型发展。
|
数据采集 机器学习/深度学习 搜索推荐
利用通义大模型构建个性化推荐系统——从数据预处理到实时API部署
本文详细介绍了基于通义大模型构建个性化推荐系统的全流程,涵盖数据预处理、模型微调、实时部署及效果优化。通过采用Qwen-72B结合LoRA技术,实现电商场景下CTR提升58%,GMV增长12.7%。文章分析了特征工程、多任务学习和性能调优的关键步骤,并探讨内存优化与蒸馏实践。最后总结了大模型在推荐系统中的适用场景与局限性,提出未来向MoE架构和因果推断方向演进的建议。
1914 11
|
机器学习/深度学习 人工智能 API
如何在 TensorRT-LLM 中支持 Qwen 模型
大型语言模型正以其惊人的新能力推动人工智能的发展,扩大其应用范围。然而,由于这类模型具有庞大的参数规模,部署和推理的难度和成本极高,这一挑战一直困扰着 AI 领域。此外,当前存在大量支持模型部署和推理的框架和工具,如  ModelScope 的 Model Pipelines API,和 HuggingFace 的 Text Generation Inference 等,各自都有其独特的特点和优势。然而,这些工具往往未能充分发挥  GPU 的性能。
72998 0
如何在 TensorRT-LLM 中支持 Qwen 模型
|
Docker Python 容器
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
2089 1
|
数据安全/隐私保护 Android开发 iOS开发
如何设置APN
设置APN(接入点名称,Access Point Name)是连接互联网或特定网络服务(如彩信、移动数据等)时,设备需要配置的一个重要参数。不同的手机操作系统(如Android、iOS)和不同的移动网络提供商(如中国移动、中国联通、中国电信等)可能有不同的设置步骤。以下是一些基本的步骤和注意事项,用于设置APN:
|
存储 数据采集 IDE
利用ESP32-C3将TF卡内容变成U盘进行读取
ESP32-C3是一款高性价比的微控制器,具备WiFi和蓝牙功能,广泛应用于物联网(IoT)项目中。除了常见的无线通信功能外,ESP32-C3还可以用来模拟U盘读取TF卡内容。本文将介绍如何通过ESP32-C3实现这一功能,让你的设备像U盘一样读取TF卡里的数据。
2280 1
|
JavaScript 前端开发 安全
【Vue3 + Vite】6个非常强大的后台管理项目!开源且免费!
【Vue3 + Vite】6个非常强大的后台管理项目!开源且免费!
|
C++ Windows
手把手教你安装 Visual Studio 2022 及其简单使用
手把手教你安装 Visual Studio 2022 及其简单使用
2947 0
ffmpeg的下载、编译与安装
ffmpeg的下载、编译与安装
848 0