AIGC绘画设计基础——十分钟读懂Stable Diffusion

2024-06-17 15:12

本文主要是介绍AIGC绘画设计基础——十分钟读懂Stable Diffusion,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在最前面:

由于Stable Diffusion里面有关扩散过程的描述,描述方法有很多版本,比如前向过程也可以叫加噪过程,为了便于理解,这里把各种描述统一说明一下。

  • Diffusion扩散模型:文章里面所有出现Diffusion扩散模型的地方,都是指2020年提出的DDPM模型DDPM: Denoising Diffusion Probabilistic Models
  • 前向扩散过程、加噪过程(含义一样,下同
  • 反向扩散过程、去噪过程、图片生成过程、Sampling
  • 单轮去噪过程、单轮U-Net过程、单轮反向扩散过程

开源的Stable Diffusion

目前AI绘画最火的当属Midjorney和Stable Diffusion,但是由于Midjourney没有开源,因此我们主要分享下Stable Diffusion,后面我们会补充介绍下Midjourney。

公开资料显示,Stable Diffusion是StabilityAI公司于2022年提出的,论文和代码都已开源。StabilityAI在10月28日完成了1.01亿美元的融资,目前估值已经超过10亿美元。

大家可以去Stable Diffusion Online这个网站体验一下Stable Diffusion,我们输入文本“’A sunset over a mountain range, vector image”(山脉上的日落),看一下效果:

Stable Diffusion绘画

在了解应用后,接下来我们介绍下Stable Diffusion。主要还是通过图解的方式,避免大量公式推导,看起来费劲。

1. Stable Diffusion文字生成图片过程

Stable Diffusion其实是Diffusion的改进版本,主要是为了解决Diffusion的速度问题。那么Stable Diffusion是如何根据文字得出图片的呢?下图是Stable Diffusion生成图片的具体过程:

Stable Diffusion文字生成图片过程

可以看到,对于输入的文字(图中的“An astronout riding a horse”)会经过一个CLIP模型转化为text embedding,然后和初始图像(初始化使用随机高斯噪声Gaussian Noise)一起输入去噪模块(也就是图中Text conditioned latent U-Net),最后输出 512×512512\times512 大小的图片。在文章(绝密伏击:十分钟读懂Diffusion:图解Diffusion扩散模型)中,我们已经知道了CLIP模型和U-Net模型的大致原理,这里面关键是Text conditioned latent U-net,翻译过来就是文本条件隐U-net网络,其实是通过对U-Net引入多头Attention机制,使得输入文本和图像相关联,后面我们重点讲讲这一块是怎么做的。

2. Stable Diffusion的改进一:图像压缩

Stable Diffusion原来的名字叫“Latent Diffusion Model”(LDM),很明显就是扩散过程发生隐空间中(latent space),其实就是对图片做了压缩,这也是Stable Diffusion比Diffusion速度快的原因。

自编码器(Autoencoder)

Stable Diffusion会先训练一个自编码器,来学习将图像压缩成低维表示。

  • 通过训练好的编码器 EE ,可以将原始大小的图像压缩成低维的latent data(图像压缩)
  • 通过训练好的解码器 DD ,可以将latent data还原为原始大小的图像

在将图像压缩成latent data后,便可以在latent space中完成扩散过程,对比下和Diffusion扩散过程的区别,如下图所示:

Diffusion扩散过程和Stable Diffusion扩散过程的对比

可以看到Diffusion扩散模型就是在原图 xx 上进行的操作,而Stale Diffusion是在压缩后的图像 zz 上进行操作。

Stable Diffusion的前向扩散过程和Diffusion扩散模型基本没啥区别,只是多了一个图像压缩,只是反向扩散过程二者之前还是有区别。

3. Stable Diffusion的改进二:反向扩散过程

在第一节我们已经简单介绍过Stable Diffusion文字生成图片的过程,这里我们扩展下,看一下里面的细节,如下图所示:

支持文本输入的反向扩散过程

上图从右至左,输入的文字是“Pairs in milky way”(银河系的巴黎),经过CLIP模型 τθ\tau_{\theta} 转为Text embedding,然后和初始图像(噪声向量 zTz_T )、Time step向量 TT ,一起输入Diffusion模块(多轮去噪过程),最后将输出的图像 z0z_0 经过解码器 DD 后,生成最终的图像。

Stable Diffusion在反向扩散过程中其实谈不上改进,只是支持了文本的输入,对U-Net的结构做了修改,使得每一轮去噪过程中文本和图像相关联。在上一篇文章(绝密伏击:十分钟读懂Diffusion:图解Diffusion扩散模型)中,我们在介绍使用Diffusion扩散模型生成图像时,一开始就已经介绍了在扩散过程中如何支持文本输入,以及如何修改U-Net结构,只是介绍U-Net结构改进的时候,讲的比较粗,感兴趣的可以去看看里面的第一节。下面我们就补充介绍下Stable Diffusion是如何对U-Net结构做修改,从而更好的处理输入文本。

3.1 反向扩散细节:单轮去噪U-Net引入多头Attention(改进U-Net结构)

我们先看一下反向扩散的整体结构,如下图所示:

反向扩散过程的整体结构

从上图可以看出,反向扩散过程中输入文本和初始图像 ZTZ_T 需要经过 TT 轮的U-Net网络( TT 轮去噪过程),最后得到输出 Z0Z_0 ,解码后便可以得到最终图像。由于要处理文本向量,因此必然要对U-Net网络进行调整,这样才能使得文本和图像相关联。下图是单轮的去噪过程:

单轮去噪过程

上图的最左边里面的Semantic Map、Text、Representations、Images稍微不好理解,这是Stable Diffusion处理不同任务的通用框架:

  • Semantic Map:表示处理的是通过语义生成图像的任务
  • Text:表示的就是文字生成图像的任务
  • Representations:表示的是通过语言描述生成图像
  • Images:表示的是根据图像生成图像

这里我们只考虑输入是Text,因此首先会通过模型CLIP模型生成文本向量,然后输入到U-Net网络中的多头Attention(Q, K, V)。

这里补充一下多头Attention(Q, K, V)是怎么工作的,我们就以右边的第一个Attention(Q, K, V)为例。

(1)Attention(Q,K,V)=softmax(QKTd)⋅V\text{Attention}\left( Q,K,V \right)=\text{softmax}\left( \frac{QK^T}{\sqrt{d}} \right)\cdot V\tag1 其中: Q=WQ⋅zT,K=WK⋅τθ(y),V=WV⋅τθ(y)Q=W_Q\cdot z_T,K=W_K\cdot \tau_{\theta}\left( y \right),V=W_V\cdot \tau_{\theta}\left( y \right) 。可以看到每一轮去噪过程中,文本向量 τθ(y)\tau_{\theta}\left( y \right) 会和当前图像 zTz_T 计算相关性。

Stable Diffusion完整结构

最后我们来看一下Stable Diffusion完整结构,包含文本向量表示、初始图像(随机高斯噪声)、时间embedding,如下图所示:

Stable Diffusion完整结构

上图详细的展示了Stable Diffusion前向扩散和反向扩散的整个过程,我们再看一下不处理输入文字,只是单纯生成任意图像的Diffusion结构。

不输入文字,单纯生成任意图像的Diffusion结构

可以看到,不处理文字输入,生成任意图像的Diffusion模型,和Stable Diffusion相比,主要有两个地方不一样:

  • 少了对输入文字的embedding过程(少了编码器 EE、解码器 DD )
  • U-Net网络少了多头Attention结构

除了Stable Diffusion之外,Midjourney最近也非常出圈,我们简单介绍下。

爆火的Midjourney

Midjourney是一款AI绘图工具,其创始人是David Holz。目前Midjourney每月的收入大概超过200万美元,用户可以通过Discord平台的newbie频道使用。Discord平台是一款游戏聊天平台,月活超过1.5亿,其中使用Midjounery的用户数已突破380万。2021年初,Discord拒绝了微软120亿美元的收购要约。本质上Discord是一个社区,Midjourney通过在Discord上创建了自己的服务器,并创建了大量的频道,以及开发了自己的机器人,来向用户提供服务。

Midjourney首页

用户可以在Midjourney首页里点击“Join the Beta”,直接会跳转到它们在Discord上的频道。

点击“Join the Beta”跳转到Midjorney

可以看到上图中显示用户数是381万,当前在线30万。用户使用Midjorney也非常简单,只需要点击主页左下方的newbie频道便可进入。

通过newbie频道进入Midjourney

进入newbie频道后,便可以通过/imagine+提示词,让Midjourney生成图片

Midjourney文字生成图片

可以看到在输入“sunshine black hold”后生成了四张图片。

由于目前Midjourney并没有开源,因此我们并不知道其背后的技术,但是大概率还是基于Diffusion扩散模型。

总结

随着AIGC的爆火,各种应用开始不断出现,AI绘画便是其中的一个典型案例。目前最火的AI绘画模型当属Stable Diffusion,但是目前有关Stable Diffusion的文章并不多,主要偏向应用介绍,对于如何处理输入文字以及去噪过程的具体细节,这方面的文章还是比较少,写这篇文章的目的就是希望能把Stable Diffusion讲清楚,让更多人的了解。

 最后想说

AIGC(AI Generated Content)技术,即人工智能生成内容的技术,具有非常广阔的发展前景。随着技术的不断进步,AIGC的应用范围和影响力都将显著扩大。以下是一些关于AIGC技术发展前景的预测和展望:

1、AIGC技术将使得内容创造过程更加自动化,包括文章、报告、音乐、艺术作品等。这将极大地提高内容生产的效率,降低成本。2、在游戏、电影和虚拟现实等领域,AIGC技术将能够创造更加丰富和沉浸式的体验,推动娱乐产业的创新。3、AIGC技术可以帮助设计师和创意工作者快速生成和迭代设计理念,提高创意过程的效率。

未来,AIGC技术将持续提升,同时也将与人工智能技术深度融合,在更多领域得到广泛应用。感兴趣的小伙伴,赠送全套AIGC学习资料和安装工具,包含AI绘画、AI人工智能等前沿科技教程。

对于从来没有接触过AI绘画的同学,我已经帮你们准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

AIGC学习必备工具和学习步骤

工具都帮大家整理好了,安装就可直接上手

现在AI绘画还是发展初期,大家都在摸索前进。

但新事物就意味着新机会,我们普通人要做的就是抢先进场,先学会技能,这样当真正的机会来了,你才能抓得住。

如果你对AI绘画感兴趣,我可以分享我在学习过程中收集的各种教程和资料。

学完后,可以毫无问题地应对市场上绝大部分的需求。

这份AI绘画资料包整理了Stable Diffusion入门学习思维导图、Stable Diffusion安装包、120000+提示词库,800+骨骼姿势图,Stable Diffusion学习书籍手册、AI绘画视频教程、AIGC实战等等。

【Stable Diffusion安装包(含常用插件、模型)】

img

【AI绘画12000+提示词库】

img

【AI绘画800+骨骼姿势图】

img

【AI绘画视频合集】

img

还有一些已经总结好的学习笔记,可以学到不一样的思路。

实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

这篇关于AIGC绘画设计基础——十分钟读懂Stable Diffusion的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1069791

相关文章

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

电脑死机无反应怎么强制重启? 一文读懂方法及注意事项

《电脑死机无反应怎么强制重启?一文读懂方法及注意事项》在日常使用电脑的过程中,我们难免会遇到电脑无法正常启动的情况,本文将详细介绍几种常见的电脑强制开机方法,并探讨在强制开机后应注意的事项,以及如何... 在日常生活和工作中,我们经常会遇到电脑突然无反应的情况,这时候强制重启就成了解决问题的“救命稻草”。那

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件