模型简介
模型特点
模型能力
使用案例
🚀 IF-I-M-v1.0
DeepFloyd-IF 是一个基于像素的文本到图像的三级级联扩散模型,能够生成具有全新的、最先进的逼真度和语言理解能力的图片。这是一个高效的模型,性能优于当前最先进的模型,在 COCO 数据集上实现了零样本 FID-30K 分数达到 6.66
。
🚀 快速开始
在使用 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 的 VRAM 即可运行整个 IF 管道。
如果你使用的是 torch>=2.0.0
,请确保 移除所有 enable_xformers_memory_efficient_attention()
函数。
✨ 主要特性
DeepFloyd-IF 是一个基于像素的文本到图像的三级级联扩散模型,具有以下特性:
- 能够生成具有全新的、最先进的逼真度和语言理解能力的图片。
- 是一个高效的模型,性能优于当前最先进的模型,在 COCO 数据集上实现了零样本 FID-30K 分数达到
6.66
。
📦 安装指南
安装依赖
pip install diffusers accelerate transformers safetensors sentencepiece
pip install huggingface_hub --upgrade
登录 Hugging Face Hub
from huggingface_hub import login
login()
💻 使用示例
基础用法
加载所有阶段并卸载到 CPU
from diffusers import DiffusionPipeline
from diffusers.utils import pt_to_pil
import torch
# stage 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() # remove line if torch.__version__ >= 2.0.0
stage_1.enable_model_cpu_offload()
# stage 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() # remove line if torch.__version__ >= 2.0.0
stage_2.enable_model_cpu_offload()
# stage 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() # remove line if 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"'
# text embeds
prompt_embeds, negative_embeds = stage_1.encode_prompt(prompt)
运行第一阶段
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")
运行第二阶段
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")
运行第三阶段
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 的 VRAM 为 IF 添加新的概念。
📚 详细文档
模型详情
属性 | 详情 |
---|---|
开发者 | DeepFloyd, StabilityAI |
模型类型 | 基于像素的文本到图像级联扩散模型 |
级联阶段 | I |
参数数量 | 400M |
语言 | 主要为英语,在较小程度上支持其他罗曼语系语言 |
许可证 | DeepFloyd IF 许可协议 |
模型描述 | DeepFloyd-IF 由冻结的文本模型和三个像素级联扩散模块组成,每个模块旨在生成分辨率逐渐提高的图像:64x64、256x256 和 1024x1024。模型的所有阶段都使用基于 T5 变压器的冻结文本编码器来提取文本嵌入,然后将其输入到通过交叉注意力和注意力池化增强的 UNet 架构中。 |
更多信息资源 | GitHub, 网站, 所有链接 |
训练
训练数据
12 亿个文本 - 图像对(基于 LAION - A 和少量额外的内部数据集)。
在训练的任何级联和阶段都不使用数据集的测试/验证部分。COCO 数据集的验证部分有助于在训练期间展示“在线”损失行为(以发现意外情况和其他问题),但该数据集从不用于训练。
训练过程
IF - I - M - v1.0 是(IF 系列中)最小的基于像素的扩散级联模型,它使用 T5 - 编码器嵌入(隐藏状态)来生成 64px 的图像。在训练期间:
- 图像通过移位中心裁剪增强(从中心随机移位不超过大小的 0.1)裁剪为正方形,并使用
Pillow==9.2.0
的 BICUBIC 重采样方法调整为 64px,同时将 reducing_gap 设置为 None(有助于避免混叠),并处理为张量 BxCxHxW。 - 文本提示通过开源的冻结 T5 - v1_1 - xxl 文本编码器进行编码(该编码器完全由 Google 团队训练),随机 10% 的文本被置为空字符串,以增加分类器自由引导(CFG)的能力。
- 文本编码器的非池化输出被输入到投影(无激活的线性层)中,并通过受控的混合自注意力和交叉注意力在扩散模型的 UNet 主干中使用。
- 此外,文本编码器的输出通过注意力池化(64 个头)进行池化,并作为额外特征用于时间嵌入。
- 扩散过程限制为 1000 个离散步骤,采用余弦 beta 噪声调度。
- 损失是添加到图像中的噪声与 UNet 预测之间的重建目标。
- 检查点 IF - I - M - v1.0 的训练过程在所有数据集上以 64x64 的分辨率进行了 2500000 步,采用 OneCycleLR 策略、SiLU 激活函数、优化器 AdamW8bit + DeepSpeed - Zero1,T5 - 编码器完全冻结。
硬件
12 x 8 x A100 GPUs
优化器
AdamW8bit + DeepSpeed ZeRO - 1
批次大小
3072
学习率
单周期 余弦策略,热身 10000 步,起始学习率为 4e - 6,最大学习率为 1e - 4,最终学习率为 1e - 8。
评估结果
FID - 30K: 8.86
使用场景
直接使用
该模型是为研究目的而发布的。任何将该模型部署到生产环境中的尝试,不仅需要遵循许可协议,还需要部署者承担全部责任。
可能的研究领域和任务包括:
- 生成艺术图像,并用于设计和其他艺术过程。
- 安全部署有可能生成有害内容的模型。
- 探索和理解生成模型的局限性和偏差。
- 在教育或创意工具中的应用。
- 生成模型的研究。
排除的使用场景如下所述。
滥用、恶意使用和超出范围的使用
注意:本节内容最初来自 [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 反映并加剧了偏差,无论输入或其意图如何,都必须提醒用户谨慎使用。
🔧 技术细节
图像预处理
在训练过程中,图像通过移位中心裁剪增强(从中心随机移位不超过大小的 0.1)裁剪为正方形,并使用 Pillow==9.2.0
的 BICUBIC 重采样方法调整为 64px,同时将 reducing_gap 设置为 None(有助于避免混叠),并处理为张量 BxCxHxW。
文本编码
文本提示通过开源的冻结 T5 - v1_1 - xxl 文本编码器进行编码(该编码器完全由 Google 团队训练),随机 10% 的文本被置为空字符串,以增加分类器自由引导(CFG)的能力。
注意力机制
文本编码器的非池化输出被输入到投影(无激活的线性层)中,并通过受控的混合自注意力和交叉注意力在扩散模型的 UNet 主干中使用。此外,文本编码器的输出通过注意力池化(64 个头)进行池化,并作为额外特征用于时间嵌入。
扩散过程
扩散过程限制为 1000 个离散步骤,采用余弦 beta 噪声调度。损失是添加到图像中的噪声与 UNet 预测之间的重建目标。
训练策略
检查点 IF - I - M - v1.0 的训练过程在所有数据集上以 64x64 的分辨率进行了 2500000 步,采用 OneCycleLR 策略、SiLU 激活函数、优化器 AdamW8bit + DeepSpeed - Zero1,T5 - 编码器完全冻结。
📄 许可证
本项目使用 DeepFloyd IF 许可协议。详细的许可协议内容如下:
DeepFloyd 许可协议
本许可协议(根据本许可协议可能进行修订,“许可协议”)由您(或您的雇主或其他实体,如果您代表您的雇主或其他实体签订本协议)(“被许可方”或“您”)与 Stability AI Ltd.(“Stability AI”或“我们”)签订,适用于您使用 Stability AI 根据本许可协议提供的任何计算机程序、算法、源代码、目标代码或软件(“软件”)以及 Stability AI 提供的与该软件相关的任何规格、手册、文档和其他书面信息(“文档”)。
通过点击下方的“我接受”或使用该软件,您同意本许可协议的条款。如果您不同意本许可协议,则您无权使用该软件或文档(统称“软件产品”),并且您必须立即停止使用该软件产品。如果您代表您的雇主或其他实体同意受本许可协议条款的约束,您向 Stability AI 声明并保证您拥有充分的法律权力使您的雇主或该实体受本许可协议的约束。如果您没有必要的权力,则您不得代表您的雇主或其他实体接受本许可协议或访问该软件产品。
1. 许可授予
a. 在您遵守文档以及第 2、3 和 5 节的前提下,Stability AI 授予您一项非排他性、全球性、不可转让、不可再许可、可撤销、免版税且有限的许可,允许您在 Stability AI 的版权权益下,仅为您的非商业研究目的复制、分发和创作该软件的衍生作品。上述许可仅针对您个人,未经 Stability AI 的事先书面同意,您不得转让或再许可本许可协议或本许可协议下的任何其他权利或义务;任何此类转让或再许可均无效,并将自动且立即终止本许可协议。
b. 您可以仅为与上述授予的软件许可相关的目的制作合理数量的文档副本。
c. 本节第 1 条(许可授予)中明确规定的权利授予是您在软件产品中的完整权利授予,未授予其他任何许可,无论是通过弃权、禁止反言、暗示、衡平法或其他方式。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 在任何情况下均不对您承担责任;或者,对于任何间接、后果性、示范性、偶然、惩罚性或特殊损害或利润损失,即使 Stability AI 已被告知此类损害的可能性。软件产品、其组成组件和任何输出(统称“软件材料”)并非设计或意图用于任何软件材料的故障或缺陷可能合理预期会导致任何人严重伤害的应用或情况,包括潜在的歧视或侵犯个人隐私权,或导致严重的人身、财产或环境损害(每一种情况,“高风险使用”)。如果您选择将任何软件材料用于高风险使用,则您自行承担风险。您同意设计和实施与高风险使用相关的适当决策和风险缓解程序及政策,以便即使任何软件材料出现故障或缺陷,受该活动影响的人员或财产的安全仍能保持在高风险使用领域合理、适当和合法的水平。
6. 赔偿
您将赔偿、辩护并使 Stability AI 及其子公司和关联公司以及我们各自的股东、董事、高级管理人员、员工、代理人、继任者和受让人(统称“Stability AI 各方”)免受因以下原因引起的或与之相关的任何索赔、要求、指控、诉讼、程序或调查(统称“索赔”)所产生的任何损失、负债、损害、罚款、处罚和费用(包括合理的律师费):(a) 您访问或使用软件产品(以及此类访问或使用产生的任何结果或数据),包括任何高风险使用(定义见下文);(b) 您违反本许可协议;或 (c) 您侵犯、盗用或以其他方式侵犯他人的任何权利(包括知识产权或其他专有权利和隐私权)。您将立即通知 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 的授权代表签字,否则对本许可协议任何条款的变更或补充均不具有约束力。
本模型卡片由 DeepFloyd 团队编写,基于 [StableDiffusion 模型卡片](https://huggingface.co/CompVis/stable - diffusion - v1 - 4)。









