Stable Diffusion 3 生图最佳实践
Stability AI 最近发布了 Stable Diffusion 3 Medium 的权重,这是一个 20 亿参数的文本到图像的生成模型,在照片真实感、排版和提示词跟随方面表现出色。
现在就可以在 揽睿·知用
上运行 Stable Diffusion 3 模型,比如创建一个 ComfyUI 的工作空间,拖入官方的 SD3 工作流即可直接使用,如果想要将 SD3 的能力集成进你的应用中,我们自研的星舟推理引擎、ComfyUI API 推理服务均已支持 SD3 模型的生产级推理部署。
在这篇文章中,我们将介绍如何使用 Stable Diffusion 3 来获得最佳质量的图像,包括如何写 SD3 的提示词,这与之前的 Stable Diffusion 模型有点不同。
选择 SD3 的版本
Stability AI 封装了多个版本的 SD3 Medium 模型,以确保它可以在尽可能多的设备上运行。
SD3 使用三种不同的文本编码器(文本编码器的作用是将提示词转换为模型可以理解的格式)。其中新的 T5 文本编码器体积非常大 —— 这意味着它需要使用大量的显存。如果你正在查看 SD3 HuggingFace 权重,你将看到官方提供了四个不同文本编码器配置的模型,你应该根据实际可用的显存情况选择使用。
sd3_medium_incl_clips_t5xxlfp8.safetensors
包含模型权重、两个 CLIP 文本编码器和一个 fp8 的 T5-XXL 模型。为了简单起见和获得最佳结果,我们推荐使用这个权重。
sd3_medium_incl_clips_t5xxlfp16.safetensors
与 sd3_medium_incl_clips_t5xxlfp8.safetensors 相同,只是 T5 部分没有压缩那么多。通过使用 fp16 而不是 fp8,你的图像质量会略有改善。这种改进是以更高的内存使用量为代价的。
sd3_medium_incl_clips.safetensors
这个版本不使用 T5 编码器。它仅包含两个 CLIP 文本编码器。如果你没有太多 VRAM,这是一个不错的选择,但你的结果可能与完整版本有很大不同。此版本出的图片可能不会严格遵循你的提示词,并且还可能会降低图像中文本的质量。
sd3_medium.safetensors
该模型只是基本权重,没有任何文本编码器。如果你使用这些权重, 请确保单独加载文本编码器。 Stability AI 为此提供了一个 ComfyUI 工作流程示例。
提示词
SD3 在使用方式上的最大的变化是提示词。现在,我们可以使用很长的描述性提示词,并且返回的图像会非常好的遵循提示词的描述。不再受 CLIP 文本编码器 77 个令牌的限制。
现在我们可以使用长达 10,000 个字符的提示词,差不多超过 1,500 个单词。在实际使用中,你可能不太会写这么长的提示词,但很明显我们不再需要担心提示词的长度了。
对于很长的提示词,目前很难说哪些内容会出现在图像中,哪些内容不会出现在图像中。目前尚不清楚什么样的提示词一定会被模型使用。但提示词越长、越复杂,就越有可能遗漏某些内容。
不要使用负向提示词
SD3 的训练中没有使用负向提示词,所以负向提示词在 SD3 中并不会如期望的那样起作用。如果你已经尝试过 SD3,你可能会注意到,当给出负向提示词时,图片确实会发生变化,但这种变化并不是有意义的。负向提示词不会删除你不想要的元素,相反,它会给你的调节带来噪音,并简单地改变输出,有点像使用不同的种子。