如何在本地运行稳定扩散模型
推荐基于稳定扩散(stable diffusion) AI 模型开发的自动纹理工具:DreamTexture.js自动纹理化开发包 - NSDT
继 DALL-E 2 和 Imagen 之后,新的深度学习模型 Stable Diffusion 标志着文本到图像领域的巨大飞跃。本月早些时候发布的 Stable Diffusion 承诺通过在消费级 GPU 上运行足够高效,使文本条件图像生成民主化。就在本周一,Stable Diffusion 检查点首次发布,这意味着现在,您只需几句话和几分钟的时间即可生成如下图像。
本文将向您展示如何在 GPU 和 CPU 上安装和运行 Stable Diffusion,以便您可以开始生成自己的映像。让我们开始吧!
想了解 Stable Diffusion 的工作原理吗?
查看我们关于物理学如何推进生成式 AI 的文章,直观地解释 Stable Diffusion 等扩散模型。
在 Colab 中使用 Stable Diffusion
在我们了解如何在本地安装和运行 Stable Diffusion 之前,您可以查看下面的 Colab 笔记本,以了解如何在非本地使用 Stable Diffusion。请注意,您将需要 Colab Pro 才能生成新图像,因为 Colab 的免费版本的 VRAM 略小,无法进行采样。
如果您没有 Colab Pro,您也可以在 Colab 的 CPU 上运行 Stable Diffusion,但请注意,图像生成将花费相对较长的时间(8-12 分钟):
您还可以在 YouTube 上查看我们的稳定扩散教程,了解使用 GPU 笔记本的演练。
如何安装 Stable Diffusion (GPU)
你将需要一个基于 UNIX 的操作系统来学习本教程,因此,如果你有一台 Windows 计算机,请考虑使用虚拟机或 WSL2。
第 1 步:安装 Python
首先,通过在终端中键入内容来检查系统上是否安装了 Python。如果返回 Python 版本,请继续执行下一步。否则,请使用python --version
第 2 步:安装 Miniconda
接下来,我们需要确保安装了包/环境管理器 conda。进入终端。如果返回 conda 版本,请继续执行下一步。conda --version
否则,请转到 conda 网站,下载并运行适用于您的 Python 版本和操作系统的 Miniconda 安装程序。对于 Python3.8,您可以使用以下命令下载并运行安装程序:
按住 Enter 键以通过许可证,然后在出现提示时键入“yes”以继续。接下来,按 Enter 确认安装位置,然后在询问安装程序是否应初始化 Miniconda 时键入“yes”。最后,关闭终端,然后打开一个新终端,在其中安装 Stable Diffusion。
第 3 步:克隆稳定的扩散存储库
现在我们需要克隆 Stable Diffusion 存储库。在终端中,执行以下命令:
如果您没有 git,则需要使用 .在克隆存储库之前,请确保阅读并接受 Stable Diffusion 许可证。sudo apt install git
步骤 4:创建 Conda 环境
接下来,我们需要创建一个 conda 环境,其中包含运行 Stable Diffusion 所需的所有包。执行以下命令以创建并激活此环境,名为ldm
第 5 步:下载稳定的扩散砝码
现在,我们正在适当的环境中使用 Stable Diffusion,我们需要下载运行它所需的权重。如果您尚未阅读并接受 Stable Diffusion 许可证,请务必立即阅读并接受。已经发布了几个 Stable Diffusion 检查点版本。较高的版本号已在更多数据上进行了训练,并且通常比较低的版本号性能更好。我们将使用检查点 v1.4。使用以下命令下载权重:
这就是我们开始使用 Stable Diffusion 所需的所有设置!请继续阅读,了解如何使用模型生成图像。
如何生成具有稳定扩散 (GPU) 的图像
要使用 Stable Diffusion 生成图像,请打开终端并导航到目录。通过执行命令确保您处于正确的环境中。stable-diffusionconda activate ldm
若要生成映像,请运行以下命令:
故障 排除
替换为要为其生成图像的标题的位置(保留引号)。在提示“蜥蜴骑滑雪板穿越太空的逼真蒸汽波图像”的情况下运行此命令将输出以下图像:YOUR-PROMPT-HERE
上图是在 GCP 中使用 Ubuntu 18.04 VM 和 NVIDIA Tesla K80 在大约一分钟内生成的。
脚本选项
您可以使用多个命令行参数自定义此脚本,以根据需要定制结果。让我们来看看一些可能会派上用场的:
--prompt
后跟引号中的句子将指定为其生成图像的提示。默认值为“弹吉他的病毒怪物的画作”。--from-file
指定用于为其生成图像的提示文件的 FilePath。--ckpt
后跟一个路径,指定要使用的模型检查点。缺省值为 。models/ldm/stable-diffusion-v1/model.ckpt
--outdir
后跟路径将指定要保存生成图像的输出目录。缺省值为 。outputs/txt2img-samples
--skip_grid
将跳过创建合并的图像。--ddim_steps
后跟一个整数,指定扩散过程中的采样步骤数。增加此数字将增加计算时间,但可能会改善结果。默认值为 50。--n_samples
后跟一个整数指定每个给定提示要生成的样本数(批处理大小)。默认值为 3。--n_iter
后跟一个整数,指定运行采样循环的次数。实际上与 相同,但如果遇到 OOM 错误,请使用它。有关说明,请参阅源代码。默认值为 2。--n_samples
--H
后跟一个整数,指定生成图像的高度(以像素为单位)。默认值为 512。--W
后跟一个整数,指定生成图像的宽度(以像素为单位)。默认值为 512。--scale
后跟浮点数指定要使用的指导比例。默认值为 7.5--seed
后跟一个整数允许设置随机种子(以获得可重现的结果)。默认值为 42。
您可以在文件中看到具有默认值的可能参数的完整列表。现在,让我们看到使用这些可选参数的更复杂的生成提示。txt2img.py
在目录中,创建一个名为 .创建多个提示,文件的每一行一个提示。例如:stable-diffusionprompts.txt
现在,在终端的目录中,运行stable-diffusion
每个标题的两个结果图像可以在下面看到。上面的命令旨在用作使用更多命令行参数的示例,而不是最佳参数的示例。一般来说,经验发现较大的图像质量更高,图像/标题相似度更高,较低的引导比例可能会产生更好的结果。继续阅读下一节,了解有关改善稳定扩散结果的更多信息。
如何安装 Stable Diffusion (CPU)
第 1 步:安装 Python
首先,通过在终端中键入内容来检查系统上是否安装了 Python。如果返回 Python 版本,请继续执行下一步。否则,请使用python --version
第 2 步:下载存储库
现在我们需要克隆 Stable Diffusion 存储库。我们将使用一个可以容纳 CPU 推理的 fork。在终端中,执行以下命令:
如果您没有 git,则需要使用 .在克隆存储库之前,请确保阅读并接受 Stable Diffusion 许可证。sudo apt install git
第 3 步:安装要求
安装所有必要的要求
请注意,Scipy 版本 1.9.0 是列出的要求,但它与旧版本的 python 不兼容。您可能需要通过编辑来更改 Scipy 版本,例如 在运行上述命令之前。requirements.txtscipy==1.7.3
第 4 步:下载稳定的扩散砝码
现在,我们正在适当的环境中使用 Stable Diffusion,我们需要下载运行它所需的权重。如果您尚未阅读并接受 Stable Diffusion 许可证,请务必立即阅读并接受。已经发布了几个 Stable Diffusion 检查点版本。较高的版本号已在更多数据上进行了训练,并且通常比较低的版本号性能更好。我们将使用检查点 v1.4。使用以下命令下载权重:
这就是我们开始使用 Stable Diffusion 所需的所有设置!请继续阅读,了解如何使用模型生成图像。
如何生成具有稳定扩散 (CPU) 的图像
现在一切都已安装完毕,我们准备使用 Stable Diffusion 生成图像。要生成图像,只需运行以下命令,将提示更改为所需的任何内容。
推理时间大约为 8-12 分钟,因此在 Stable Diffusion 运行时,请随时喝杯咖啡。下面我们可以看到运行上述命令的输出:
技巧和窍门
当您开始使用 Stable Diffusion 时,请在探索时牢记这些提示和技巧。
快速工程
文本到图像模型的结果可能对用于描述所需场景的措辞很敏感。提示工程是定制提示以获得所需结果的实践。例如,如果生成的图像质量较低,请尝试在标题前面加上“an image of”。您还可以指定不同的样式和媒介,以实现不同的效果。查看以下每个下拉菜单以获取想法:
图像类型:
尝试在标题前面加上以下内容之一,以获得不同的效果:
风格
您可以指定不同的样式来实现不同的结果。尝试将以下一个或多个形容词添加到提示中并观察效果。
美学
您也可以尝试指定不同的美学。尝试将以下一个或多个形容词添加到提示中并观察效果。
艺术家
您甚至可以尝试指定不同的艺术家来实现不同的视觉效果。尝试将以下选项之一附加到提示符中:
画家:
雕刻家:
建筑师:
调整采样参数
在调整采样参数时,您可以利用以下经验观察来指导您的探索。
图像尺寸
一般来说,从经验上看,较大的图像在图像质量和标题对齐方面都比较小的图像要好得多。有关 256x256 和 512x512 大小图像的提示“Guy Fieri gives a tour of a haunted house”,请参阅以下示例:
提示“Guy Fieri 参观鬼屋”的 256x256 与 512x512 样本比较
扩散步骤数
扩散过程中的步骤数似乎不会对超过大约 50 个时间步长的某个阈值的结果产生太大影响。下面的图像是使用相同的随机种子和提示“一辆红色跑车”生成的。可以看出,更多的时间步长始终如一地提高了生成图像的质量,但过去 50 个时间步长的改进仅体现在对感兴趣对象的偶然环境的轻微变化上。事实上,从 25 个时间步长开始,汽车的细节几乎完全一致,而且环境正在改善,以在更大的时间步长内变得更适合汽车。
图像纵横比
图像质量和标题相似性作为纵横比的函数似乎取决于输入标题。下面的图像具有相同的面积,但纵横比不同,均使用标题“钢和玻璃现代建筑”生成。结果相对均匀,尽管垂直图像看起来最好,其次是正方形,然后是水平图像。鉴于这种类型的现代建筑又高又瘦,这应该不足为奇。因此,性能作为纵横比的函数似乎与主体有关。
不幸的是,稳定扩散仅限于可分解的纵横比,这使得更细粒度的实验变得不可能,但无论如何,方形图像应该足以满足大多数目的。
检查点符号链接
为了避免每次生成映像时都必须提供检查点,可以在检查点和缺省值 之间创建一个符号链接。在终端中,导航到目录并执行以下命令:--ckpt sd-v1-4.ckpt--ckptstable-diffusion
mkdir -p models/ldm/stable-diffusion-v1/ ln -s sd-v1-4.ckpt models/ldm/stable-diffusion-v1/model.ckpt
或者,只需将检查点移动到默认位置即可:--ckpt
mv sd-v1-4.ckpt models/ldm/stable-diffusion-v1/model.ckpt
我真的让瑞克滚了吗?
是的。如果 Stable Diffusion 检测到生成的图像可能违反其安全过滤器,则生成的图像将被替换为 Rick Astley 的静止图像。
最后的话
这就是使用新的 Stable Diffusion 模型生成图像所需的全部内容 ,如果您想了解有关 Stable Diffusion 工作原理的更多信息,请随时查看3D建模学习工作室。
版权声明: 本文为 InfoQ 作者【3D建模设计】的原创文章。
原文链接:【http://xie.infoq.cn/article/629d90daa39efa1c6bdd7a401】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论