模型概述
模型特點
模型能力
使用案例
🚀 穩定擴散v2 - 1基礎模型
本模型卡聚焦於與穩定擴散v2 - 1基礎模型相關的模型。該stable - diffusion - 2 - 1 - base
模型在stable - diffusion - 2 - base (512 - base - ema.ckpt
)的基礎上進行微調,在相同數據集上額外訓練了220k步,punsafe = 0.98
。
🚀 快速開始
你可以通過以下兩種方式使用該模型:
- 使用
stablediffusion
倉庫:點擊此處下載v2 - 1_512 - ema - pruned.ckpt
文件。 - 使用🧨
diffusers
庫。
✨ 主要特性
- 模型類型:基於擴散的文本到圖像生成模型。
- 語言支持:主要支持英文。
- 功能用途:可根據文本提示生成和修改圖像。
📦 安裝指南
使用🤗的Diffusers庫可以簡單高效地運行穩定擴散2模型。首先,你需要安裝必要的依賴:
pip install diffusers transformers accelerate scipy safetensors
💻 使用示例
基礎用法
以下是一個使用該模型生成圖像的示例代碼:
from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
import torch
model_id = "stabilityai/stable-diffusion-2-1-base"
scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, torch_dtype=torch.float16)
pipe = pipe.to("cuda")
prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt).images[0]
image.save("astronaut_rides_horse.png")
高級用法
注意事項:
- 雖然
xformers
不是必需依賴,但我們強烈建議你安裝它,以實現內存高效的注意力機制(提升性能)。 - 如果你可用的GPU內存較低,在將模型發送到
cuda
後,添加pipe.enable_attention_slicing()
可以減少VRAM使用(以犧牲速度為代價)。
# 儘管不是依賴項,但強烈建議安裝xformers以實現內存高效的注意力機制(更好的性能)
# 如果GPU內存較低,在發送到cuda後添加pipe.enable_attention_slicing()以減少VRAM使用(以速度為代價)
from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
import torch
model_id = "stabilityai/stable-diffusion-2-1-base"
scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, torch_dtype=torch.float16)
pipe = pipe.to("cuda")
pipe.enable_attention_slicing() # 低GPU內存時使用
prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt).images[0]
image.save("astronaut_rides_horse.png")
📚 詳細文檔
用途
直接使用
該模型僅用於研究目的,可能的研究領域和任務包括:
- 安全部署可能生成有害內容的模型。
- 探究和理解生成模型的侷限性和偏差。
- 生成藝術作品並用於設計和其他藝術創作過程。
- 在教育或創意工具中的應用。
- 對生成模型的研究。
禁止使用場景
該模型不得用於故意創建或傳播對人造成敵對或疏離環境的圖像。這包括生成人們可預見會感到不安、痛苦或冒犯的圖像;或傳播歷史或當前刻板印象的內容。
- 超出適用範圍的使用:該模型並非用於生成真實或準確反映人物或事件的內容,因此使用該模型生成此類內容超出了其能力範圍。
- 濫用和惡意使用:使用該模型生成對個人殘酷的內容屬於濫用行為。這包括但不限於:
- 生成貶低、非人化或其他有害的人物或其環境、文化、宗教等的表現形式。
- 故意推廣或傳播歧視性內容或有害刻板印象。
- 在未經同意的情況下冒充個人。
- 未經可能看到內容的人的同意生成性內容。
- 虛假和誤導性信息。
- 展示嚴重暴力和血腥的內容。
- 違反使用條款分享受版權保護或許可的材料。
- 違反使用條款分享受版權保護或許可材料的修改版本。
侷限性和偏差
侷限性
- 模型無法實現完美的照片級真實感。
- 模型無法渲染清晰可讀的文本。
- 模型在涉及組合性的更復雜任務上表現不佳,例如渲染與“A red cube on top of a blue sphere”對應的圖像。
- 面部和人物的生成可能不準確。
- 模型主要使用英文標題進行訓練,在其他語言上的效果不佳。
- 模型的自動編碼部分存在信息損失。
- 模型在[LAION - 5B](https://laion.ai/blog/laion - 5b/)的一個子集上進行訓練,該數據集包含成人、暴力和性內容。為了部分緩解這一問題,我們使用LAION的NFSW檢測器對數據集進行了過濾(詳見訓練部分)。
偏差
雖然圖像生成模型的能力令人印象深刻,但它們也可能強化或加劇社會偏差。穩定擴散v2主要在[LAION - 2B(en)](https://laion.ai/blog/laion - 5b/)的子集上進行訓練,該數據集僅包含英文描述的圖像。使用其他語言的社區和文化的文本和圖像可能沒有得到充分考慮。這影響了模型的整體輸出,因為白人和西方文化通常被設定為默認值。此外,模型使用非英文提示生成內容的能力明顯低於使用英文提示的情況。穩定擴散v2反映並加劇了偏差,因此無論輸入或意圖如何,都建議用戶謹慎使用。
訓練
訓練數據
模型開發者使用以下數據集進行模型訓練:
- LAION - 5B及其子集(詳情如下)。訓練數據使用LAION的NSFW檢測器進行了進一步過濾,“p_unsafe”分數為0.1(保守)。有關更多詳細信息,請參閱LAION - 5B的[NeurIPS 2022](https://openreview.net/forum?id = M3Y74vmsMcY)論文和相關評審討論。
訓練過程
穩定擴散v2是一個潛在擴散模型,它將自動編碼器與在自動編碼器潛在空間中訓練的擴散模型相結合。在訓練過程中:
- 圖像通過編碼器進行編碼,將圖像轉換為潛在表示。自動編碼器使用相對下采樣因子8,將形狀為H x W x 3的圖像映射到形狀為H/f x W/f x 4的潛在表示。
- 文本提示通過OpenCLIP - ViT/H文本編碼器進行編碼。
- 文本編碼器的輸出通過交叉注意力機制輸入到潛在擴散模型的UNet主幹中。
- 損失是添加到潛在表示中的噪聲與UNet預測之間的重建目標。我們還使用了所謂的“v - objective”,詳見https://arxiv.org/abs/2202.00512。
目前,我們為不同版本提供了以下檢查點:
- 版本2.1
512 - base - ema.ckpt
:在512 - base - ema.ckpt
2.0的基礎上微調,額外訓練220k步,punsafe = 0.98
。768 - v - ema.ckpt
:從768 - v - ema.ckpt
2.0繼續訓練,在相同數據集上額外訓練55k步(punsafe = 0.1
),然後再以punsafe = 0.98
微調155k步。
- 版本2.0
512 - base - ema.ckpt
:在[LAION - 5B](https://laion.ai/blog/laion - 5b/)的一個子集上,以分辨率256x256
訓練550k步,該子集使用[LAION - NSFW分類器](https://github.com/LAION - AI/CLIP - based - NSFW - Detector)過濾了明確的色情內容,punsafe = 0.1
,美學分數>= 4.5
。然後在相同數據集上以分辨率512x512
(分辨率>= 512x512
)訓練850k步。768 - v - ema.ckpt
:從512 - base - ema.ckpt
繼續訓練,在相同數據集上使用v - objective訓練150k步。然後在數據集的768x768
子集上繼續訓練140k步。512 - depth - ema.ckpt
:從512 - base - ema.ckpt
繼續訓練並微調200k步。添加一個額外的輸入通道來處理[MiDaS](https://github.com/isl - org/MiDaS) (dpt_hybrid
)生成的(相對)深度預測,作為額外的條件。處理此額外信息的U - Net的額外輸入通道初始化為零。512 - inpainting - ema.ckpt
:從512 - base - ema.ckpt
繼續訓練200k步。遵循[LAMA](https://github.com/saic - mdal/lama)中提出的掩碼生成策略,結合掩碼圖像的潛在VAE表示,作為額外的條件。處理此額外信息的U - Net的額外輸入通道初始化為零。與訓練[1.5 - inpainting檢查點](https://github.com/saic - mdal/lama)使用相同的策略。x4 - upscaling - ema.ckpt
:在包含圖像>2048x2048
的LAION的10M子集上訓練1250k步。模型在大小為512x512
的裁剪圖像上進行訓練,是一個文本引導的潛在上採樣擴散模型。除了文本輸入外,它還接收一個noise_level
作為輸入參數,可根據[預定義的擴散調度](configs/stable - diffusion/x4 - upscaling.yaml)向低分辨率輸入添加噪聲。
硬件:32 x 8 x A100 GPUs 優化器:AdamW 梯度累積:1 批次大小:32 x 8 x 2 x 4 = 2048 學習率:在10000步內預熱到0.0001,然後保持不變
評估結果
使用不同的無分類器引導尺度(1.5、2.0、3.0、4.0、5.0、6.0、7.0、8.0)和50步DDIM採樣步驟進行評估,結果顯示了不同檢查點的相對改進:
評估使用50步DDIM採樣和COCO2017驗證集中的10000個隨機提示,在分辨率512x512
下進行。未針對FID分數進行優化。
環境影響
穩定擴散v1估計排放量
根據相關信息,我們使用Lacoste等人(2019)中提出的機器學習影響計算器估計了以下CO2排放量。使用硬件、運行時間、雲服務提供商和計算區域來估計碳影響。
屬性 | 詳情 |
---|---|
硬件類型 | A100 PCIe 40GB |
使用時長 | 200000小時 |
雲服務提供商 | AWS |
計算區域 | 美國東部 |
碳排放(功耗 x 時間 x 基於電網位置的碳排放量) | 15000 kg CO2 eq. |
引用
@InProceedings{Rombach_2022_CVPR,
author = {Rombach, Robin and Blattmann, Andreas and Lorenz, Dominik and Esser, Patrick and Ommer, Bj\"orn},
title = {High-Resolution Image Synthesis With Latent Diffusion Models},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2022},
pages = {10684-10695}
}
📄 許可證
該模型遵循CreativeML Open RAIL++ - M License。
本模型卡由Robin Rombach、Patrick Esser和David Ha編寫,基於Stable Diffusion v1和[DALL - E Mini模型卡](https://huggingface.co/dalle - mini/dalle - mini)。

