英文

Stable Diffusion图像变体模型卡

? 发布V2模型,并修复了模糊问题! ?

?? 现在在 ? Diffusers 中本地支持Image Variations! ??

Version 2

这个版本的Stable Diffusion经过了微调,从 CompVis/stable-diffusion-v1-4-original 开始接受CLIP图像嵌入而不是文本嵌入。这使得使用Stable Diffusion创建“图像变体”类似于DALLE-2成为可能。这个权重版本已经被移植到了huggingface的Diffusers库中,使用Diffusers库需要使用 Lambda Diffusers repo

这个模型经过了两个阶段的训练,时间比原始的变体模型更长,图像质量和CLIP相似得分比原始版本更好。

查看训练细节和v1与v2的比较如下所示。

示例

确保使用Diffusers版本 >=0.8.0(对于较早的版本,请参阅本模型卡底部的旧说明)

from diffusers import StableDiffusionImageVariationPipeline
from PIL import Image

device = "cuda:0"
sd_pipe = StableDiffusionImageVariationPipeline.from_pretrained(
  "lambdalabs/sd-image-variations-diffusers",
  revision="v2.0",
  )
sd_pipe = sd_pipe.to(device)

im = Image.open("path/to/image.jpg")
tform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Resize(
        (224, 224),
        interpolation=transforms.InterpolationMode.BICUBIC,
        antialias=False,
        ),
    transforms.Normalize(
      [0.48145466, 0.4578275, 0.40821073],
      [0.26862954, 0.26130258, 0.27577711]),
])
inp = tform(im).to(device).unsqueeze(0)

out = sd_pipe(inp, guidance_scale=3)
out["images"][0].save("result.jpg")

正确调整大小的重要性...(或者不调整)

请注意,由于在训练过程中的一个小失误,模型期望调整大小的图像没有抗锯齿。这样做的方式对于推理过程中的调整大小非常重要。当将PIL图像传递给Diffusers流水线时,会应用抗锯齿效果,因此最好输入一个您根据上面示例中的转换手动准备好的张量!

这里是在调整大小时生成的图像的示例,上面的图像是没有使用抗锯齿效果的,下面的图像是使用了抗锯齿效果的。(输入是 this image

V1 vs V2

下面是V1和V2的一个例子,版本二经过更加细致和长时间的训练,具体细节见下方。V2-上方 vs V1-下方

输入图像:

一个重要的事项是由于更长的训练时间,V2似乎记住了一些来自训练数据的常见图像,例如现在对《戴珍珠耳环的少女》的上一个例子几乎完美地复制了原始图片,而不是创造变体。您可以通过指定revision="v1.0"来始终使用v1。

对于以戴珍珠耳环的少女作为输入的v2输出(导向尺度=3)

训练

训练过程 这个模型是从Stable Diffusion v1-3微调而来的,其中文本编码器被图像编码器替换。训练过程与Stable Diffusion相同,只是图像通过ViT-L/14图像编码器进行编码,包括将最终投影层映射到CLIP共享嵌入空间。该模型在LAION改进美学6plus上进行了训练。

  • 硬件:8个A100-40GB GPU(由 Lambda GPU Cloud 提供)

  • 优化器:AdamW

  • 阶段1 - 仅微调Stable Diffusion v1.4模型的CrossAttention层权重

    • 步骤:46,000
    • 批次:批量大小=4,GPU=8,梯度累积=4。总批量大小=128
    • 学习率:在前10,000个步骤中热身到1e-5,然后保持不变
  • 阶段2 - 从第1阶段恢复训练整个unet

    • 步骤:50,000
    • 批次:批量大小=4,GPU=8,梯度累积=5。总批量大小=160
    • 学习率:在5,000个步骤中热身到1e-5,然后保持不变

使用了 modified version of the original Stable Diffusion training code 进行训练。

用途

以下部分改编自 Stable Diffusion model card

直接使用

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

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

以下是不包括在内的用途的描述。

不当使用、恶意使用和超出范围使用

该模型不应用于有意制作或传播人们预计会感到不安、困扰或冒犯的图像的目的,包括生成可能令人不安、困扰或冒犯的内容,或传播历史或现实的刻板印象的内容。

超出范围使用

该模型未经培训,不能真实地表现人或事件,因此使用该模型生成该类内容超出了该模型能力的范围。

不当使用和恶意使用

使用该模型生成对个人有害的内容是该模型的不当使用。这包括但不限于:

  • 生成贬损、非人格化或其他有害的人或环境、文化、宗教等的表现。
  • 故意传播或宣传歧视性的内容或有害的刻板印象。
  • 未经个人同意冒充个人。
  • 未经可能看到此类内容的人同意的性内容。
  • 误导和虚假信息
  • 极端暴力和血腥的表现
  • 共享受版权或许可的材料,以违反其使用条款。
  • 共享修改并违反其使用条款的版权或许可材料的内容。

限制和偏见

限制

  • 该模型无法实现完美的照片逼真度
  • 该模型无法渲染可读的文本
  • 该模型在涉及组合性的更难的任务上表现不佳,例如渲染与“红色立方体顶部的蓝色球体”相对应的图像
  • 人脸和一般人物可能无法正确生成
  • 该模型主要通过英文标题进行训练,并不适用于其他语言
  • 模型的自编码部分有损失
  • 该模型是在包含成人内容的大规模数据集 LAION-5B 上进行训练的,如果没有其他安全机制和考虑因素,不能在产品中使用
  • 未使用额外的措施来消除数据集中的重复内容。因此,我们观察到训练数据中存在一定程度的重复图像的记忆现象。可以在 https://rom1504.github.io/clip-retrieval/ 上搜索训练数据,以可能帮助检测到已记忆的图像。

偏见

虽然图像生成模型的能力令人印象深刻,但它们也可能强化或加剧社会偏见。Stable Diffusion v1是根据 LAION-2B(en) 的子集进行训练的,该数据集主要包含英文描述的图像。来自使用其他语言的社区和文化的文本和图像可能没有得到充分考虑。这影响了模型的整体输出,因为白人和西方文化通常被默认为默认值。此外,与英语提示相比,该模型使用非英语语言提示生成内容的能力明显较差。

安全模块

该模型的预期使用是与Diffusers中的 Safety Checker 一起使用。此检查器通过在生成图像后,将模型输出与已知的硬编码NSFW概念进行比较来工作。这些概念是有意隐藏的,以减少逆向工程此过滤器的可能性。具体来说,该检查器会将生成的图像与CLIPModel的嵌入空间中各个有害概念的手工设计权重进行比较。

旧说明

如果您使用的是diffusers版本