模型简介
模型特点
模型能力
使用案例
🚀 Stable Diffusion v2模型卡片
Stable Diffusion v2是一款强大的基于文本生成和修改图像的模型,它能够根据文本提示生成高质量的图像,在图像生成领域具有广泛的应用前景。
🚀 快速开始
- 使用
stablediffusion
仓库:从这里下载512-depth-ema.ckpt
。 - 使用🧨
diffusers
✨ 主要特性
- 基于文本提示生成和修改图像,可用于多种图像生成任务。
- 采用Latent Diffusion Model架构,结合固定的预训练文本编码器。
- 支持多种使用方式,可通过不同的库和工具进行调用。
📦 安装指南
使用🤗的Diffusers库可以简单高效地运行Stable Diffusion 2:
pip install -U git+https://github.com/huggingface/transformers.git
pip install diffusers transformers accelerate scipy safetensors
💻 使用示例
基础用法
import torch
import requests
from PIL import Image
from diffusers import StableDiffusionDepth2ImgPipeline
pipe = StableDiffusionDepth2ImgPipeline.from_pretrained(
"stabilityai/stable-diffusion-2-depth",
torch_dtype=torch.float16,
).to("cuda")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
init_image = Image.open(requests.get(url, stream=True).raw)
prompt = "two tigers"
n_propmt = "bad, deformed, ugly, bad anotomy"
image = pipe(prompt=prompt, image=init_image, negative_prompt=n_propmt, strength=0.7).images[0]
高级用法
# 尽管不是必需依赖,但强烈建议安装[xformers](https://github.com/facebookresearch/xformers)以实现内存高效注意力(更好的性能)
# 如果GPU显存较低,确保在将其发送到`cuda`后添加`pipe.enable_attention_slicing()`以减少VRAM使用(以速度为代价)
import torch
import requests
from PIL import Image
from diffusers import StableDiffusionDepth2ImgPipeline
pipe = StableDiffusionDepth2ImgPipeline.from_pretrained(
"stabilityai/stable-diffusion-2-depth",
torch_dtype=torch.float16,
).to("cuda")
pipe.enable_attention_slicing()
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
init_image = Image.open(requests.get(url, stream=True).raw)
prompt = "two tigers"
n_propmt = "bad, deformed, ugly, bad anotomy"
image = pipe(prompt=prompt, image=init_image, negative_prompt=n_propmt, strength=0.7).images[0]
📚 详细文档
模型详情
属性 | 详情 |
---|---|
开发者 | Robin Rombach, Patrick Esser |
模型类型 | 基于扩散的文本到图像生成模型 |
语言 | 英语 |
许可证 | CreativeML Open RAIL++-M License |
模型描述 | 这是一个可用于根据文本提示生成和修改图像的模型。它是一个潜在扩散模型,使用固定的预训练文本编码器(OpenCLIP-ViT/H)。 |
更多信息资源 | GitHub仓库 |
引用方式 | @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} } |
使用场景
直接使用
该模型仅用于研究目的,可能的研究领域和任务包括:
- 安全部署有可能生成有害内容的模型。
- 探究和理解生成模型的局限性和偏差。
- 艺术作品生成以及在设计和其他艺术过程中的应用。
- 在教育或创意工具中的应用。
- 生成模型的研究。
禁止使用场景
模型不应被用于故意创建或传播对人造成敌对或疏离环境的图像。这包括生成人们可预见会感到不安、痛苦或冒犯的图像;或传播历史或当前刻板印象的内容。
- 超出适用范围的使用:模型未经过训练以真实或准确地表示人物或事件,因此使用该模型生成此类内容超出了该模型的能力范围。
- 滥用和恶意使用:使用该模型生成对个人残酷的内容是对该模型的滥用。这包括但不限于:
- 生成贬低、非人化或以其他方式伤害人们或其环境、文化、宗教等的表现形式。
- 故意推广或传播歧视性内容或有害刻板印象。
- 在未经个人同意的情况下冒充他人。
- 未经可能看到该内容的人的同意而生成性内容。
- 虚假信息和错误信息。
- 令人发指的暴力和血腥场面的表现形式。
- 违反使用条款分享受版权保护或许可的材料。
- 违反使用条款分享对受版权保护或许可材料的修改内容。
局限性和偏差
局限性
- 模型无法实现完美的照片写实主义。
- 模型无法渲染清晰可读的文本。
- 模型在涉及组合性的更困难任务上表现不佳,例如渲染与“A red cube on top of a blue sphere”对应的图像。
- 面部和人物通常可能无法正确生成。
- 模型主要使用英语字幕进行训练,在其他语言中的效果不佳。
- 模型的自动编码部分存在信息损失。
- 模型在大规模数据集LAION - 5B的一个子集上进行训练,该数据集包含成人、暴力和性内容。为了部分缓解这一问题,我们使用LAION的NFSW检测器对数据集进行了过滤(见训练部分)。
偏差
虽然图像生成模型的能力令人印象深刻,但它们也可能强化或加剧社会偏差。Stable Diffusion v2主要在LAION - 2B(en)的子集上进行训练,该子集由仅限于英语描述的图像组成。使用其他语言的社区和文化的文本和图像可能没有得到充分考虑。这影响了模型的整体输出,因为白人和西方文化通常被设定为默认值。此外,模型使用非英语提示生成内容的能力明显比使用英语提示差。Stable Diffusion v2反映并加剧了偏差,无论输入或其意图如何,都必须提醒查看者谨慎使用。
训练
训练数据
模型开发者使用以下数据集进行模型训练:
- LAION - 5B及其子集(详情如下)。训练数据进一步使用LAION的NSFW检测器进行过滤,“p_unsafe”分数为0.1(保守)。有关更多详细信息,请参阅LAION - 5B的NeurIPS 2022论文和关于该主题的评审讨论。
训练过程
Stable Diffusion 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。
目前提供以下检查点:
512 - base - ema.ckpt
:在LAION - 5B的一个过滤了明确色情材料的子集上,以分辨率256x256
进行550k步训练,使用[LAION - NSFW分类器](https://github.com/LAION - AI/CLIP - based - NSFW - Detector),punsafe = 0.1
,美学分数 >=4.5
。在同一数据集上,以分辨率>= 512x512
进行850k步训练,分辨率为512x512
。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
- 学习率:在10,000步内热身至0.0001,然后保持不变
评估结果
使用不同的无分类器引导尺度(1.5、2.0、3.0、4.0、5.0、6.0、7.0、8.0)和50步DDIM采样步骤进行评估,显示了各检查点的相对改进:
在512x512分辨率下,使用50步DDIM采样和来自COCO2017验证集的10000个随机提示进行评估。未针对FID分数进行优化。
环境影响
Stable Diffusion v1估计排放量
根据该信息,我们使用Lacoste等人(2019)中提出的机器学习影响计算器估计了以下CO2排放量。利用硬件、运行时间、云服务提供商和计算区域来估计碳影响。
- 硬件类型:A100 PCIe 40GB
- 使用时长:200000小时
- 云服务提供商:AWS
- 计算区域:US - east
- 碳排放(功耗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}
}
本模型卡片由Robin Rombach、Patrick Esser和David Ha编写,基于Stable Diffusion v1和DALL - E Mini模型卡片。
📄 许可证
本模型使用CreativeML Open RAIL++-M License许可证。

