手把手教你入门绘图超强的AI绘画,用户只需要输入一段图片的文字描述,即可生成精美的绘画。给大家带来了全新保姆级教程资料包 (文末可获取)
2022年绝对是人工智能爆发的元年,前有 stability.ai 开源 Stable Diffusion 模型,后有 Open AI 发布 ChatGPT,二者都是里程碑式的节点事件,其重要性不亚于当年苹果发布iPhone,Google推出Android。它们让AI不再是一个遥不可及的技术名词,而是触手可及、实实在在的智能应用工具。
不同于ChatGPT可以直接体验,Stable Diffusion需要自己部署后才能使用,所以国内了解的人还不多。但Stable Diffusion绝对是AI图像生成领域的ChatGPT级的杀手产品——它使用超级简单、完全开源免费,生成的图片以假乱真、震惊四座。今天,我将用万字保姆级教程教你如何一步一步在本地运行起Stable Diffusion,并手把手教你如何生成以假乱真的AI生成图片。
文章目录
-
- 什么是Stable Diffusion
-
- 核心概念
-
- 自动编码器
- U-Net
- 文本编码器
- 推理过程
- 快速体验Stable Diffusion
-
- 1. Dream Studio
- 2. Replicate
- 3. Playground AI
- 4. Google Colab
- 5. BaseTen
- 本地部署Stable Diffusion
-
- 系统配置需求
- 环境准备
-
- 安装Git
- 安装Python
- 配置国内源
- 安装Stable Diffusion Web Ui
- 模型安装
- 使用Stable Diffusion Web Ui
-
- 界面介绍
-
- txt2img
- img2img
- 界面汉化
- prompt语法
- 示例
-
- 模型
- Prompt
- Negative prompt
- 参数设置
- 生成
- Stable Diffusion资源列表
-
- 1. Hugging Face
- 2. Civitai
- 3. Discord
- 4. Rentry for SD
什么是Stable Diffusion
Stable Diffusion是一种潜在扩散模型(Latent Diffusion Model),能够从文本描述中生成详细的图像。它还可以用于图像修复、图像绘制、文本到图像和图像到图像等任务。简单地说,我们只要给出想要的图片的文字描述在提Stable Diffusion就能生成符合你要求的逼真的图像!
Stable Diffusion将“图像生成”过程转换为逐渐去除噪声的“扩散”过程,整个过程从随机高斯噪声开始,经过训练逐步去除噪声,直到不再有噪声,最终输出更贴近文本描述的图像。这个过程的缺点是去噪过程的时间和内存消耗都非常大,尤其是在生成高分辨率图像时。Stable Diffusion引入潜在扩散来解决这个问题。潜在扩散通过在较低维度的潜在空间上应用扩散过程而不是使用实际像素空间来减少内存和计算成本。
与DALL·E和Midjourney相比,Stable Diffusion最大的优势是开源,这就意味着Stable Diffusion的潜力巨大、发展飞快。Stable Diffusion已经跟很多工具和平台进行了集成,且可用预训练模型数量众多(参见Stable Diffusion资源列表)。正是由于社区的活跃,使得Stable Diffusion在各种风格的图像生成上都有着出色的表现,随便给大家看几张我生成的图片:
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
核心概念
为了方便大家更好地理解后面的内容,下面对Stable Diffusion中的几个核心概念做简单的说明。Stable Diffusion的详细原理请参考《Stable Diffusion原理详解》。
自动编码器
自动编码器 (VAE) 由两个主要部分组成:编码器和解码器。编码器会将图像转换为低维潜在表示(像素空间–>潜在空间),该表示将作为输入传递给U_Net。解码器做的事情刚好相反,将潜在表示转换回图像(潜在空间–>像素空间)。
自动编码/解码器
U-Net
U-Net 也由编码器和解码器组成,两者都由 ResNet 块组成。编码器将图像表示压缩为较低分辨率的图像,解码器将较低分辨率解码回较高分辨率的图像。
U-Net架构
为了防止 U-Net 在下采样时丢失重要信息,通常在编码器的下采样 ResNet 和解码器的上采样 ResNet 之间添加快捷连接。
此外,Stable Diffusion 中的 U-Net 能够通过交叉注意力层调节其在文本嵌入上的输出。 交叉注意力层被添加到 U-Net 的编码器和解码器部分,通常在 ResNet 块之间。
文本编码器
文本编码器会将输入提示转换为 U-Net 可以理解的嵌入空间。一般是一个简单的基于Transformer的编码器,它将标记序列映射到潜在文本嵌入序列。
文本编码器
好的提示(prompt)对输出质量直观重要,这就是为什么现在大家这么强调提示设计(prompt design)。提示设计就是要找到某些关键词或表达方式,让提示可以触发模型产生具有预期属性或效果的输出。
推理过程
Stable Diffusion的大致工作流程如下:
首先,Stable Diffusion模型将潜在种子和文本提示作为输入。 然后使用潜在种子生成大小为 64×64 的随机潜在图像表示,而文本提示通过 CLIP 文本编码器转换为 77×768 的文本嵌入。
接下来,U-Net 以文本嵌入为条件迭代地对随机潜在图像表示进行去噪。 U-Net 的输出是噪声残差,用于通过调度算法计算去噪的潜在图像表示。 调度算法根据先前的噪声表示和预测的噪声残差计算预测的去噪图像表示。这里可选用的调度算法很多,每个算法各有优劣,对Stable Diffusion来说建议用以下几个:
去噪过程重复大约 50 次以逐步检索更好的潜在图像表示。 完成后,潜在图像表示由变分自动编码器的解码器部分解码。
整体流程可以用下面的流程图表示:
Stable Diffusion工作流程