模型简介
模型特点
模型能力
使用案例
🚀 Stable Diffusion v1 - 5模型卡片
Stable Diffusion是一个潜在的文本到图像扩散模型,能够根据任何文本输入生成逼真的图像。如需了解Stable Diffusion的工作原理,请查看🤗的Stable Diffusion博客。
🚀 快速开始
你可以结合使用🧨Diffusers库和RunwayML GitHub仓库来使用这个模型。
Diffusers
from diffusers import StableDiffusionPipeline
import torch
model_id = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to("cuda")
prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt).images[0]
image.save("astronaut_rides_horse.png")
有关JAX中更详细的说明、用例和示例,请遵循此处的说明。
原始GitHub仓库
- 下载权重
- v1 - 5 - pruned - emaonly.ckpt - 4.27GB,仅EMA权重。使用较少的VRAM,适合推理。
- v1 - 5 - pruned.ckpt - 7.7GB,EMA + 非EMA权重。使用更多的VRAM,适合微调。
- 遵循此处的说明。
✨ 主要特性
- 文本到图像生成:能够根据文本输入生成逼真的图像。
- 多场景适用:可用于艺术创作、设计、教育等多个领域的研究。
📚 详细文档
模型详情
属性 | 详情 |
---|---|
开发者 | Robin Rombach, Patrick Esser |
模型类型 | 基于扩散的文本到图像生成模型 |
语言 | 英语 |
许可证 | The CreativeML OpenRAIL M license 是一个 Open RAIL M license,改编自 BigScience 和 the RAIL Initiative 在负责任的AI许可领域的联合工作。另见 关于BLOOM Open RAIL许可的文章,我们的许可基于此。 |
模型描述 | 这是一个可用于根据文本提示生成和修改图像的模型。它是一个 Latent Diffusion Model,使用固定的预训练文本编码器 (CLIP ViT - L/14),如 Imagen论文 中所建议。 |
更多信息资源 | GitHub仓库,论文 |
引用方式 | @InProceedings{Rombach_2022_CVPR, |
使用方式
直接使用
该模型仅用于研究目的。可能的研究领域和任务包括:
- 安全部署有可能生成有害内容的模型。
- 探索和理解生成模型的局限性和偏差。
- 艺术作品的生成以及在设计和其他艺术过程中的应用。
- 在教育或创意工具中的应用。
- 生成模型的研究。
排除的使用情况如下所述。
滥用、恶意使用和超出范围的使用
注意:本节内容取自 DALLE - MINI模型卡片,但同样适用于Stable Diffusion v1。
该模型不应被用于故意创建或传播对人造成敌对或疏离环境的图像。这包括生成人们可预见会觉得不安、苦恼或冒犯的图像;或传播历史或当前刻板印象的内容。
- 超出范围的使用:该模型未经过训练以真实或准确地表示人或事件,因此使用该模型生成此类内容超出了该模型的能力范围。
- 滥用和恶意使用:使用该模型生成对个人残忍的内容是对该模型的滥用。这包括但不限于:
- 生成贬低、非人性化或以其他方式有害的人物或其环境、文化、宗教等的表现形式。
- 故意推广或传播歧视性内容或有害的刻板印象。
- 在未经个人同意的情况下冒充个人。
- 未经可能看到的人的同意的性内容。
- 错误和虚假信息。
- 严重暴力和血腥的表现形式。
- 违反其使用条款分享受版权保护或许可的材料。
- 违反其使用条款分享受版权保护或许可材料的修改内容。
局限性和偏差
局限性
- 图像逼真度:模型无法实现完美的照片级真实感。
- 文本渲染:模型无法渲染清晰可读的文本。
- 复杂任务处理:在涉及组合性的更困难任务上表现不佳,例如渲染对应于 “A red cube on top of a blue sphere” 的图像。
- 人物生成:人脸和人物的生成效果可能不佳。
- 语言支持:模型主要使用英语字幕进行训练,在其他语言上的表现不佳。
- 自动编码损耗:模型的自动编码部分存在损耗。
- 训练数据问题:模型在大规模数据集 LAION - 5B 上训练,该数据集包含成人内容,在没有额外安全机制和考虑的情况下不适合产品使用。且未对数据集进行去重处理,因此对于训练数据中重复的图像会有一定程度的记忆。可在 https://rom1504.github.io/clip - retrieval/ 搜索训练数据以检测记忆的图像。
偏差
虽然图像生成模型的能力令人印象深刻,但它们也可能强化或加剧社会偏差。Stable Diffusion v1在 LAION - 2B(en) 的子集上训练,该数据集主要由英语描述的图像组成。使用其他语言的社区和文化的文本和图像可能没有得到充分考虑。这影响了模型的整体输出,因为白人和西方文化往往被设定为默认值。此外,模型在使用非英语提示生成内容时的能力明显低于使用英语提示的情况。
安全模块
该模型的预期使用方式是结合Diffusers中的 Safety Checker。该检查器通过将模型输出与已知的硬编码NSFW概念进行比较来工作。这些概念被故意隐藏以降低对该过滤器进行逆向工程的可能性。具体来说,检查器在图像生成 之后,在 CLIPTextModel
的嵌入空间中比较有害概念的类概率。这些概念与生成的图像一起传入模型,并与每个NSFW概念的手工设计权重进行比较。
训练
训练数据
模型开发者使用以下数据集进行模型训练:
- LAION - 2B (en) 及其子集(见下一节)
训练过程
Stable Diffusion v1 - 5是一个潜在扩散模型,它将自动编码器与在自动编码器的潜在空间中训练的扩散模型相结合。在训练期间:
- 图像编码:图像通过编码器进行编码,将图像转换为潜在表示。自动编码器使用相对下采样因子8,将形状为H x W x 3的图像映射到形状为H/f x W/f x 4的潜在表示。
- 文本编码:文本提示通过ViT - L/14文本编码器进行编码。
- 交叉注意力:文本编码器的非池化输出通过交叉注意力输入到潜在扩散模型的UNet主干中。
- 损失计算:损失是添加到潜在表示中的噪声与UNet的预测之间的重建目标。
目前提供了六个Stable Diffusion检查点,它们的训练方式如下:
-
stable - diffusion - v1 - 1
:在 [laion2B - en](https://huggingface.co/datasets/laion/laion2B - en) 上以分辨率256x256
训练237,000步。在 [laion - high - resolution](https://huggingface.co/datasets/laion/laion - high - resolution)(来自LAION - 5B的170M个分辨率>= 1024x1024
的示例)上以分辨率512x512
训练194,000步。 -
stable - diffusion - v1 - 2
:从stable - diffusion - v1 - 1
继续训练。在 “laion - improved - aesthetics”(laion2B - en的一个子集,过滤到原始大小>= 512x512
、估计美学分数> 5.0
且估计水印概率< 0.5
的图像。水印估计来自LAION - 5B元数据,美学分数使用 [改进的美学估计器](https://github.com/christophschuhmann/improved - aesthetic - predictor) 估计)上以分辨率512x512
训练515,000步。 -
stable - diffusion - v1 - 3
:从stable - diffusion - v1 - 2
继续训练 - 在 “laion - improved - aesthetics” 上以分辨率512x512
训练195,000步,并丢弃10%的文本条件以改进 classifier - free guidance sampling。 -
stable - diffusion - v1 - 4
从stable - diffusion - v1 - 2
继续训练 - 在 “laion - aesthetics v2 5+” 上以分辨率512x512
训练225,000步,并丢弃10%的文本条件以改进 classifier - free guidance sampling。 -
stable - diffusion - v1 - 5
从stable - diffusion - v1 - 2
继续训练 - 在 “laion - aesthetics v2 5+” 上以分辨率512x512
训练595,000步,并丢弃10%的文本条件以改进 classifier - free guidance sampling。 -
stable - diffusion - inpainting
从stable - diffusion - v1 - 5
继续训练 - 然后在 “laion - aesthetics v2 5+” 上以分辨率512x512进行440,000步的修复训练,并丢弃10%的文本条件。对于修复,UNet有5个额外的输入通道(4个用于编码的掩码图像,1个用于掩码本身),其权重在恢复非修复检查点后初始化为零。在训练期间,我们生成合成掩码,并在25%的情况下掩码所有内容。 -
硬件:32 x 8 x A100 GPUs
-
优化器:AdamW
-
梯度累积:2
-
批次大小:32 x 8 x 2 x 4 = 2048
-
学习率:在10,000步内预热到0.0001,然后保持不变
评估结果
使用不同的无分类器引导尺度(1.5, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0)和50个PNDM/PLMS采样步骤进行的评估显示了检查点的相对改进:
使用50个PLMS步骤和来自COCO2017验证集的10000个随机提示进行评估,在512x512分辨率下进行评估。未针对FID分数进行优化。
环境影响
Stable Diffusion v1估计排放量
根据这些信息,我们使用 Lacoste等人(2019) 中提出的 机器学习影响计算器 估计了以下CO2排放量。利用硬件、运行时间、云提供商和计算区域来估计碳影响。
- 硬件类型:A100 PCIe 40GB
- 使用时间:150000小时
- 云提供商:AWS
- 计算区域:US - east
- 碳排放(功耗 x 时间 x 基于电网位置产生的碳):11250 kg CO2 eq.
🔧 技术细节
训练过程
Stable Diffusion v1 - 5是一个潜在扩散模型,它将自动编码器与在自动编码器的潜在空间中训练的扩散模型相结合。在训练期间,图像通过编码器转换为潜在表示,文本提示通过ViT - L/14文本编码器编码,文本编码器的非池化输出通过交叉注意力输入到潜在扩散模型的UNet主干中,损失是添加到潜在表示中的噪声与UNet的预测之间的重建目标。
评估方法
使用不同的无分类器引导尺度和50个PNDM/PLMS采样步骤进行评估,使用来自COCO2017验证集的随机提示,在512x512分辨率下进行评估。
📄 许可证
本模型采用 The CreativeML OpenRAIL M license。使用该模型时,请仔细阅读并遵守许可证的相关规定。
⚠️ 重要提示
该模型仅用于研究目的,不得用于故意创建或传播有害内容。请仔细阅读许可证和使用说明,确保合法合规使用。
💡 使用建议
在使用模型时,可尝试不同的文本提示和参数设置,以获得更好的图像生成效果。同时,注意模型的局限性,避免对生成结果有过高的期望。

