Stable Diffusion 是一个开源机器学习框架,旨在根据文本描述生成高质量图像。它采用一种独特的方法,将变分自动编码器与扩散模型相结合,使其能够将文本转换为复杂的视觉表示。
Stable Diffusion 的开发代表了生成式人工智能领域的重大进步,为创意人员、设计师和开发者提供了一个免费、开放的图像创作工具。通过输入简单的文本提示,用户可以创作出从写实照片到各种风格的艺术作品。
Stable Diffusion 的高级用户可能希望针对特定用例训练自己的、经过微调的模型版本。我们将展示一个动手教程,介绍如何使用开源、无代码工具实现此目的。
在本文中:
稳定扩散架构和概念
下图中 Hugging Face 展示了稳定扩散架构。我们来简单回顾一下关键组件。
来源:Hugging Face
变分自动编码器
稳定扩散架构中的变分自动编码器 (VAE) 用于学习训练图像的分布。它的工作原理是将输入图像编码到低维潜在空间中,捕捉其基本特征。此编码过程使模型能够通过从潜在空间采样来生成新图像,从而有效地学习重现输入数据的多样性和复杂性。VAE 在数据表示和生成方面的效率对于模型根据文本描述生成高质量、多样化图像的能力至关重要。
正向扩散
稳定扩散中的正向扩散过程会逐渐将噪声引入图像,使其从有序状态变为无序状态。图像细节的这种逐步退化模拟了从连贯图像到随机噪声模式的过渡。通过仔细控制此过程,模型可以学习识别和理解图像的底层结构。这些知识对于反向扩散阶段至关重要,在该阶段,模型会根据文本提示从噪声中重建图像,确保生成的图像既多样化又与输入描述一致。
逆向扩散
在反向扩散阶段,稳定扩散执行正向过程的逆过程。从随机噪声开始,它逐步消除噪声以合成与提供的文本提示相匹配的图像。此阶段至关重要,因为它利用学习到的表示来引导噪声重新转换为连贯的视觉内容。通过一系列迭代,模型可以微调细节,调整颜色、形状和纹理以与描述保持一致,从而有效地使文本提示变得生动逼真。
噪声预测器(U-Net)
基于 U-Net 架构的噪声预测器是稳定扩散的核心组件,用于估算反向扩散过程每一步需要消除的噪声量。它充当模型的直觉,确定如何细化噪声图像以获得与文本提示相匹配的最终详细输出。U-Net 能够处理整体结构和精细细节,这是生成高质量图像的关键,这些图像可以忠实反映用户指示的所需内容、风格和情绪。
文本调节
Stable Diffusion 中的文本调节涉及将文本提示嵌入到模型可以理解并用于指导图像生成的格式中。此过程可确保输出图像不仅仅是随机创作,而且与输入文本中描述的主题、主题和风格紧密相关。通过有效地将文本描述转化为视觉提示,该模型可以生成准确反映用户意图的图像,从特定的对象和场景到抽象的概念和艺术风格。
使用基本稳定扩散模型您可以做什么?
Stable Diffusion 的基础模型(例如 XL 1.0 或较新的 SD 3.0)是多功能工具,能够生成各种风格的图像,从照片写实到动画和数字艺术。这些模型旨在将文本提示转换为图像,具有通用功能,适用于各种创意和实际应用。
用户可以利用这些模型来制作各种内容,而无需专门训练图像创建技术。例如,基础模型可以直接根据文本描述创建艺术品、设计元素和视觉概念,为用户探索 AI 生成的图像提供了一个便捷的切入点。
尽管基础模型功能多样,但它们在特定任务上仍存在局限性。虽然它们可以生成各种风格的图像,但要在特定类型或风格(如经典动漫)中实现高保真度,可能需要大量的提示和微调。
为什么要训练自己的模型?
在稳定扩散基础模型上训练自己的模型,可以针对特定需求或风格生成专门化和细化的图像。将专门的风格教给稳定扩散的常用方法是Dreambooth。
例如,通过使用专注于特定主题(例如野生动物)的附加数据集来训练 SD XL 1.0 等基础模型,经过微调的模型可以增强生成与期望结果紧密一致的图像的能力,从而以最小的努力生成更准确、风格更一致的图像。
这种微调过程将通用基础模型转变为专业模型,能够理解并以高保真度复制特定的视觉风格或主题。创建微调模型(包括使用 LoRA(局部接受注意)和 LyCORIS 等先进技术)进一步缩小了焦点,从而可以生成具有高度特定风格的图像。
例如,使用 LoRA 或 LyCORIS,您可以在视觉效果中注入虚构的角色、修改角色的服装、向背景添加特定元素或添加汽车或建筑物等物体。
例如,Jake Dahn说明了如何使用 LoRA 通过使用他自己的图像对模型进行微调来生成各种风格的详细自画像。
教程:本地训练自己的稳定扩散模型
要求
本教程主要基于使用 Windows 10 测试的设置,但我们将要使用的工具和软件与 Linux、Windows 和 Mac 平台兼容。
关键的硬件要求是至少具有 6-7GB VRAM 的 GPU。虽然此设置可能不足以运行纯 Dreambooth 任务,但结合 LoRA(局部接受注意)可实现这一点。
在软件方面,要求包括:
- Python 3.10:确保在安装过程中选择将 Python 添加到 PATH并支持 TCL/Tk。
- Git:克隆所需存储库所必需。
步骤 1:推理
使用稳定扩散进行推理涉及根据模型的理解生成新图像。该设置利用开源稳定扩散 Web UI。首先,使用以下命令克隆存储库:
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
克隆后,导航到stable-diffusion-webui
目录并执行webui-user.bat
(对于 Windows)或webui-user.sh
(对于 Linux)。此操作将启动一个命令窗口,该窗口执行初始设置任务,并最终显示一条消息,指示可访问 Web UI 的本地 URL(例如http://127.0.0.1:7860
)。
通过访问此URL,您可以探索Stable Diffusion的推理功能,输入文本提示即可根据您的规范生成图像。
第 2 步:训练
本部分使用开源工具kohya_ss,其中包含 Dreambooth 的实现,并允许您个性化您的模型。安装涉及使用以下命令克隆存储库:
git clone https://github.com/bmaltais/kohya_ss.git
在 kohya_ss 目录中,通过运行 setup.bat 启动安装程序,它将引导您完成一系列配置选项,包括选择 PyTorch 版本以及是否使用 GPU 资源。安装脚本可能会提示您选择卸载以前的文件、分布式训练和优化选项等。
要开始训练,请导航到训练目录并执行:
#On Windows
.\gui.bat --listen 127.0.0.1 --server_port 7860 --inbrowser
#On Linux
./gui.sh --listen 127.0.0.1 --server_port 7860 --inbrowser
此命令将启动训练 Web UI。在 Dreambooth LoRA选项卡中,通过指定实例提示(模型焦点的唯一标识符)、类提示(焦点的一般类别,例如动物或人)以及训练图像和目标目录的路径来设置训练。
配置完成后,启动训练过程,该过程的持续时间可能根据硬件功能而有所不同。
注意:如果您希望 UI 可在公共网络上访问,请使用以下命令启动 GUI:./gui.sh --share
步骤 3:对个性化模型进行推理
训练后,将您的自定义模型与 Stable Diffusion Web UI 集成以进行推理。这涉及将文件last.safetensors
从训练输出移动到stable-diffusion-webui/models/LoRA
目录。
重新启动推理 Web UI。不要像往常一样单击“生成”,而是单击其下方的小按钮:共享/隐藏额外网络。这将在 LoRA 选项卡下显示一个新部分,您可以在其中看到您的个性化模型。
单击它,类似的字符串<lora:last:1>
将添加到您的提示中,告诉系统在基础模型上使用您的专用模型。
就这样!您已经在 Stable Diffusion 上训练了一个定制的 Dreambooth 模型。