模型简介
模型特点
模型能力
使用案例
🚀 稳定扩散v2 - 1基础模型
本模型卡聚焦于与稳定扩散v2 - 1基础模型相关的模型。该stable - diffusion - 2 - 1 - base
模型在stable - diffusion - 2 - base (512 - base - ema.ckpt
)的基础上进行微调,在相同数据集上额外训练了220k步,punsafe = 0.98
。
🚀 快速开始
你可以通过以下两种方式使用该模型:
- 使用
stablediffusion
仓库:点击此处下载v2 - 1_512 - ema - pruned.ckpt
文件。 - 使用🧨
diffusers
库。
✨ 主要特性
- 模型类型:基于扩散的文本到图像生成模型。
- 语言支持:主要支持英文。
- 功能用途:可根据文本提示生成和修改图像。
📦 安装指南
使用🤗的Diffusers库可以简单高效地运行稳定扩散2模型。首先,你需要安装必要的依赖:
pip install diffusers transformers accelerate scipy safetensors
💻 使用示例
基础用法
以下是一个使用该模型生成图像的示例代码:
from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
import torch
model_id = "stabilityai/stable-diffusion-2-1-base"
scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, 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")
高级用法
注意事项:
- 虽然
xformers
不是必需依赖,但我们强烈建议你安装它,以实现内存高效的注意力机制(提升性能)。 - 如果你可用的GPU内存较低,在将模型发送到
cuda
后,添加pipe.enable_attention_slicing()
可以减少VRAM使用(以牺牲速度为代价)。
# 尽管不是依赖项,但强烈建议安装xformers以实现内存高效的注意力机制(更好的性能)
# 如果GPU内存较低,在发送到cuda后添加pipe.enable_attention_slicing()以减少VRAM使用(以速度为代价)
from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
import torch
model_id = "stabilityai/stable-diffusion-2-1-base"
scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, torch_dtype=torch.float16)
pipe = pipe.to("cuda")
pipe.enable_attention_slicing() # 低GPU内存时使用
prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt).images[0]
image.save("astronaut_rides_horse.png")
📚 详细文档
用途
直接使用
该模型仅用于研究目的,可能的研究领域和任务包括:
- 安全部署可能生成有害内容的模型。
- 探究和理解生成模型的局限性和偏差。
- 生成艺术作品并用于设计和其他艺术创作过程。
- 在教育或创意工具中的应用。
- 对生成模型的研究。
禁止使用场景
该模型不得用于故意创建或传播对人造成敌对或疏离环境的图像。这包括生成人们可预见会感到不安、痛苦或冒犯的图像;或传播历史或当前刻板印象的内容。
- 超出适用范围的使用:该模型并非用于生成真实或准确反映人物或事件的内容,因此使用该模型生成此类内容超出了其能力范围。
- 滥用和恶意使用:使用该模型生成对个人残酷的内容属于滥用行为。这包括但不限于:
- 生成贬低、非人化或其他有害的人物或其环境、文化、宗教等的表现形式。
- 故意推广或传播歧视性内容或有害刻板印象。
- 在未经同意的情况下冒充个人。
- 未经可能看到内容的人的同意生成性内容。
- 虚假和误导性信息。
- 展示严重暴力和血腥的内容。
- 违反使用条款分享受版权保护或许可的材料。
- 违反使用条款分享受版权保护或许可材料的修改版本。
局限性和偏差
局限性
- 模型无法实现完美的照片级真实感。
- 模型无法渲染清晰可读的文本。
- 模型在涉及组合性的更复杂任务上表现不佳,例如渲染与“A red cube on top of a blue sphere”对应的图像。
- 面部和人物的生成可能不准确。
- 模型主要使用英文标题进行训练,在其他语言上的效果不佳。
- 模型的自动编码部分存在信息损失。
- 模型在[LAION - 5B](https://laion.ai/blog/laion - 5b/)的一个子集上进行训练,该数据集包含成人、暴力和性内容。为了部分缓解这一问题,我们使用LAION的NFSW检测器对数据集进行了过滤(详见训练部分)。
偏差
虽然图像生成模型的能力令人印象深刻,但它们也可能强化或加剧社会偏差。稳定扩散v2主要在[LAION - 2B(en)](https://laion.ai/blog/laion - 5b/)的子集上进行训练,该数据集仅包含英文描述的图像。使用其他语言的社区和文化的文本和图像可能没有得到充分考虑。这影响了模型的整体输出,因为白人和西方文化通常被设定为默认值。此外,模型使用非英文提示生成内容的能力明显低于使用英文提示的情况。稳定扩散v2反映并加剧了偏差,因此无论输入或意图如何,都建议用户谨慎使用。
训练
训练数据
模型开发者使用以下数据集进行模型训练:
- LAION - 5B及其子集(详情如下)。训练数据使用LAION的NSFW检测器进行了进一步过滤,“p_unsafe”分数为0.1(保守)。有关更多详细信息,请参阅LAION - 5B的[NeurIPS 2022](https://openreview.net/forum?id = M3Y74vmsMcY)论文和相关评审讨论。
训练过程
稳定扩散v2是一个潜在扩散模型,它将自动编码器与在自动编码器潜在空间中训练的扩散模型相结合。在训练过程中:
- 图像通过编码器进行编码,将图像转换为潜在表示。自动编码器使用相对下采样因子8,将形状为H x W x 3的图像映射到形状为H/f x W/f x 4的潜在表示。
- 文本提示通过OpenCLIP - ViT/H文本编码器进行编码。
- 文本编码器的输出通过交叉注意力机制输入到潜在扩散模型的UNet主干中。
- 损失是添加到潜在表示中的噪声与UNet预测之间的重建目标。我们还使用了所谓的“v - objective”,详见https://arxiv.org/abs/2202.00512。
目前,我们为不同版本提供了以下检查点:
- 版本2.1
512 - base - ema.ckpt
:在512 - base - ema.ckpt
2.0的基础上微调,额外训练220k步,punsafe = 0.98
。768 - v - ema.ckpt
:从768 - v - ema.ckpt
2.0继续训练,在相同数据集上额外训练55k步(punsafe = 0.1
),然后再以punsafe = 0.98
微调155k步。
- 版本2.0
512 - base - ema.ckpt
:在[LAION - 5B](https://laion.ai/blog/laion - 5b/)的一个子集上,以分辨率256x256
训练550k步,该子集使用[LAION - NSFW分类器](https://github.com/LAION - AI/CLIP - based - NSFW - Detector)过滤了明确的色情内容,punsafe = 0.1
,美学分数>= 4.5
。然后在相同数据集上以分辨率512x512
(分辨率>= 512x512
)训练850k步。768 - v - ema.ckpt
:从512 - base - ema.ckpt
继续训练,在相同数据集上使用v - objective训练150k步。然后在数据集的768x768
子集上继续训练140k步。512 - depth - ema.ckpt
:从512 - base - ema.ckpt
继续训练并微调200k步。添加一个额外的输入通道来处理[MiDaS](https://github.com/isl - org/MiDaS) (dpt_hybrid
)生成的(相对)深度预测,作为额外的条件。处理此额外信息的U - Net的额外输入通道初始化为零。512 - inpainting - ema.ckpt
:从512 - base - ema.ckpt
继续训练200k步。遵循[LAMA](https://github.com/saic - mdal/lama)中提出的掩码生成策略,结合掩码图像的潜在VAE表示,作为额外的条件。处理此额外信息的U - Net的额外输入通道初始化为零。与训练[1.5 - inpainting检查点](https://github.com/saic - mdal/lama)使用相同的策略。x4 - upscaling - ema.ckpt
:在包含图像>2048x2048
的LAION的10M子集上训练1250k步。模型在大小为512x512
的裁剪图像上进行训练,是一个文本引导的潜在上采样扩散模型。除了文本输入外,它还接收一个noise_level
作为输入参数,可根据[预定义的扩散调度](configs/stable - diffusion/x4 - upscaling.yaml)向低分辨率输入添加噪声。
硬件:32 x 8 x A100 GPUs 优化器:AdamW 梯度累积:1 批次大小:32 x 8 x 2 x 4 = 2048 学习率:在10000步内预热到0.0001,然后保持不变
评估结果
使用不同的无分类器引导尺度(1.5、2.0、3.0、4.0、5.0、6.0、7.0、8.0)和50步DDIM采样步骤进行评估,结果显示了不同检查点的相对改进:
评估使用50步DDIM采样和COCO2017验证集中的10000个随机提示,在分辨率512x512
下进行。未针对FID分数进行优化。
环境影响
稳定扩散v1估计排放量
根据相关信息,我们使用Lacoste等人(2019)中提出的机器学习影响计算器估计了以下CO2排放量。使用硬件、运行时间、云服务提供商和计算区域来估计碳影响。
属性 | 详情 |
---|---|
硬件类型 | A100 PCIe 40GB |
使用时长 | 200000小时 |
云服务提供商 | AWS |
计算区域 | 美国东部 |
碳排放(功耗 x 时间 x 基于电网位置的碳排放量) | 15000 kg CO2 eq. |
引用
@InProceedings{Rombach_2022_CVPR,
author = {Rombach, Robin and Blattmann, Andreas and Lorenz, Dominik and Esser, Patrick and Ommer, Bj\"orn},
title = {High-Resolution Image Synthesis With Latent Diffusion Models},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2022},
pages = {10684-10695}
}
📄 许可证
该模型遵循CreativeML Open RAIL++ - M License。
本模型卡由Robin Rombach、Patrick Esser和David Ha编写,基于Stable Diffusion v1和[DALL - E Mini模型卡](https://huggingface.co/dalle - mini/dalle - mini)。

