缩略图: "https://repository-images.githubusercontent.com/523487884/fdb03a69-8353-4387-b5fc-0d85f888a63f"
数据集:
- ChristophSchuhmann/improved_aesthetics_6plus
许可证: creativeml-openrail-m
标签:
- stable-diffusion
- stable-diffusion-diffusers
- image-to-image
Stable Diffusion图像变体模型卡
📣 V2版本发布,模糊问题已修复!📣
🧨🎉 图像变体功能现已原生支持🤗 Diffusers!🎉🧨

版本2
此版本的Stable Diffusion是从CompVis/stable-diffusion-v1-4-original微调而来,改为接受CLIP图像嵌入而非文本嵌入。这使得可以使用Stable Diffusion创建类似于DALLE-2的“图像变体”。此权重版本已移植到huggingface的Diffusers库,要结合Diffusers库使用,需要Lambda Diffusers仓库。
该模型分两个阶段训练,且比原始变体模型训练时间更长,相比原始版本提供了更好的图像质量和更高的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("图片路径.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("结果.jpg")
正确调整尺寸的重要性...(或不调整)
由于训练时的一个疏忽,模型期望调整尺寸后的图像不进行抗锯齿处理。这在推理时以相同方式调整尺寸会产生很大影响。当向Diffusers管道传递PIL图像时,调整尺寸时会应用抗锯齿,因此最好输入一个已按上述示例手动准备的张量!
以下是调整尺寸时不使用(顶部)和使用(底部)抗锯齿生成的图像示例。(输入为此图像)


V1与V2对比
以下是V1与V2的示例,版本二训练更谨慎且时间更长,详情见下文。V2-顶部 vs V1-底部


输入图像:

需要注意的是,由于训练时间更长,V2似乎记住了训练数据中的一些常见图像,例如之前的《戴珍珠耳环的少女》示例几乎完美复现了原图而非创建变体。可通过指定revision="v1.0"
使用v1。
以《戴珍珠耳环的少女》为输入的v2输出(引导尺度=3)

训练
训练过程
此模型是从Stable Diffusion v1-3微调而来,其中文本编码器被替换为图像编码器。训练过程与Stable Diffusion相同,不同之处在于图像通过ViT-L/14图像编码器(包括到CLIP共享嵌入空间的最终投影层)进行编码。模型在LAION improved aesthetics 6plus数据集上训练。
训练使用了原始Stable Diffusion训练代码的修改版。
用途
以下部分改编自Stable Diffusion模型卡
直接使用
该模型仅用于研究目的。可能的研究领域和任务包括:
- 安全部署可能生成有害内容的模型。
- 探索和理解生成模型的局限性和偏见。
- 艺术创作及设计和艺术过程中的应用。
- 教育或创意工具中的应用。
- 生成模型的研究。
以下用途被排除在外。
滥用、恶意使用及超范围使用
该模型不应被用于故意创建或传播营造敌对或疏离环境的图像。包括生成人们可预见会感到不安、痛苦或冒犯的图像;或传播历史或当前刻板印象的内容。
超范围使用
该模型未训练为人物或事件的真实或事实性表现,因此使用该模型生成此类内容超出了模型的能力范围。
滥用和恶意使用
使用该模型生成对个体残忍的内容属于滥用。包括但不限于:
- 生成贬低、非人化或以其他方式伤害个人或其环境、文化、宗教等的内容。
- 故意推广或传播歧视性内容或有害刻板印象。
- 未经同意冒充个人。
- 未经可能看到的人同意生成性内容。
- 错误和虚假信息。
- 极端暴力和血腥的表现。
- 违反使用条款分享受版权或许可的材料。
- 违反使用条款分享受版权或许可材料的修改版本。
局限性和偏见
局限性
- 模型无法实现完美的照片级真实感。
- 模型无法渲染可读文本。
- 模型在涉及组合性的更复杂任务上表现不佳,如渲染“蓝色球体上的红色立方体”对应的图像。
- 面部和人物可能无法正确生成。
- 模型主要使用英文标题训练,在其他语言中表现不佳。
- 模型的自动编码部分是有损的。
- 模型在大规模数据集LAION-5B上训练,包含成人内容,未经额外安全机制和考虑不适合产品使用。
- 未使用额外措施去重数据集。因此,我们观察到训练数据中重复图像存在一定程度的记忆。可通过https://rom1504.github.io/clip-retrieval/搜索训练数据,可能有助于检测记忆图像。
偏见
尽管图像生成模型的能力令人印象深刻,但它们也可能强化或加剧社会偏见。Stable Diffusion v1在LAION-2B(en)的子集上训练,主要由英文描述的图像组成。使用其他语言的社区和文化的文本和图像可能未被充分代表。这影响了模型的整体输出,因为白人和西方文化常被设为默认。此外,模型使用非英文提示生成内容的能力显著差于英文提示。
安全模块
该模型的预期用途是与Diffusers中的安全检查器一起使用。该检查器通过将模型输出与已知硬编码的NSFW概念进行比对来工作。这些概念被故意隐藏以减少逆向工程此过滤器的可能性。具体来说,检查器在图像生成后比较CLIPModel
嵌入空间中有害概念的类别概率。这些概念与生成的图像一起传入模型,并与每个NSFW概念的手工权重进行比较。
旧指令
如果使用的Diffusers版本<0.8.0,没有StableDiffusionImageVariationPipeline
,此时需要使用旧版本(2ddbd90b14bc5892c19925b15185e561bc8e5d0a
)结合lambda-diffusers仓库:
首先克隆Lambda Diffusers并安装任何需求(以下示例在虚拟环境中):
git clone https://github.com/LambdaLabsML/lambda-diffusers.git
cd lambda-diffusers
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
然后运行以下Python代码:
from pathlib import Path
from lambda_diffusers import StableDiffusionImageEmbedPipeline
from PIL import Image
import torch
device = "cuda" if torch.cuda.is_available() else "cpu"
pipe = StableDiffusionImageEmbedPipeline.from_pretrained(
"lambdalabs/sd-image-variations-diffusers",
revision="2ddbd90b14bc5892c19925b15185e561bc8e5d0a",
)
pipe = pipe.to(device)
im = Image.open("你的输入图片路径.jpg")
num_samples = 4
image = pipe(num_samples*[im], guidance_scale=3.0)
image = image["sample"]
base_path = Path("outputs/im2im")
base_path.mkdir(exist_ok=True, parents=True)
for idx, im in enumerate(image):
im.save(base_path/f"{idx:06}.jpg")