模型:

stabilityai/stable-diffusion-2

英文

Stable Diffusion v2 模型卡

该模型卡关注的是与 Stable Diffusion v2 模型相关的模型,可在此处 here 获取。

stable-diffusion-2 模型是从 stable-diffusion-2-base (512-base-ema.ckpt)中恢复,并在相同数据集上进行 150,000 步的训练。然后在 768x768 的图像上继续训练 140,000 步。

模型详情

  • 开发者:Robin Rombach、Patrick Esser

  • 模型类型:基于扩散的文本到图像生成模型

  • 语言:英语

  • 许可证: CreativeML Open RAIL++-M License

  • 模型描述:该模型可用于基于文本提示生成和修改图像。它是一个 Latent Diffusion Model ,使用固定的预训练文本编码器( OpenCLIP-ViT/H )。

  • 更多信息的资源: GitHub Repository

  • 引用方式:

    @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}
    }
    

示例

使用 ?'s Diffusers library 以简单高效的方式运行 Stable Diffusion 2。

pip install diffusers transformers accelerate scipy safetensors

运行流程(如果不更换调度程序,将使用默认的 DDIM,在此示例中我们将其更换为 EulerDiscreteScheduler):

from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler

model_id = "stabilityai/stable-diffusion-2"

# Use the Euler scheduler here instead
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 RAM 较低,请确保在将其发送到 cuda 后添加 pipe.enable_attention_slicing() 以减少 VRAM 的使用(但会降低速度)

用途

直接使用

该模型仅供研究目的使用。可能的研究领域和任务包括

  • 模型的安全部署,这些模型具有生成有害内容的潜力。
  • 探索和理解生成模型的局限性和偏见。
  • 生成艺术品,并在设计和其他艺术过程中使用。
  • 在教育或创作工具中的应用。
  • 生成模型的研究。

排除的用途如下所述。

误用、恶意使用和超出范围的使用

注意:本节最初取自 DALLE-MINI model card ,用于 Stable Diffusion v1,但同样适用于 Stable Diffusion v2 。

该模型不应用于故意创建或传播人们可能会感到困扰、压抑或冒犯的图像,或传播历史或当前的刻板印象。

超出范围的使用

该模型不是为人们或事件的真实陈述而训练的,因此使用该模型生成此类内容超出了该模型的能力范围。

误用和恶意使用

使用该模型生成对个人具有残忍性的内容是对该模型的误用。这包括但不限于:

  • 生成贬低、贬损或以其他方式有害的人或其环境、文化、宗教等的表达。
  • 故意推广或传播歧视性内容或有害刻板印象。
  • 未经个人同意冒充他人。
  • 在未经同意的情况下生成涉及性内容。
  • 虚假和误导信息
  • 极端暴力和血腥描绘
  • 分享版权或违反其使用条款的许可材料。
  • 分享违反其使用条款的版权或许可材料的修订内容。

限制和偏见

限制

  • 该模型无法达到完美的照片逼真效果
  • 该模型无法渲染可读的文本
  • 在涉及组合性的更难任务上表现不佳,例如渲染与“红色立方体位于蓝色球体上方”相对应的图像
  • 人脸和人物可能无法正确生成
  • 该模型主要使用英语标题进行训练,对其他语言的支持不如英语标题那样好
  • 模型的自编码部分是有损的
  • 该模型是在包含成人、暴力和性内容的大规模数据集 LAION-5B 的子集上训练的。为了部分缓解这一问题,我们使用 LAION 的 NFSW 检测器过滤了数据集(详见训练部分)。

偏见

虽然图像生成模型的功能令人印象深刻,但它们也可能强化或加剧社会偏见。Stable Diffusion 主要是在 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:基于分辨率为 256x256 的数据集的 550,000 步训练结果,该数据集已经过滤掉了明显的色情内容,使用 LAION-NSFW classifier 的 punsafe=0.1 和 aesthetic score >= 4.5。基于分辨率 >= 512x512 的相同数据集的 850,000 步训练结果。
  • 768-v-ema.ckpt:从 512-base-ema.ckpt 恢复,并使用 v-objective 在相同数据集上训练了 150,000 步。然后在我们的数据集的 768x768 子集上继续训练 140,000 步。
  • 512-depth-ema.ckpt:从 512-base-ema.ckpt 恢复,并进行了额外的 200,000 步微调。添加了一个额外的输入通道,用于处理由 MiDaS (dpt_hybrid)生成的(相对)深度预测,作为额外的条件。处理此额外信息的 U-Net 的额外输入通道被初始化为零。
  • 512-inpainting-ema.ckpt:从 512-base-ema.ckpt 恢复,并继续训练了另外 200,000 步。采用了在 LAMA 中提出的掩码生成策略,结合用于掩码图像的潜在 VAE 表示,并用作额外的条件。处理此额外信息的 U-Net 的额外输入通道被初始化为零。相同的策略用于训练 1.5-inpainting checkpoint
  • x4-upscaling-ema.ckpt:在 LAION 的 10M 子集上进行了 1.25M 步的训练,该子集包含尺寸 > 2048x2048 的图像。该模型在大小为 512x512 的裁剪上进行训练,是一个文本引导的 latent upscaling diffusion model 。除了文本输入外,它还接收一个 noise_level 作为输入参数,该参数可用于根据预先定义的扩散计划向低分辨率输入添加噪声。
  • 硬件: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 采样步骤,评估了各个检查点的相对改进:

使用 50 步的 DDIM 和来自 COCO2017 验证集的 10000 个随机提示进行评估,评估分辨率为 512x512。未针对 FID 分数进行优化。

环境影响

Stable Diffusion v1 估计的碳排放量 根据这些信息,我们使用 Machine Learning Impact calculator Lacoste et al. (2019) 中介绍的方法估计以下二氧化碳排放量。根据硬件、运行时间、云服务提供商和计算区域,估计出的碳排放量如下:

  • 硬件类型:A100 PCIe 40GB
  • 使用小时:200,000
  • 云服务提供商:AWS
  • 计算区域:US-east
  • 排放碳量(电力消耗 x 时间 x 基于电网位置的碳排放量):15,000 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 model card