跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Stable Diffusion 模型原理与本地部署实践

Stable Diffusion 基于潜在扩散模型实现高分辨率图像合成。文章讲解其论文原理包括自编码压缩、潜在空间扩散及条件机制,并提供本地部署步骤。环境需 Python 及显卡支持,通过 git 拉取 webui 代码并运行 bat 脚本启动。支持提示词控制生成风格,可下载模型文件至指定目录。最终实现文本到图像的本地化生成。

Pythonist发布于 2026/4/9更新于 2026/7/2435 浏览
Stable Diffusion 模型原理与本地部署实践

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 应运而生,简称 SD 模型。

Stable Diffusion 的提出

Stable Diffusion 是一种基于扩散过程和自注意力机制的生成模型,旨在生成高质量的图像。它采用了一系列扩散步骤来逐渐生成图像,每个步骤中模型需要预测图像的条件分布,并生成下一个扩散步骤的输入。通过结合自注意力机制,Stable Diffusion 能够有效地捕捉图像中不同位置之间的关联信息,从而生成更加真实和细节丰富的图像。

Stable Diffusion 在图像生成领域的应用

Stable Diffusion 不仅可以用于生成高质量的图像,还可以应用于多种图像生成任务,包括图像修复、超分辨率重建、图像合成等。其灵活的生成过程和强大的生成能力使其成为图像生成领域的一项重要研究成果,并在各种实际应用中展现出巨大潜力。

在下文中,我们将更深入地探讨 Stable Diffusion 的工作原理、实现细节以及相关的实验结果,以帮助读者更好地理解这一新颖的生成模型,并探讨其在未来的发展方向和应用前景。

经过微调后 Stable Diffusion 模型可以生成各种风格的图像,先来看生成效果:

文章配图

文章配图

文章配图

上图是模型的框架图,模型的步骤和讲解如下:

  1. 训练自编码模型(AutoEncoder)

    • 首先,通过训练一个自编码模型,包括编码器和解码器部分。编码器负责将输入图像压缩成潜在表示(latent representation),而解码器则负责将潜在表示解码成原始像素空间的图像。
    • 这一步骤是为了将图像压缩到低维的潜在表示空间,为后续的 diffusion 操作做准备。
  • 感知压缩(Perceptual Compression)

    • 利用训练好的自编码模型对图片进行压缩,将其转换到潜在表示空间。
    • 在潜在表示空间上进行操作,这个过程被称为感知压缩,因为它通过自编码器模型来实现压缩,同时保留了重要的图像特征。
  • 潜在表示空间上的 diffusion 操作

    • 在潜在表示空间上进行 diffusion 操作,其过程与标准的扩散模型类似。
    • 扩散模型的具体实现为 time-conditional UNet,这是一种结合了时间条件信息的 UNet 结构,用于在潜在表示空间上进行图像生成。
  • 图片感知压缩

    图片感知压缩(Perceptual Image Compression)是一种通过忽略图像中的高频信息,保留重要和基础特征来实现高效压缩的方法。这种方法在生成模型中起到了关键作用,通过降低模型训练和采样的计算复杂度,使得模型能够在较短的时间内生成高质量的图像,从而降低了模型的落地门槛。

    方法原理

    • 感知压缩利用预训练的自编码模型(如变分自编码器,VAE)来学习图像的潜在表示空间。这个潜在表示空间是在感知上等同于图像空间的,但维度更低。
    • 在这个潜在表示空间中,自编码模型保留了图像的重要特征,同时忽略了一些不太重要的高频信息。这种压缩方式使得模型训练和采样的计算复杂度大幅降低。

    方法优势

    • 感知压缩只需要训练一个通用的自编码模型,就可以应用于不同的扩散模型训练中,也可以用于不同的图像生成任务。这种通用性使得该方法在多种场景下都十分有效。
    • 除了标准的无条件图像生成任务外,感知压缩还可以方便地应用于各种图像到图像(如修复、超分辨率重建)和文本到图像(如文本生成图像)的任务中。

    训练过程

    • 基于感知压缩的扩散模型的训练通常是一个两阶段的过程。首先,需要训练一个自编码器来学习图像的潜在表示空间。在这一阶段中,为了避免潜在表示空间出现高度的异化,通常会采用 KL 正则化(KL-reg)和矢量量化正则化(VQ-reg)等方法。
    • 在 Stable Diffusion 中,主要采用 AutoencoderKL 这种实现,这个实现结合了 KL 正则化的方法,用于训练自编码器。
    潜在扩散模型

    扩散模型可以被理解为一种时序去噪自编码器,其主要目标是根据输入图像去预测一个对应的去噪后的变体,或者说预测噪音,其中噪音是输入图像的噪音版本。其相应的目标函数可以被表述如下:

    文章配图

    这里,x_t 是模型预测的下一个时间步的图像,x_t-1 是当前时间步的输入图像,ε_t 是从均匀分布中采样得到的噪音。

    在潜在扩散模型中,引入了预训练的感知压缩模型。这个感知压缩模型包括一个编码器 E 和一个解码器 D。在训练过程中,编码器负责将输入图像压缩成潜在表示,解码器则负责将潜在表示解码成图像。这样,模型就能够在潜在表示空间中学习。相应的目标函数可以被表述如下:

    文章配图

    在这里,z_t 是模型预测的下一个时间步的潜在表示,x_t-1 是当前时间步的输入图像,E_ϕ 是编码器,D_ϕ 是解码器,ϕ是编码器和解码器的参数。这样的目标函数结构使得模型能够在潜在表示空间中进行操作,同时通过解码器将潜在表示转换回图像空间。

    条件机制

    通过引入条件信息来控制图片合成的过程。为了实现这一点,论文提出了拓展的条件时序去噪自编码器(conditional denoising autoencoder)。通过这种方法,我们可以引入条件变量 c,并将其作为输入来控制图像的生成过程。

    通过在 UNet 主干网络上增加 cross-attention 机制来实现条件图片生成。这个过程可以理解为,在生成图像的过程中,模型会重点关注与条件变量相关的信息,从而在图像生成过程中加入条件的影响。为了能够处理来自多个不同模态的条件变量,论文引入了一个领域专用编码器(domain specific encoder),用来将不同模态的条件变量 c 映射为一个统一的中间表示。这样一来,我们可以很方便地引入各种形态的条件,比如文本、类别、布局等等。

    总之,条件图片生成任务的目标函数可以根据模型的具体设计而有所不同,但通常会涉及到最小化生成图像与目标图像之间的差异,同时考虑到条件变量对图像生成过程的影响。

    实验结果

    文章配图

    模型生成效果如上图,展示了来自不同数据集(CelebAHQ、FFHQ、LSUN-Churches、LSUN-Bedrooms 和类别条件的 ImageNet)上训练的 LDMs(Latent Diffusion Models)生成的样本。这些样本的分辨率均为 256×256 像素。

    文章配图

    这个图表展示了在 ImageNet 数据集上,通过观察类别条件下的不同下采样因子 f,对类别条件下的扩散模型(LDM,Latent Diffusion Models)进行训练的情况。图中显示了在进行了 200 万个训练步骤后的结果。这些模型使用了不同的下采样因子(如 LDM-1、LDM-4、LDM-16 等),这直接影响了模型的感知压缩程度。

    文章配图

    展示了在 CelebA-HQ 和 ImageNet 数据集上,不同压缩程度的 LDMs(Latent Diffusion Models)在推断速度和样本质量之间的比较。图中的左侧部分是 CelebA-HQ 数据集的结果,右侧部分是 ImageNet 数据集的结果。不同的标记代表使用 DDIM 采样器进行的{10、20、50、100、200}个采样步骤,沿着每条线从右到左进行计数。

    代码复现

    环境配置

    基本的环境配置要点如下:

    • 最好使用显卡的电脑,没有显卡 SD 模型生成图像较慢。
    • 电脑能够访问 github,并安装 git 工具,方便下载代码。
    • 安装好编程语言工具 python,可以直接安装,也可以使用 Conda 环境。
    1. 在 Windows 下需要配置有 Python 环境,建议使用 Conda 环境
    # 创建一个 sd 环境,方便后续安装包
    conda create -n sd python=3.10.9
    # 激活 sd 环境
    activate sd
    
    1. 拉取官方的代码
    git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
    
    1. 安装代码运行所需要的包(已成功下载官方代码或者下载了代码包)

    成功下载代码包后,打开"stable-diffusion-webui"文件夹,点击 webui-user.bat 文件,一定注意点击 webui-user.bat,后缀是 bat 的文件(Windows 安装文件),而不是 sh 的(sh 是 Linux 的安装文件)。

    文章配图

    安装一般需要等待 1 个半小时左右,耐心等待安装结束。

    安装结束,一般浏览器会自动打开网页,如果没有打开,请在浏览器输入 http://127.0.0.1:7860,正常运行,命令行页面提示的地址。

    文章配图

    即可见到启动页面。

    下面是官方代码的启动页面。

    文章配图

    提示词准备

    提示词可以根据用户自己的喜好设定,比如设置生成猫狗的图像、动漫图像。不过提示词的设定是一门技术,好的提示词,能够引导模型生成符合要求的图像。提示词要是英文的。

    这里有一个提示词和模型下载网站 https://civitai.com/,在这个网站上可以下载自己喜欢风格的模型,也可以方便获取提示词,可以基于别人写好的提示词修改。

    下面就是一个'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 论文 链接

    目录

    1. Stable Diffusion 模型原理与本地部署实践
    2. 论文讲解
    3. 背景介绍
    4. 图片感知压缩
    5. 潜在扩散模型
    6. 条件机制
    7. 实验结果
    8. 代码复现
    9. 环境配置
    10. 创建一个 sd 环境,方便后续安装包
    11. 激活 sd 环境
    12. 提示词准备
    13. 模型下载
    14. 生成图像
    15. 绘画效果
    16. 总结
    17. 参考链接
    • 免费图片AI生成工具免费生成了解详情
    • Magick API 一键接入全球大模型注册送1000万token查看
    • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
    • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
    • 100+免费在线小游戏爽一把
    极客日志微信公众号二维码

    微信扫一扫,关注极客日志

    微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

    更多推荐文章

    查看全部
    • everything-claude-code 配置详解:构建规范化 AI 开发工作流
    • Spring Cloud LoadBalancer 负载均衡实战与原理
    • AI Coding 详解:定义、核心能力与实际价值
    • 新版 VS Code 禁用 Ctrl+I 快捷键调用 Copilot AI 功能
    • Ubuntu 22.04 升级 Node.js 版本方法
    • 飞算 JavaAI 智能编程助手简介
    • LLaMaFactory 云端环境微调大模型实战
    • 基于 Cosmos-Reason1-7B 的机器人抓取物理推理分析
    • learn-claude-code 开源项目解析:AI Agent 原理与实战入门
    • 国内环境部署 OpenClaw 个人 AI 助手搭建指南
    • JBPM 流程定义管理与操作实践
    • OpenClaw 跨平台安装指南:Windows、macOS 与 Linux 全方案
    • Spring Boot 4.0 + Java 21 + Spring AI 2.0 大模型面试辅助平台实战
    • Git 多环境开发:VSCode 智能工作树支持全解析
    • Linux TCP 协议详解:报文结构、连接状态与流量控制
    • 实战:手写通用 Web 层鉴权注解,解决水平权限漏洞
    • Java Web 开发实战:数据库操作与会话技术
    • Web 可访问性最佳实践:构建人人可用的前端界面
    • 基于 Java 与 Leaflet 的湖南省道路长度 WebGIS 系统构建
    • 链表经典 OJ 题目实战解析

    相关免费在线工具

    • 加密/解密文本

      使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

    • RSA密钥对生成器

      生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

    • Mermaid 预览与可视化编辑

      基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

    • 随机西班牙地址生成器

      随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

    • Gemini 图片去水印

      基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

    • curl 转代码

      解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online