菜单

文本到图像生成

相关源文件

目的与范围

本文档介绍了如何使用 Stable Diffusion 模型进行文本到图像的生成。它涵盖了使用 txt2img.py 脚本将文本提示转换为图像的过程,解释了命令行选项,并详细介绍了底层的技术流程。有关使用文本提示修改现有图像的信息,请参阅 图像到图像修改

来源: README.md75-78 README.md85-101

概述

Stable Diffusion的文本到图像生成通过使用条件化于CLIP ViT-L/14文本编码器的文本嵌入的潜在扩散模型,将文本描述转换为高质量图像。该模型在压缩的潜在空间中运行,与像素空间扩散模型相比,计算效率更高。

高层文本到图像流程

来源: README.md14-20 README.md79-80

基本用法

文本到图像生成的主要界面是位于 scripts 目录中的 txt2img.py 脚本。最基本的使用方法是提供文本提示来生成图像。

默认情况下,这将

  • 使用 50 次 DDIM 采样步
  • 生成 3 张 512×512 分辨率的图像
  • 使用 7.5 的引导比例
  • 将单个图像和网格图像保存在 outputs/txt2img-samples 目录中

来源: README.md100-104 scripts/txt2img.py98-235

命令行参数

txt2img.py 脚本接受许多参数来定制生成过程。

参数描述默认
--prompt用于图像生成的文本描述"一幅描绘病毒怪物弹吉他的画"
--outdir生成图像的输出目录"outputs/txt2img-samples"
--ddim_steps去噪步数50
--plms使用 PLMS 采样器而非 DDIM
--dpm_solver使用 DPM-Solver 采样器
--H图像高度(像素)512
--W图像宽度(像素)512
--scale无条件引导比例7.5
--seed用于可重现性的随机种子42
--n_samples每个提示的图像数量(批次大小)3
--n_iter批次迭代次数2
--from-file从文本文件中加载提示None
--fixed_code为所有样本使用相同的起始噪声
--skip_grid跳过保存所有图像的网格
--skip_save跳过保存单个图像

来源: scripts/txt2img.py98-235 README.md107-140

实现细节

代码级流程

下图说明了 txt2img.py 的核心代码执行流程。

来源: scripts/txt2img.py98-348

采样器选择及关系

该脚本支持三种不同的采样器,每种都有不同的特性。

  • DDIMSampler:默认采样器,实现 Denoising Diffusion Implicit Models 方法。
  • PLMSSampler:替代采样器,可以用更少的步数获得良好的结果。
  • DPMSolverSampler:较新的采样器,效率更高。

来源: scripts/txt2img.py251-256 README.md103

关键技术组成部分

无条件引导

文本到图像的扩散模型使用无分类器引导来提高对文本提示的遵循度。实现方式计算

ε_θ(x_t, c) = ε_θ(x_t, ∅) + scale * (ε_θ(x_t, c) - ε_θ(x_t, ∅))

其中

  • ε_θ(x_t, c) 为带有文本条件的噪声预测
  • ε_θ(x_t, ∅) 为无条件(空提示)的噪声预测
  • scale 为引导比例(默认值:7.5)

这在代码中通过生成有条件和无条件的预测,然后根据比例参数在它们之间进行插值来实现。

来源: scripts/txt2img.py296-301 scripts/txt2img.py200-204

安全检查

check_safety() 函数使用 Stable Diffusion 安全检查模型来检测潜在的不安全内容。对于检测到的不安全图像,它会用安全的替代图像替换它们。

来源: scripts/txt2img.py88-95 scripts/txt2img.py317

水印

所有生成的图像都会添加一个不可见的水印,以帮助识别它们是 AI 生成的内容。这是通过 imwatermark 库中的 WatermarkEncoder 类来实现的。

来源: scripts/txt2img.py69-74 scripts/txt2img.py261-264

高级用法示例

从不同提示生成多张图像

要从存储在文本文件中的多个提示生成图像

其中 prompts.txt 文件每行包含一个提示。

控制随机性

要确保结果可重现,请设置一个特定的种子。

要生成同一构图的变体,请使用 --fixed_code 标志。

调整图像质量和生成时间

为了获得更高质量(但生成速度较慢)的生成效果

为了更快的(但质量可能较低的)生成效果

来源: README.md85-101 scripts/txt2img.py293-343

总结

Stable Diffusion 的文本到图像生成功能实现在 txt2img.py 脚本中,它提供了一种灵活强大的方式,可以根据文本描述生成图像。该过程包括文本编码、引导式潜在扩散、解码、安全检查和水印。通过调整各种参数,用户可以控制生成图像的质量、风格和内容。

来源: README.md14-20 README.md79-104