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









