模型简介
模型特点
模型能力
使用案例
🚀 Stable Diffusion v1 - 2模型卡片
Stable Diffusion是一种潜在的文本到图像扩散模型,能够根据任何文本输入生成逼真的图像。它为图像生成领域带来了新的可能性,让用户可以通过文本描述轻松创造出各种想象中的画面。
🚀 快速开始
我们建议使用 🤗 的Diffusers库 来运行Stable Diffusion。
首先,安装所需的库:
pip install --upgrade diffusers transformers scipy
使用默认的PNDM调度器运行管道:
import torch
from torch import autocast
from diffusers import StableDiffusionPipeline
model_id = "CompVis/stable-diffusion-v1-2"
device = "cuda"
pipe = StableDiffusionPipeline.from_pretrained(model_id)
pipe = pipe.to(device)
prompt = "a photo of an astronaut riding a horse on mars"
with autocast("cuda"):
image = pipe(prompt)["sample"][0]
image.save("astronaut_rides_horse.png")
⚠️ 重要提示
如果你的GPU内存有限,可用的GPU RAM少于10GB,请确保以float16精度而不是上述默认的float32精度加载StableDiffusionPipeline。你可以通过告诉diffusers期望权重为float16精度来实现:
import torch
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16)
pipe = pipe.to(device)
prompt = "a photo of an astronaut riding a horse on mars"
with autocast("cuda"):
image = pipe(prompt, guidance_scale=7.5)["sample"][0]
image.save("astronaut_rides_horse.png")
若要更换噪声调度器,可将其传递给 from_pretrained
:
from diffusers import StableDiffusionPipeline, LMSDiscreteScheduler
model_id = "CompVis/stable-diffusion-v1-2"
# 这里使用K - LMS调度器
scheduler = LMSDiscreteScheduler(beta_start=0.00085, beta_end=0.012, beta_schedule="scaled_linear", num_train_timesteps=1000)
pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, use_auth_token=True)
pipe = pipe.to("cuda")
prompt = "a photo of an astronaut riding a horse on mars"
with autocast("cuda"):
image = pipe(prompt, guidance_scale=7.5)["sample"][0]
image.save("astronaut_rides_horse.png")
✨ 主要特性
- 文本到图像生成:能够根据输入的文本生成逼真的图像。
- 可定制性:支持更换噪声调度器,可根据需求调整生成效果。
- 多场景应用:可用于艺术创作、设计、教育等多个领域。
📚 详细文档
模型详情
属性 | 详情 |
---|---|
开发者 | Robin Rombach, Patrick Esser |
模型类型 | 基于扩散的文本到图像生成模型 |
语言 | 英语 |
许可证 | CreativeML OpenRAIL M许可证 是一种 Open RAIL M许可证,改编自 BigScience 和 RAIL Initiative 在负责任的AI许可领域的联合工作。另见 关于BLOOM Open RAIL许可证的文章,我们的许可证基于此。 |
模型描述 | 这是一个可用于根据文本提示生成和修改图像的模型。它是一个 潜在扩散模型,使用固定的预训练文本编码器 (CLIP ViT - L/14),如 Imagen论文 中所建议的那样。 |
更多信息资源 | GitHub仓库,论文 |
引用格式 | @InProceedings{Rombach_2022_CVPR, |
使用方式
直接使用
该模型仅用于研究目的。可能的研究领域和任务包括:
- 安全部署有可能生成有害内容的模型。
- 探究和理解生成模型的局限性和偏差。
- 艺术作品的生成以及在设计和其他艺术过程中的应用。
- 在教育或创意工具中的应用。
- 生成模型的研究。
滥用、恶意使用和超出范围的使用
此模型不应被用于故意创建或传播会给人们造成敌对或疏离环境的图像。这包括生成人们可预见会感到不安、痛苦或冒犯的图像,或传播历史或当前刻板印象的内容。
- 超出范围的使用:该模型并非用于对人物或事件进行事实性或真实的呈现,因此使用该模型生成此类内容超出了该模型的能力范围。
- 滥用和恶意使用:使用该模型生成对个人残酷的内容是对该模型的滥用。这包括但不限于:
- 生成贬低、非人化或以其他方式对人或其环境、文化、宗教等有害的表述。
- 故意推广或传播歧视性内容或有害的刻板印象。
- 在未经他人同意的情况下冒充他人。
- 未经可能看到该内容的人的同意而展示性内容。
- 错误信息和虚假信息。
- 令人震惊的暴力和血腥场面的表述。
- 违反使用条款分享受版权保护或许可的材料。
- 违反使用条款分享对受版权保护或许可的材料进行修改后的内容。
局限性和偏差
局限性
- 模型无法实现完美的照片级逼真度。
- 模型无法渲染清晰可读的文本。
- 模型在涉及组合性的更困难任务上表现不佳,例如渲染与 “一个红色立方体放在蓝色球体上” 对应的图像。
- 人脸和人物的生成可能不够理想。
- 模型主要使用英语字幕进行训练,在其他语言中的表现不佳。
- 模型的自动编码部分存在信息损失。
- 模型在大规模数据集 LAION - 5B 上进行训练,该数据集包含成人内容,在没有额外安全机制和考虑的情况下不适合用于产品。
- 数据集未进行额外的去重处理。因此,我们观察到模型对训练数据中重复的图像有一定程度的记忆。可以在 [https://rom1504.github.io/clip - retrieval/](https://rom1504.github.io/clip - retrieval/) 上搜索训练数据,以帮助检测记忆的图像。
偏差
虽然图像生成模型的能力令人印象深刻,但它们也可能强化或加剧社会偏差。Stable Diffusion v1在 LAION - 2B(en) 的子集上进行训练,该子集主要由英语描述的图像组成。使用其他语言的社区和文化的文本和图像可能没有得到充分考虑。这影响了模型的整体输出,因为白人和西方文化通常被设定为默认。此外,模型使用非英语提示生成内容的能力明显低于使用英语提示的能力。
训练
训练数据
模型开发者使用以下数据集进行模型训练:
- LAION - 2B (en) 及其子集(见下一节)
训练过程
Stable Diffusion v1 - 4是一种潜在扩散模型,它将自动编码器与在自动编码器的潜在空间中训练的扩散模型相结合。在训练过程中:
- 图像通过编码器进行编码,将图像转换为潜在表示。自动编码器使用相对下采样因子8,将形状为H x W x 3的图像映射到形状为H/f x W/f x 4的潜在表示。
- 文本提示通过ViT - L/14文本编码器进行编码。
- 文本编码器的非池化输出通过交叉注意力输入到潜在扩散模型的UNet主干中。
- 损失是添加到潜在表示的噪声与UNet的预测之间的重建目标。
目前提供四个检查点,训练方式如下:
stable - diffusion - v1 - 1
:在 laion2B - en 上以256x256
分辨率训练237,000步。在 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元数据,美学分数使用 改进的美学估计器 进行估计)上以512x512
分辨率训练515,000步。stable - diffusion - v1 - 3
:从stable - diffusion - v1 - 2
继续训练。在 “laion - improved - aesthetics” 上以512x512
分辨率训练195,000步,并丢弃10%的文本条件以改进 无分类器引导采样。stable - diffusion - v1 - 4
:从stable - diffusion - v1 - 2
继续训练。在 “laion - aesthetics v2 5+” 上以512x512
分辨率训练225,000步,并丢弃10%的文本条件以改进 无分类器引导采样。
训练细节
- 硬件:32 x 8 x A100 GPU
- 优化器: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个PLMS采样步骤进行评估,显示了各检查点的相对改进:
使用50个PLMS步骤和来自COCO2017验证集的10000个随机提示进行评估,在512x512分辨率下进行。未针对FID分数进行优化。
环境影响
Stable Diffusion v1估计排放量 基于这些信息,我们使用 Lacoste等人(2019) 中提出的 机器学习影响计算器 估计了以下CO2排放量。利用硬件、运行时间、云服务提供商和计算区域来估计碳影响。
- 硬件类型:A100 PCIe 40GB
- 使用小时数:150000
- 云服务提供商:AWS
- 计算区域:美国东部
- 碳排放(功耗 x 时间 x 基于电网位置产生的碳):11250 kg CO2当量
🔧 技术细节
Stable Diffusion v1 - 2模型是一种潜在文本到图像扩散模型,它结合了自动编码器和扩散模型。在训练时,图像被编码为潜在表示,文本提示通过文本编码器编码,然后通过交叉注意力机制输入到UNet中。通过最小化添加到潜在表示的噪声与UNet预测之间的重建损失来训练模型。不同的检查点在不同的数据集和分辨率上进行训练,以不断优化模型的性能。
📄 许可证
本模型采用 CreativeML OpenRAIL M许可证。该许可证规定:
- 不得使用该模型故意生成或分享非法或有害的输出或内容。
- 作者对用户生成的输出不主张任何权利,用户可以自由使用这些输出,但需对其使用负责,且不得违反许可证中的规定。
- 可以重新分发模型权重,并将模型用于商业用途和/或作为服务。如果这样做,请务必包含与许可证中相同的使用限制,并向所有用户提供 CreativeML OpenRAIL M许可证 的副本。
请仔细阅读完整的许可证:https://huggingface.co/spaces/CompVis/stable-diffusion-license
本模型卡片由Robin Rombach和Patrick Esser编写,基于 DALL - E Mini模型卡片。

