模型简介
模型特点
模型能力
使用案例
🚀 IF-II-L-v1.0
DeepFloyd-IF 是一款基于像素的文本到图像的三级级联扩散模型,能够生成在照片级真实感和语言理解方面达到新的先进水平的图像。这是一个高效的模型,在 COCO 数据集上实现了零样本 FID - 30K 分数为 6.66
,超越了当前的先进模型。
🚀 快速开始
与 diffusers
库结合使用
IF 已集成到 🤗 Hugging Face 的 🧨 diffusers 库 中,该库经过优化,可在显存低至 14GB 的 GPU 上运行。
在使用 IF 之前,你需要接受其使用条件:
- 确保拥有 Hugging Face 账户 并已登录。
- 在 [DeepFloyd/IF - I - XL - v1.0](https://huggingface.co/DeepFloyd/IF - I - XL - 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) 功能,只需 14GB 的显存即可运行整个 IF 管道。
如果你使用的是 torch>=2.0.0
,请确保 移除所有 enable_xformers_memory_efficient_attention()
函数。
加载所有阶段并卸载到 CPU
from diffusers import DiffusionPipeline
from diffusers.utils import pt_to_pil
import torch
# stage 1
stage_1 = DiffusionPipeline.from_pretrained("DeepFloyd/IF - I - XL - 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()
# stage 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()
# 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() # 如果 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 文档:
- 🚀 [优化推理时间](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 和大约 28GB 的显存为 IF 添加新的概念。
✨ 主要特性
DeepFloyd - IF 是一款基于像素的文本到图像的三级级联扩散模型,具有以下特性:
- 能够生成在照片级真实感和语言理解方面达到新的先进水平的图像。
- 是一个高效的模型,在 COCO 数据集上实现了零样本 FID - 30K 分数为
6.66
,超越了当前的先进模型。
📦 安装指南
在使用 IF 之前,你需要接受其使用条件并安装相关依赖:
- 确保拥有 Hugging Face 账户 并已登录。
- 在 [DeepFloyd/IF - I - XL - v1.0](https://huggingface.co/DeepFloyd/IF - I - XL - v1.0) 的模型卡片上接受许可协议。
- 确保在本地登录。安装
huggingface_hub
:
pip install huggingface_hub --upgrade
- 安装
diffusers
及其依赖项:
pip install diffusers accelerate transformers safetensors sentencepiece
💻 使用示例
基础用法
上述与 diffusers
库结合使用的代码示例展示了如何加载模型、获取文本嵌入以及运行各个阶段生成图像,这是使用 IF 的基础用法。
高级用法
使用 diffusers
有多种方法可以加快推理时间并进一步降低内存消耗。请参考 Diffusers 文档:
- 🚀 [优化推理时间](https://huggingface.co/docs/diffusers/api/pipelines/if#optimizing - for - speed)
- ⚙️ [优化推理过程中的低内存使用](https://huggingface.co/docs/diffusers/api/pipelines/if#optimizing - for - memory)
📚 详细文档
模型详情
属性 | 详情 |
---|---|
开发方 | DeepFloyd, StabilityAI |
模型类型 | 基于像素的文本到图像级联扩散模型 |
级联阶段 | II |
参数数量 | 12 亿 |
语言 | 主要为英语,在一定程度上支持其他罗曼语系语言 |
许可证 | DeepFloyd IF 许可协议 |
模型描述 | DeepFloyd - IF 由冻结的文本模型和三个像素级联扩散模块组成,每个模块旨在生成分辨率逐渐提高的图像:64x64、256x256 和 1024x1024。模型的所有阶段都使用基于 T5 变压器的冻结文本编码器来提取文本嵌入,然后将其输入到通过交叉注意力和注意力池化增强的 UNet 架构中。 |
更多信息资源 | [GitHub](https://github.com/deep - floyd/IF),网站,所有链接 |
训练信息
训练数据
12 亿文本 - 图像对(基于 LAION - A 和少量额外的内部数据集)。在训练的任何级联和阶段都不使用数据集的测试/验证部分。COCO 数据集的验证部分有助于在训练期间展示“在线”损失行为(以发现意外情况和其他问题),但该数据集从不用于训练。
训练过程
IF - II - L - v1.0 是一个基于像素的扩散级联模型,使用 T5 - 编码器嵌入(隐藏状态)将图像从 64px 放大到 256px。在训练过程中:
- 使用
Pillow==9.2.0
的 BICUBIC 重采样方法(reducing_gap=None,有助于避免混叠),通过移位中心裁剪增强(从中心随机移动不超过尺寸的 0.1)将图像裁剪为正方形,并调整为 64px(低分辨率)和 256px(真实值),然后处理为张量 BxCxHxW。 - 低分辨率图像通过噪声(q - 采样方法)进行额外增强,其扩散配置与级联 I 系列相同。将均匀分布的随机化增强噪声参数(增强级别)作为条件添加到 Unet 中,由可训练层的时间步嵌入和带激活的线性投影进行处理。
- 通过开源的冻结 T5 - v1_1 - xxl 文本编码器对文本提示进行编码,随机将 10% 的文本丢弃为空字符串,以实现无分类器引导(CFG)。
- 文本编码器的非池化输出被输入到投影(无激活的线性层)中,并通过受控的混合自注意力和交叉注意力在扩散模型的 UNet 主干中使用。
- 文本编码器的输出通过注意力池化(64 个头)进行池化,并作为额外特征用于时间嵌入。
- 扩散过程限制为 1000 个离散步骤,采用余弦噪声调度对图像进行加噪。
- 损失是添加到图像中的噪声与 UNet 预测之间的重建目标。
- 检查点 IF - II - L - v1.0 的训练过程在所有数据集上以 2500000 步的分辨率为 256x256 进行,采用 OneCycleLR 策略、few - bit 反向 GELU 激活、优化器 AdamW8bit + DeepSpeed - Zero1,T5 - 编码器完全冻结。
硬件
32 x 8 x A100 GPUs
优化器
AdamW8bit + DeepSpeed ZeRO - 1
批次大小
1536
学习率
采用 one - cycle 余弦策略,热身 10000 步,起始学习率为 4e - 6,最大学习率为 1e - 4,最终学习率为 1e - 8。
评估结果
FID - 30K: 6.66
使用场景
直接使用
该模型用于研究目的。任何将模型部署到生产环境的尝试不仅需要遵循许可协议,还需要部署者承担全部责任。 可能的研究领域和任务包括:
- 生成艺术图像并用于设计和其他艺术过程。
- 安全部署有可能生成有害内容的模型。
- 探索和理解生成模型的局限性和偏差。
- 在教育或创意工具中的应用。
- 生成模型的研究。
滥用、恶意使用和超出范围的使用
请注意,该模型不应被用于故意创建或传播会给人们造成敌对或疏离环境的图像。这包括生成人们可预见会感到不安、痛苦或冒犯的图像,或传播历史或当前刻板印象的内容。
- 超出范围的使用:该模型并非用于生成真实或准确反映人物或事件的内容,因此使用该模型生成此类内容超出了其能力范围。
- 滥用和恶意使用:使用该模型生成对个人有害的内容属于滥用行为。这包括但不限于:
- 生成贬低、非人化或以其他方式伤害人们或其环境、文化、宗教等的内容。
- 故意推广或传播歧视性内容或有害刻板印象。
- 在未经个人同意的情况下冒充他人。
- 未经可能看到的人的同意生成色情内容。
- 虚假信息和错误信息。
- 展示严重暴力和血腥场面。
- 违反使用条款分享受版权保护或有许可的材料。
- 违反使用条款分享对受版权保护或有许可的材料进行修改后的内容。
局限性和偏差
局限性
- 该模型无法实现完美的照片级真实感。
- 该模型主要使用英语字幕进行训练,在其他语言中的表现不佳。
- 该模型在大规模数据集 [LAION - 5B](https://laion.ai/blog/laion - 5b/) 的一个子集上进行训练,该数据集包含成人、暴力和色情内容。为了部分缓解这一问题,我们采取了一些措施(详见训练部分)。
偏差
虽然图像生成模型的能力令人印象深刻,但它们也可能强化或加剧社会偏差。IF 主要在 [LAION - 2B(en)](https://laion.ai/blog/laion - 5b/) 的子集上进行训练,该数据集的图像仅使用英语描述。使用其他语言的社区和文化的文本和图像可能没有得到充分考虑。这影响了模型的整体输出,因为白人和西方文化往往被设定为默认。此外,该模型使用非英语提示生成内容的能力明显低于使用英语提示。IF 反映并加剧了偏差,因此无论输入或意图如何,都建议用户谨慎使用。
🔧 技术细节
训练过程
IF - II - L - v1.0 是一个基于像素的扩散级联模型,使用 T5 - 编码器嵌入(隐藏状态)将图像从 64px 放大到 256px。在训练过程中,涉及到图像的裁剪、缩放、加噪,文本提示的编码,以及扩散过程的控制和损失计算等多个步骤。具体如下:
- 图像预处理:使用
Pillow==9.2.0
的 BICUBIC 重采样方法(reducing_gap=None,有助于避免混叠),通过移位中心裁剪增强(从中心随机移动不超过尺寸的 0.1)将图像裁剪为正方形,并调整为 64px(低分辨率)和 256px(真实值),然后处理为张量 BxCxHxW。 - 图像加噪增强:低分辨率图像通过噪声(q - 采样方法)进行额外增强,其扩散配置与级联 I 系列相同。将均匀分布的随机化增强噪声参数(增强级别)作为条件添加到 Unet 中,由可训练层的时间步嵌入和带激活的线性投影进行处理。
- 文本编码:通过开源的冻结 T5 - v1_1 - xxl 文本编码器对文本提示进行编码,随机将 10% 的文本丢弃为空字符串,以实现无分类器引导(CFG)。
- 特征使用:文本编码器的非池化输出被输入到投影(无激活的线性层)中,并通过受控的混合自注意力和交叉注意力在扩散模型的 UNet 主干中使用。文本编码器的输出通过注意力池化(64 个头)进行池化,并作为额外特征用于时间嵌入。
- 扩散过程:扩散过程限制为 1000 个离散步骤,采用余弦噪声调度对图像进行加噪。
- 损失计算:损失是添加到图像中的噪声与 UNet 预测之间的重建目标。
训练参数
- 训练步数:检查点 IF - II - L - v1.0 的训练过程在所有数据集上以 2500000 步的分辨率为 256x256 进行。
- 学习率策略:采用 OneCycleLR 策略。
- 激活函数:few - bit 反向 GELU 激活。
- 优化器:优化器 AdamW8bit + DeepSpeed - Zero1。
- 冻结层:T5 - 编码器完全冻结。
硬件和资源
- 硬件:使用 32 x 8 x A100 GPUs 进行训练。
- 优化器:采用 AdamW8bit + DeepSpeed ZeRO - 1 优化器。
📄 许可证
本模型遵循 DeepFloyd IF 许可协议,协议详情如下:
DeepFloyd 许可协议
本许可协议(根据本许可协议可能进行修订,“许可协议”)由您或您的雇主或其他实体(如果您代表您的雇主或其他实体签订本协议)(“被许可方”或“您”)与 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 均不对您承担责任;也不对任何间接、后果性、惩戒性、偶发性、惩罚性或特殊损害或利润损失承担责任,即使 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 的授权代表签署,否则不具有约束力。
本模型卡片由 DeepFloyd 团队编写,基于 [StableDiffusion 模型卡片](https://huggingface.co/CompVis/stable - diffusion - v1 - 4)。









