模型概述
模型特點
模型能力
使用案例
🚀 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)。









