模型简介
模型特点
模型能力
使用案例
🚀 IF-I-L-v1.0
DeepFloyd-IF 是一款基于像素的文本到图像三级级联扩散模型,能够生成在照片级真实感和语言理解方面达到新的最先进水平的图片。这是一个高效的模型,性能超越了当前最先进的模型,在 COCO 数据集上实现了零样本 FID - 30K 分数为 6.66
的成绩。
灵感来源于 具有深度语言理解能力的照片级文本到图像扩散模型
🚀 快速开始
IF 与 🤗 Hugging Face 🧨 diffusers 库集成,该库经过优化,可在显存低至 14 GB 的 GPU 上运行。
在使用 IF 之前,你需要接受其使用条件,具体操作如下:
- 确保拥有 Hugging Face 账户 并登录。
- 在 [DeepFloyd/IF - I - L - v1.0](https://huggingface.co/DeepFloyd/IF - I - L - v1.0) 的模型卡片上接受许可协议。
- 确保在本地登录。安装
huggingface_hub
:
pip install huggingface_hub --upgrade
在 Python shell 中运行登录函数:
from huggingface_hub import login
login()
并输入你的 [Hugging Face Hub 访问令牌](https://huggingface.co/docs/hub/security - tokens#what - are - user - access - tokens)。
接下来,安装 diffusers
及其依赖项:
pip install diffusers accelerate transformers safetensors sentencepiece
现在,你可以在本地运行该模型。
默认情况下,diffusers
使用 [模型 CPU 卸载](https://huggingface.co/docs/diffusers/optimization/fp16#model - offloading - for - fast - inference - and - memory - savings) 功能,只需 14 GB 的显存即可运行整个 IF 管道。
如果你使用的是 torch>=2.0.0
,请确保 移除所有 enable_xformers_memory_efficient_attention()
函数。
💻 使用示例
基础用法
# 加载所有阶段并卸载到 CPU
from diffusers import DiffusionPipeline
from diffusers.utils import pt_to_pil
import torch
# 阶段 1
stage_1 = DiffusionPipeline.from_pretrained("DeepFloyd/IF-I-L-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-L-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 文档:
- 🚀 [优化推理时间](https://huggingface.co/docs/diffusers/api/pipelines/if#optimizing - for - speed)
- ⚙️ [优化推理期间的低内存使用](https://huggingface.co/docs/diffusers/api/pipelines/if#optimizing - for - memory)
有关如何使用 IF 的更多详细信息,请查看 IF 博客文章 和 文档 📖。
Diffusers dreambooth 脚本也支持对 🎨 IF 进行微调。通过参数高效微调,你可以使用单块 GPU 和大约 28 GB 的显存为 IF 添加新的概念。
✨ 主要特性
- 先进的图像生成能力:DeepFloyd - IF 是基于像素的文本到图像三级级联扩散模型,能生成具有新的最先进水平的照片级真实感和语言理解能力的图片。
- 高效性能:超越当前最先进的模型,在 COCO 数据集上实现了零样本 FID - 30K 分数为
6.66
的成绩。 - 集成优化:与 🤗 Hugging Face 的 🧨 diffusers 库集成,经过优化可在显存低至 14 GB 的 GPU 上运行。
📦 安装指南
pip install huggingface_hub --upgrade
pip install diffusers accelerate transformers safetensors sentencepiece
📚 详细文档
模型详情
属性 | 详情 |
---|---|
开发者 | DeepFloyd, StabilityAI |
模型类型 | 基于像素的文本到图像级联扩散模型 |
级联阶段 | I |
参数数量 | 900M |
语言 | 主要为英语,在一定程度上支持其他罗曼语系语言 |
许可证 | [DeepFloyd IF 许可协议](https://huggingface.co/spaces/DeepFloyd/deepfloyd - if - license) |
模型描述 | DeepFloyd - IF 由冻结的文本模型和三个像素级联扩散模块组成,每个模块用于生成分辨率逐渐提高的图像:64x64、256x256 和 1024x1024。模型的所有阶段都使用基于 T5 变压器的冻结文本编码器来提取文本嵌入,然后将其输入到通过交叉注意力和注意力池化增强的 UNet 架构中。 |
更多信息资源 | [GitHub](https://github.com/deep - floyd/IF)、网站、所有链接 |
训练
训练数据
12 亿个文本 - 图像对(基于 LAION - A 和少量额外的内部数据集)。
在训练的任何级联和阶段都不使用数据集的测试/验证部分。COCO 的验证部分有助于在训练期间展示“在线”损失行为(以发现意外情况和其他问题),但该数据集从不用于训练。
训练过程
IF - I - L - v1.0 是基于像素的扩散级联模型,使用 T5 - Encoder 嵌入(隐藏状态)生成 64 像素的图像。在训练期间:
- 图像预处理:通过偏移中心裁剪增强(从中心随机偏移最多 0.1 的大小)将图像裁剪为正方形,并使用
Pillow==9.2.0
的 BICUBIC 重采样方法将其调整为 64 像素,reducing_gap=None
(有助于避免混叠),并处理为张量 BxCxHxW。 - 文本编码:文本提示通过开源的冻结 T5 - v1_1 - xxl 文本编码器进行编码(该编码器由 Google 团队完全训练),随机将 10% 的文本丢弃为空字符串,以增加无分类器引导(CFG)的能力。
- 文本编码器输出处理:文本编码器的非池化输出被输入到投影层(无激活的线性层),并通过受控的混合自注意力和交叉注意力在扩散模型的 UNet 主干中使用。同时,文本编码器的输出通过注意力池化(64 个头)进行池化,并作为额外特征用于时间嵌入。
- 扩散过程:扩散过程限制在 1000 个离散步骤,采用余弦 beta 噪声调度。
- 损失函数:损失是添加到图像的噪声与 UNet 预测之间的重建目标。
- 训练参数:IF - I - L - v1.0 检查点的训练过程在所有数据集上进行了 2500000 步 + 500000 步的 64x64 分辨率训练,采用 OneCycleLR 策略、few - bit 反向 GELU 激活函数、AdamW8bit 优化器 + DeepSpeed - Zero1,T5 - Encoder 完全冻结。
硬件
20 x 8 x A100 GPUs
优化器
AdamW8bit + DeepSpeed ZeRO - 1
批次大小
3200
学习率
- 前 2500000 步:采用 one - cycle 余弦策略,热身 10000 步,起始学习率
start_lr = 4e - 6
,最大学习率max_lr = 1e - 4
,最终学习率final_lr = 1e - 8
。 - 额外的 500000 步:采用 one - cycle 余弦策略,热身 50000 步,起始学习率
start_lr = 1e - 8
,最大学习率max_lr = 4e - 6
,最终学习率final_lr = 4e - 8
。
评估结果
FID - 30K: 8.06
使用方式
直接使用
该模型用于研究目的。任何将该模型用于生产环境的尝试不仅需要遵循许可协议,还需要部署者承担全部责任。
可能的研究领域和任务包括:
- 生成艺术图像并用于设计和其他艺术过程。
- 安全部署有可能生成有害内容的模型。
- 探索和理解生成模型的局限性和偏差。
- 在教育或创意工具中的应用。
- 生成模型的研究。
排除的使用情况如下所述。
滥用、恶意使用和超出范围的使用
⚠️ 重要提示
本部分内容最初来自 [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 反映并加剧了偏差,因此无论输入内容或意图如何,都建议用户谨慎使用。
🔧 技术细节
IF - I - L - v1.0 是基于像素的扩散级联模型,利用 T5 - Encoder 嵌入生成 64 像素的图像。在训练过程中,图像和文本经过一系列处理后输入到模型中。图像通过偏移中心裁剪和重采样调整为 64 像素,文本通过冻结的 T5 - v1_1 - xxl 文本编码器编码,并进行随机丢弃处理以支持无分类器引导。文本编码器的输出经过投影和注意力池化后用于模型的不同部分。扩散过程限制在 1000 个离散步骤,采用余弦 beta 噪声调度,损失函数为噪声重建目标。训练过程采用 OneCycleLR 策略、few - bit 反向 GELU 激活函数、AdamW8bit 优化器 + DeepSpeed - Zero1,T5 - Encoder 完全冻结。
📄 许可证
本许可证协议(根据本许可证协议可能进行修订,“许可证”)由你或你的雇主或其他实体(如果你代表你的雇主或其他实体签订本协议)(“被许可方”或“你”)与 Stability AI Ltd.(“Stability AI”或“我们”)签订,适用于你使用 Stability AI 根据本许可证提供的任何计算机程序、算法、源代码、目标代码或软件(“软件”)以及 Stability AI 提供的与软件相关的任何规格、手册、文档和其他书面信息(“文档”)。
通过点击下方的“我接受”或使用软件,即表示你同意本许可证的条款。如果你不同意本许可证,则你无权使用软件或文档(统称为“软件产品”),并且必须立即停止使用软件产品。如果你代表你的雇主或其他实体同意受本许可证条款的约束,你向 Stability AI 声明并保证你拥有充分的法律授权使你的雇主或该实体受本许可证的约束。如果你没有必要的授权,则你不得代表你的雇主或其他实体接受本许可证或访问软件产品。
1. 许可授予
a. 在你遵守文档以及第 2、3 和 5 节的前提下,Stability AI 根据其版权权益授予你非排他性、全球性、不可转让、不可再许可、可撤销、免版税且有限的许可,仅用于你的非商业研究目的,以复制、分发和创建软件的衍生作品。上述许可仅针对你个人,未经 Stability AI 的事先书面同意,你不得转让或再许可本许可证或本许可证下的任何其他权利或义务;任何此类转让或再许可均无效,并将自动且立即终止本许可证。
b. 你可以仅为与上述授予的软件许可相关的目的制作合理数量的文档副本。
c. 本节(许可授予)中明确规定的权利授予是你在软件产品中获得的全部权利授予,未以弃权、禁止反言、暗示、衡平法或其他方式授予任何其他许可。Stability AI 及其许可方保留本许可证未明确授予的所有权利。
2. 限制
你不得,也不得允许、协助或促使任何第三方: 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 代理或其他方法伪装你的位置。
3. 归因
在分发软件产品的任何副本(以及其衍生作品或包含软件产品的作品)时,你必须提供 (i) 本许可证的副本,以及 (ii) 以下归因通知:“DeepFloyd 依据 DeepFloyd 许可证获得许可,版权所有 (c) Stability AI Ltd. 保留所有权利。”
4. 免责声明
软件产品“按原样”和“带有所有缺陷”提供,不提供任何形式的明示或暗示保证。Stability AI 明确否认所有明示或暗示的陈述和保证,无论是依据法规、惯例、使用方式还是其他方式,涉及与软件产品相关的任何事项,包括但不限于适销性、特定用途适用性、所有权、令人满意的质量或不侵权的暗示保证。Stability AI 不保证软件产品将无错误、无病毒或其他有害组件,或产生任何特定结果。
5. 责任限制
在法律允许的最大范围内,Stability AI 在任何情况下均不对你承担责任:(A) 根据任何责任理论,无论是基于合同、侵权、疏忽、严格责任、保证还是本许可证下的其他方式;或 (B) 对于任何间接、后果性、示范性、偶发性、惩罚性或特殊损害或利润损失,即使 Stability AI 已被告知此类损害的可能性。软件产品、其组成组件以及任何输出(统称为“软件材料”)并非设计或打算用于任何软件材料的故障或缺陷可能合理预见会导致任何人严重受伤的应用或情况,包括潜在的歧视或侵犯个人隐私权,或导致严重的人身、财产或环境损害(每一种情况均为“高风险使用”)。如果你选择将任何软件材料用于高风险使用,则你自行承担风险。你同意设计并实施与高风险使用相关的适当决策和风险缓解程序及政策,以便即使任何软件材料出现故障或缺陷,受该活动影响的人员或财产的安全仍能保持在高风险使用领域合理、适当和合法的水平。
6. 赔偿
你将赔偿、辩护并使 Stability AI 及其子公司和关联公司以及我们各自的股东、董事、高级管理人员、员工、代理人、继任者和受让人(统称为“Stability AI 方”)免受因以下原因引起的或与之相关的任何索赔、要求、指控、诉讼、程序或调查(统称为“索赔”)所导致的任何损失、责任、损害、罚款、处罚和费用(包括合理的律师费):(a) 你访问或使用软件产品(以及此类访问或使用所产生的任何结果或数据),包括任何高风险使用(定义见下文);(b) 你违反本许可证;或 (c) 你侵犯、盗用或以其他方式侵犯他人的任何权利(包括知识产权或其他专有权利和隐私权)。你将立即将任何此类索赔通知 Stability AI 方,并与 Stability AI 方合作辩护此类索赔。你还将授予 Stability AI 方在 Stability AI 自行选择的情况下对任何索赔进行辩护或和解的独家控制权。本赔偿是对你与 Stability AI 或其他 Stability AI 方之间的书面协议中规定的任何其他赔偿或补救措施的补充,而非替代。
7. 终止;存续
a. 如果你违反本许可证的条款,本许可证将自动终止。
b. 我们可以随时通知你(包括电子通知)全部或部分终止本许可证。
c. 以下各节在本许可证终止后仍然有效:第 2 节(限制)、第 3 节(归因)、第 4 节(免责声明)、第 5 节(责任限制)、第 6 节(赔偿)、第 7 节(终止;存续)、第 8 节(第三方材料)、第 9 节(商标)、第 10 节(适用法律;争议解决)和第 11 节(杂项)。
8. 第三方材料
软件产品可能包含第三方软件或其他组件(包括免费和开源软件)(以上所有内容统称为“第三方材料”),这些材料受各自第三方许可方的许可条款约束。你与第三方的交易或通信以及你对任何第三方材料的使用或交互完全是你与第三方之间的事情。Stability AI 不控制或认可任何第三方材料,也不对其作出任何陈述或保证,你访问和使用此类第三方材料需自行承担风险。
9. 商标
作为本许可证的一部分,未授予被许可方任何商标许可,未经 Stability AI 的事先书面许可,你不得使用与 Stability AI 相关的任何名称或标志,但为作出本协议“归因”部分要求的引用所必需的范围除外。
10. 适用法律;争议解决
本许可证将受加利福尼亚州法律管辖并依其解释,不考虑法律冲突条款。因本许可证引起的或与之相关的任何诉讼或程序将在加利福尼亚州圣马特奥县的联邦或州法院提起,各方不可撤销地服从此类法院的管辖权和审判地。
11. 杂项
如果本许可证的任何条款或部分条款违法、无效或不可执行,则该条款或条款的部分应视为从本许可证中分割出来,且不影响任何其余条款的有效性和可执行性。Stability AI 未行使或执行本许可证的任何权利或条款并不构成对该权利或条款的放弃。本许可证未赋予任何第三方受益人的权利。本许可证连同文档包含了你与 Stability AI 就本许可证主题事项达成的全部理解,并取代了你与 Stability AI 就该主题事项达成的所有其他书面或口头协议和理解。对本许可证任何条款的任何更改或补充除非以书面形式作出并由你和 Stability AI 的授权代表签署,否则不具有约束力。









