模型简介
模型特点
模型能力
使用案例
🚀 IF-II-M-v1.0
DeepFloyd-IF 是一款基于像素的文本到图像的三级级联扩散模型,能够生成在逼真度和语言理解方面达到新水平的图片。这是一个高效的模型,性能超越了当前的先进模型,在 COCO 数据集上实现了零样本 FID - 30K 分数为 6.66
的成绩。
🚀 快速开始
DeepFloyd-IF 集成了 🤗 Hugging Face 的 🧨 diffusers 库,该库经过优化,可在显存低至 14GB 的 GPU 上运行。
在使用 IF 之前,你需要接受其使用条件,具体操作如下:
- 确保你拥有 Hugging Face 账户 并已登录。
- 在 DeepFloyd/IF-I-M-v1.0 的模型卡片上接受许可协议。
- 确保在本地登录。安装
huggingface_hub
:
pip install huggingface_hub --upgrade
在 Python shell 中运行登录函数:
from huggingface_hub import login
login()
并输入你的 Hugging Face Hub 访问令牌。
接下来,安装 diffusers
及其依赖项:
pip install diffusers accelerate transformers safetensors sentencepiece
现在,你就可以在本地运行该模型了。
默认情况下,diffusers
使用 模型 CPU 卸载 功能,只需 14GB 的显存即可运行整个 IF 管道。
如果你使用的是 torch>=2.0.0
,请确保 移除所有 enable_xformers_memory_efficient_attention()
函数。
✨ 主要特性
- 先进的图像生成能力:能够生成具有高度逼真度和良好语言理解能力的图像。
- 高效的模型性能:在 COCO 数据集上取得了优异的零样本 FID - 30K 分数。
- 集成 Hugging Face 库:与 🤗 Hugging Face 的 🧨 diffusers 库 集成,方便使用。
📦 安装指南
pip install huggingface_hub --upgrade
pip install diffusers accelerate transformers safetensors sentencepiece
💻 使用示例
基础用法
# 加载所有阶段并卸载到 CPU
from diffusers import DiffusionPipeline
from diffusers.utils import pt_to_pil
import torch
# 阶段 1
stage_1 = DiffusionPipeline.from_pretrained("DeepFloyd/IF-I-M-v1.0", variant="fp16", torch_dtype=torch.float16)
stage_1.enable_xformers_memory_efficient_attention() # 如果 torch.__version__ >= 2.0.0 则移除该行
stage_1.enable_model_cpu_offload()
# 阶段 2
stage_2 = DiffusionPipeline.from_pretrained(
"DeepFloyd/IF-II-M-v1.0", text_encoder=None, variant="fp16", torch_dtype=torch.float16
)
stage_2.enable_xformers_memory_efficient_attention() # 如果 torch.__version__ >= 2.0.0 则移除该行
stage_2.enable_model_cpu_offload()
# 阶段 3
safety_modules = {"feature_extractor": stage_1.feature_extractor, "safety_checker": stage_1.safety_checker, "watermarker": stage_1.watermarker}
stage_3 = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-x4-upscaler", **safety_modules, torch_dtype=torch.float16)
stage_3.enable_xformers_memory_efficient_attention() # 如果 torch.__version__ >= 2.0.0 则移除该行
stage_3.enable_model_cpu_offload()
# 获取文本嵌入
prompt = 'a photo of a kangaroo wearing an orange hoodie and blue sunglasses standing in front of the eiffel tower holding a sign that says "very deep learning"'
# 文本嵌入
prompt_embeds, negative_embeds = stage_1.encode_prompt(prompt)
# 运行阶段 1
generator = torch.manual_seed(0)
image = stage_1(prompt_embeds=prompt_embeds, negative_prompt_embeds=negative_embeds, generator=generator, output_type="pt").images
pt_to_pil(image)[0].save("./if_stage_I.png")
# 运行阶段 2
image = stage_2(
image=image, prompt_embeds=prompt_embeds, negative_prompt_embeds=negative_embeds, generator=generator, output_type="pt"
).images
pt_to_pil(image)[0].save("./if_stage_II.png")
# 运行阶段 3
image = stage_3(prompt=prompt, image=image, generator=generator, noise_level=100).images
image[0].save("./if_stage_III.png")
高级用法
使用 diffusers
有多种方法可以加快推理时间并进一步降低内存消耗。具体操作请参考 Diffusers 文档:
- 🚀 优化推理时间
- ⚙️ 优化推理过程中的低内存使用
有关如何使用 IF 的更多详细信息,请参考 IF 博客文章 和 文档 📖。
Diffusers 的 dreambooth 脚本还支持微调 🎨 IF。通过参数高效微调,你可以使用单个 GPU 和约 28GB 的显存为 IF 添加新的概念。
📚 详细文档
模型详情
属性 | 详情 |
---|---|
开发者 | DeepFloyd, StabilityAI |
模型类型 | 基于像素的文本到图像级联扩散模型 |
级联阶段 | II |
参数数量 | 450M |
支持语言 | 主要为英语,在一定程度上支持其他罗曼语系语言 |
许可证 | DeepFloyd IF 许可协议 |
模型描述 | DeepFloyd - IF 由冻结文本模型和三个像素级联扩散模块组成,每个模块用于生成分辨率逐渐提高的图像:64x64、256x256 和 1024x1024。模型的所有阶段都使用基于 T5 变压器的冻结文本编码器来提取文本嵌入,然后将其输入到通过交叉注意力和注意力池化增强的 UNet 架构中 |
更多信息资源 | [GitHub](https://github.com/deep - floyd/IF),网站,所有链接 |
训练信息
- 训练数据:12 亿个文本 - 图像对(基于 LAION - A 和少量额外的内部数据集)。在训练的任何级联和阶段都不使用数据集的测试/验证部分。COCO 的验证部分有助于在训练期间展示“在线”损失行为(以发现意外情况和其他问题),但该数据集从不用于训练。
- 训练过程:IF - II - M - v1.0 是一个基于像素的扩散级联,使用 T5 - Encoder 嵌入(隐藏状态)将图像从 64px 提升到 256px。在训练期间:
- 使用
Pillow==9.2.0
的 BICUBIC 重采样(reducing_gap = None,有助于避免混叠)将图像通过移位中心裁剪增强(从中心随机移位不超过大小的 0.1)裁剪为正方形,并调整为 64px(低分辨率)和 256px(真实值),然后处理为张量 BxCxHxW。 - 低分辨率图像通过噪声(q - 采样方法)进行额外增强,级联 - I 系列使用相同的扩散配置。将均匀分布的随机化增强噪声参数(aug - level)作为条件添加到 Unet 中,由可训练层的时间步嵌入和线性投影(带激活)进行处理。
- 通过开源的冻结 T5 - v1_1 - xxl 文本编码器对文本提示进行编码(该编码器完全由 Google 团队训练),随机将 10% 的文本丢弃为空字符串,以增加无分类器引导(CFG)的能力。
- 文本编码器的非池化输出被输入到投影(无激活的线性层)中,并通过受控的混合自注意力和交叉注意力在扩散模型的 UNet 主干中使用。
- 文本编码器的输出还通过注意力池化(64 个头)进行池化,并作为额外特征用于时间嵌入。
- 扩散过程限制为 1000 个离散步骤,使用余弦 beta 噪声调度。
- 损失是添加到图像中的噪声与 UNet 预测之间的重建目标。
- 检查点 IF - II - M - v1.0 的训练过程在所有数据集上以 2500000 步的分辨率 256x256 进行,使用 OneCycleLR 策略、few - bit 反向 GELU 激活、优化器 AdamW8bit + DeepSpeed - Zero1,T5 - 编码器完全冻结。
- 使用
- 硬件:24 x 8 x A100 GPUs
- 优化器:AdamW8bit + DeepSpeed ZeRO - 1
- 批次大小:1536
- 学习率:one - cycle 余弦策略,热身 10000 步,起始学习率 = 4e - 6,最大学习率 = 1e - 4,最终学习率 = 1e - 8
评估结果
FID - 30K: 6.66
🔧 技术细节
IF - II - M - v1.0 是一个基于像素的文本到图像的级联扩散模型,其核心在于利用 T5 编码器的强大文本理解能力和 UNet 架构的图像生成能力。通过多个阶段的级联,逐步提高生成图像的分辨率。在训练过程中,采用了多种数据增强和优化策略,以提高模型的性能和泛化能力。例如,对图像进行裁剪和重采样处理,添加噪声增强,以及使用随机丢弃文本的方法来支持无分类器引导。同时,使用了先进的优化器和学习率策略,确保模型在大规模数据集上的高效训练。
📄 许可证
本模型使用 DeepFloyd IF 许可协议。详细的许可协议内容如下: DeepFloyd 许可协议 本许可协议(可根据本许可协议进行修订,“许可协议”)由您或您的雇主或其他实体(如果您代表您的雇主或其他实体签订本协议)(“被许可方”或“您”)与 Stability AI Ltd.(“Stability AI”或“我们”)签订,适用于您使用 Stability AI 根据本许可协议提供的任何计算机程序、算法、源代码、目标代码或软件(“软件”)以及 Stability AI 提供的与软件相关的任何规格、手册、文档和其他书面信息(“文档”)。
通过点击下方的“我接受”或使用软件,即表示您同意本许可协议的条款。如果您不同意本许可协议,则您无权使用软件或文档(统称“软件产品”),并且必须立即停止使用软件产品。如果您代表您的雇主或其他实体同意受本许可协议条款的约束,您向 Stability AI 声明并保证您拥有充分的合法权力使您的雇主或该实体受本许可协议的约束。如果您没有必要的权力,则您不得代表您的雇主或其他实体接受本许可协议或访问软件产品。
-
许可授予 a. 在您遵守文档以及第 2、3 和 5 节的前提下,Stability AI 授予您在 Stability AI 的版权权益下的非排他性、全球性、不可转让、不可再许可、可撤销、免版税且有限的许可,仅用于您的非商业研究目的,以复制、分发和创建软件的衍生作品。上述许可仅针对您个人,未经 Stability AI 的事先书面同意,您不得转让或再许可本许可协议或本许可协议下的任何其他权利或义务;任何此类转让或再许可均无效,并将自动且立即终止本许可协议。 b. 您可以仅为与上述授予的软件许可相关的目的制作合理数量的文档副本。 c. 本节 1(许可授予)中明确规定的权利授予是您在软件产品中的完整权利授予,除非通过弃权、禁止反言、暗示、衡平法或其他方式,否则不授予其他许可。Stability AI 及其许可方保留本许可协议未明确授予的所有权利。
-
限制 您不得,也不得允许、协助或促使任何第三方: a. 全部或部分地使用、修改、复制、再现、创建软件产品(或其任何衍生作品、包含软件产品的作品或软件产生的任何数据)的衍生作品或分发软件产品,用于(i)任何商业或生产目的,(ii)军事目的或用于核技术服务,(iii)监视目的,包括与监视相关的任何研究或开发,(iv)生物特征处理,(v)以任何侵犯、盗用或以其他方式违反任何第三方权利的方式,或(vi)以任何违反任何适用法律以及违反任何隐私或安全法律、规则、法规、指令或政府要求(包括《通用数据保护条例》(欧盟法规 (EU) 2016/679)、《加利福尼亚消费者隐私法》以及所有管理生物特征信息处理的法律)的方式,以及上述任何法律的所有修订和后续法律; b. 更改或删除软件产品上或其中出现的版权和其他专有通知; c. 使用任何设备、装置、软件或其他手段规避或移除 Stability AI 与软件相关使用的任何安全或保护措施,或规避或移除任何使用限制,或启用 Stability AI 禁用的功能;或 d. 对软件产品提供或施加任何更改、限制或与本许可协议条款不一致的条款。 e. 1) 违反任何适用的美国和非美国出口管制和贸易制裁法律(“出口法律”);2) 直接或间接出口、再出口、提供或以其他方式转让软件产品:(a) 给任何被出口法律禁止的个人、实体或国家;(b) 给美国或非美国政府限制方名单上的任何人;或 (c) 用于任何被出口法律禁止的目的,包括核武器、化学武器或生物武器或导弹技术应用;3) 如果您或他们:(a) 位于全面制裁的司法管辖区,(b) 当前列在美国或非美国限制方名单上,或 (c) 用于任何被出口法律禁止的目的,则不得使用或下载软件产品;并且 (4) 不得通过 IP 代理或其他方法伪装您的位置。
-
归属 在您分发的软件产品的任何副本(以及其衍生作品或包含软件产品的作品)时,您必须提供 (i) 本许可协议的副本,以及 (ii) 以下归属声明:“DeepFloyd 根据 DeepFloyd 许可协议获得许可,版权所有 (c) Stability AI Ltd. 保留所有权利。”
-
免责声明 软件产品“按原样”和“带有所有缺陷”提供,不提供任何形式的明示或暗示保证。Stability AI 明确否认所有关于软件产品的明示或暗示陈述和保证,无论是根据法规、习惯、惯例还是其他方式,包括但不限于适销性、特定用途适用性、所有权、令人满意的质量或不侵权的暗示保证。Stability AI 不保证软件产品将无错误或无病毒或其他有害组件,或产生任何特定结果。
-
责任限制 在法律允许的最大范围内,Stability AI 在任何情况下均不对您承担责任 (A) 根据任何责任理论,无论是基于合同、侵权、疏忽、严格责任、保证或本许可协议下的其他方式,或 (B) 对于任何间接、后果性、示范性、偶发性、惩罚性或特殊损害或利润损失,即使 Stability AI 已被告知此类损害的可能性。软件产品、其组成组件和任何输出(统称“软件材料”)并非设计或旨在用于任何软件材料的故障或缺陷可能合理预期会导致任何人严重伤害的应用或情况,包括潜在的歧视或侵犯个人隐私权,或导致严重的人身、财产或环境损害(每一项,“高风险使用”)。如果您选择将任何软件材料用于高风险使用,则您自行承担风险。您同意设计并实施适当的决策和风险缓解程序及政策,以应对高风险使用,以便即使软件材料出现故障或缺陷,受该活动影响的人员或财产的安全仍能保持在高风险使用领域合理、适当和合法的水平。
-
赔偿 您将赔偿、辩护并使 Stability AI 及其子公司和关联公司以及我们各自的股东、董事、高级管理人员、员工、代理人、继承人和受让人(统称“Stability AI 方”)免受因以下原因引起的或与之相关的任何索赔、要求、指控、诉讼、程序或调查(统称“索赔”)所产生的任何损失、负债、损害、罚款、处罚和费用(包括合理的律师费):(a) 您访问或使用软件产品(以及由此类访问或使用产生的任何结果或数据),包括任何高风险使用(定义见下文);(b) 您违反本许可协议;或 (c) 您侵犯、盗用或侵犯他人的任何权利(包括知识产权或其他专有权利和隐私权)。您将立即通知 Stability AI 方任何此类索赔,并与 Stability AI 方合作辩护此类索赔。您还将授予 Stability AI 方自行选择对任何索赔进行辩护或和解的唯一控制权。本赔偿是对您与 Stability AI 或其他 Stability AI 方之间的书面协议中规定的任何其他赔偿或补救措施的补充,而非替代。
-
终止;存续 a. 如果您违反本许可协议的条款,本许可协议将自动终止。 b. 我们可以随时通知您(包括电子通知)全部或部分终止本许可协议。 c. 本许可协议终止后,以下各节仍然有效:2(限制)、3(归属)、4(免责声明)、5(责任限制)、6(赔偿)、7(终止;存续)、8(第三方材料)、9(商标)、10(适用法律;争议解决)和 11(杂项)。
-
第三方材料 软件产品可能包含第三方软件或其他组件(包括免费和开源软件)(上述所有内容,“第三方材料”),这些材料受各自第三方许可方的许可条款约束。您与第三方的交易或通信以及您对任何第三方材料的使用或交互仅在您与第三方之间进行。Stability AI 不控制或认可任何第三方材料,也不对其作出任何陈述或保证,您访问和使用此类第三方材料自行承担风险。
-
商标 作为本许可协议的一部分,未授予被许可方任何商标许可,除非本协议“归属”部分要求进行引用所必需的范围,否则未经 Stability AI 的事先书面许可,不得使用与 Stability AI 相关的任何名称或标记。
-
适用法律;争议解决 本许可协议将根据加利福尼亚州的法律进行管辖和解释,不考虑法律冲突条款。因本许可协议引起的任何诉讼或程序将在加利福尼亚州圣马特奥县的联邦或州法院提起,各方不可撤销地接受此类法院的管辖权和审判地。
-
杂项 如果本许可协议的任何条款或部分条款违法、无效或不可执行,则该条款或部分条款应视为从本许可协议中分割出来,并且不影响任何其余条款的有效性和可执行性。Stability AI 未能行使或执行本许可协议的任何权利或条款,不构成对该权利或条款的放弃。本许可协议未赋予任何第三方受益人权利。本许可协议连同文档包含了您与 Stability AI 就本许可协议主题事项达成的全部理解,并取代了您与 Stability AI 就该主题事项达成的所有其他书面或口头协议和理解。除非以书面形式并由您和 Stability AI 的授权代表签署,否则对本许可协议任何条款的更改或补充均不具有约束力。
用途说明
直接使用
本模型仅供研究目的发布。任何将模型部署到生产环境的尝试不仅需要遵守许可协议,还需要部署者承担全部责任。
可能的研究领域和任务包括:
- 生成艺术图像并用于设计和其他艺术过程。
- 安全部署有可能生成有害内容的模型。
- 探究和理解生成模型的局限性和偏差。
- 在教育或创意工具中的应用。
- 生成模型的研究。
排除的使用情况如下所述。
滥用、恶意使用和超出范围使用
注意:本节内容最初取自 [DALLE - MINI 模型卡片](https://huggingface.co/dalle - mini/dalle - mini),曾用于 Stable Diffusion,同样适用于 IF。
不得使用该模型故意创建或传播会为人们创造敌对或疏离环境的图像。这包括生成人们可预见会感到不安、痛苦或冒犯的图像,或传播历史或当前刻板印象的内容。
超出范围使用
该模型并非为生成真实或准确反映人物或事件的内容而训练,因此使用该模型生成此类内容超出了该模型的能力范围。
滥用和恶意使用
使用该模型生成对个人残酷的内容属于对该模型的滥用。这包括但不限于:
- 生成贬低、非人化或以其他方式伤害人们或其环境、文化、宗教等的表现形式。
- 故意推广或传播歧视性内容或有害刻板印象。
- 未经他人同意冒充他人。
- 未经可能看到内容的人的同意发布性内容。
- 虚假和误导性信息
- 严重暴力和血腥场面的表现形式
- 违反版权或许可材料使用条款分享受版权保护或许可的材料。
- 违反版权或许可材料使用条款分享对受版权保护或许可材料的修改内容。
局限性和偏差
局限性
- 模型无法实现完美的逼真度。
- 模型主要使用英语字幕进行训练,在其他语言中的表现不佳。
- 模型在大规模数据集 [LAION - 5B](https://laion.ai/blog/laion - 5b/) 的一个子集上进行训练,该数据集包含成人、暴力和性内容。为了部分缓解这一问题,我们采取了...(见训练部分)。
偏差
虽然图像生成模型的能力令人印象深刻,但它们也可能强化或加剧社会偏差。IF 主要在 [LAION - 2B(en)](https://laion.ai/blog/laion - 5b/) 的子集上进行训练,该子集包含的图像仅限于英语描述。来自使用其他语言的社区和文化的文本和图像可能未得到充分考虑。这影响了模型的整体输出,因为白人和西方文化往往被设定为默认。此外,模型使用非英语提示生成内容的能力明显低于使用英语提示的能力。IF 反映并加剧了偏差,因此无论输入或意图如何,都建议查看者谨慎使用。
本模型卡片由 DeepFloyd 团队编写,基于 [StableDiffusion 模型卡片](https://huggingface.co/CompVis/stable - diffusion - v1 - 4)。









