Stable Diffusion 模型简介
AI 绘画一键生成美图,本地部署 SD 模型即可绘制所需图像。本文包含论文原理讲解和代码复现。
Stable Diffusion 基于潜在扩散模型(LDM),通过自编码器和去噪 UNet 在潜在空间进行图像生成。本文讲解其核心原理包括感知压缩、条件机制及实验结果,并提供本地部署步骤。涵盖环境配置、WebUI 启动、提示词编写及模型管理,帮助用户实现高质量的 AI 图像生成。

Stable Diffusion 模型简介
AI 绘画一键生成美图,本地部署 SD 模型即可绘制所需图像。本文包含论文原理讲解和代码复现。
论文题目:High-Resolution Image Synthesis with Latent Diffusion Models(基于潜在扩散模型的高分辨率图像合成)
该论文被计算机视觉顶会 CVPR 2022 收录。
Stable Diffusion 是一个基于 Latent Diffusion Models(潜在扩散模型,LDMs)的文图生成(text-to-image)模型。它建立在自注意力机制和扩散过程的基础上。设计灵感来自于扩散过程模型(Diffusion Models),这些模型在自然图像建模领域取得了巨大成功。
Stable Diffusion 通过一系列的扩散步骤来生成图像。在每一步中,模型逐渐'扩散'图像,从含有较少信息的噪声开始,到包含更多细节的图像。在每个扩散步骤中,模型需要预测图像的条件分布,并根据这个条件分布生成下一个扩散步骤的输入。
在生成模型的研究中,扩散过程模型和自注意力机制是两个备受关注的领域。扩散过程模型是一种基于随机过程的生成模型,通过模拟随机过程的演化来生成图像。而自注意力机制则是一种强大的神经网络组件,能够有效地捕捉输入序列中不同位置之间的依赖关系。
近年来,研究人员开始探索如何将扩散过程模型和自注意力机制结合起来,以进一步提高生成模型的性能和生成图像的质量。在这个背景下,Stable Diffusion 应运而生。
Stable Diffusion 的提出
Stable Diffusion 是一种基于扩散过程和自注意力机制的生成模型,旨在生成高质量的图像。通过结合自注意力机制,Stable Diffusion 能够有效地捕捉图像中不同位置之间的关联信息,从而生成更加真实和细节丰富的图像。
Stable Diffusion 在图像生成领域的应用
Stable Diffusion 不仅可以用于生成高质量的图像,还可以应用于多种图像生成任务,包括图像修复、超分辨率重建、图像合成等。
在下文中,我们将更深入地探讨 Stable Diffusion 的工作原理、实现细节以及相关的实验结果。
经过微调后 Stable Diffusion 模型可以生成各种风格的图像。
上图是模型的框架图,模型的步骤和讲解如下:
训练自编码模型(AutoEncoder)
感知压缩(Perceptual Compression)
潜在表示空间上的 diffusion 操作
图片感知压缩(Perceptual Image Compression)是一种通过忽略图像中的高频信息,保留重要和基础特征来实现高效压缩的方法。
方法原理
方法优势
训练过程
扩散模型可以被理解为一种时序去噪自编码器,其主要目标是根据输入图像去预测一个对应的去噪后的变体,或者说预测噪音。
在潜在扩散模型中,引入了预训练的感知压缩模型。这个感知压缩模型包括一个编码器 E 和一个解码器 D。在训练过程中,编码器负责将输入图像压缩成潜在表示,解码器则负责将潜在表示解码成图像。
通过引入条件信息来控制图片合成的过程。为了实现这一点,论文提出了拓展的条件时序去噪自编码器(conditional denoising autoencoder)。
通过在 UNet 主干网络上增加 cross-attention 机制来实现条件图片生成。为了能够处理来自多个不同模态的条件变量,论文引入了一个领域专用编码器(domain specific encoder),用来将不同模态的条件变量映射为一个统一的中间表示。
模型生成效果展示了来自不同数据集上训练的 LDMs 生成的样本。这些样本的分辨率均为 256×256 像素。
图表展示了在 ImageNet 数据集上,通过观察类别条件下的不同下采样因子 f,对类别条件下的扩散模型进行训练的情况。图中显示了在进行了 200 万个训练步骤后的结果。
图表展示了在 CelebA-HQ 和 ImageNet 数据集上,不同压缩程度的 LDMs 在推断速度和样本质量之间的比较。
基本的环境配置要点如下:
# 创建一个 sd 环境,方便后续安装包 conda create -n sd python=3.10.9
# 激活 sd 环境 activate sd
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
成功下载代码包后,打开"stable-diffusion-webui"文件夹,点击 webui-user.bat 文件(Windows 安装文件),而不是 sh 的(sh 是 Linux 的安装文件)。
安装一般需要等待一段时间,耐心等待安装结束。
安装结束,一般浏览器会自动打开网页,如果没有打开,请在浏览器输入 http://127.0.0.1:7860,正常运行,命令行页面提示的地址。
即可见到启动页面。
下面是官方代码的启动页面,支持中英文双语界面,方便使用。
提示词可以根据用户自己的喜好设定,比如设置生成猫狗的图像、动漫图像。不过提示词的设定是一门技术,好的提示词,能够引导模型生成符合要求的图像。提示词要是英文的。
可以从相关社区获取提示词和模型,也可以基于别人写好的提示词修改。
下面就是一个'majicMIX realistic 麦橘写实'的模型,可以生成写实风格的图像。
提示词一般要准备正面提示词和负面提示词。
正面提示词(我们想要的内容)例如:
1girl,hair with bangs,black long dress,orange background,
负面提示词(我们不要的内容)例如
(worst quality:2),(low quality:2),(normal quality:2),lowres,watermark,
准备好提示词,我们就可以设置模型生成的参数。
生成的参数控制模型的应该怎样生成。
针对不同风格图像要有不同的参数。
下载模型文件 majicmixRealistic_v7.safetensors 到 stable-diffusion-webui\models\Stable-diffusion 文件夹下。
放在 stable-diffusion-webui\models\Stable-diffusion 文件夹下,一定要注意,放在该文件夹,才能检测到。
以上都设置完毕后,即可点击生成按钮,开始绘画。
点击生成按钮生成效果如下所示。
下面是生成图像的高清图。
本次绘画过程中,共进行 6 次生成,除第一次生成效果不太好外,其余效果都很好,可以生成根据提示不同风格的图像。
以上就是 Stable diffusion 模型的论文和代码复现的讲解。
这篇论文和代码,都是很好玩的,可以帮助我们绘制想要的图画,满足我们一键成为画家的愿望。
Stable Diffusion 论文 链接

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online