Stable Diffusion

Stable Diffusion是2022年發布的深度學習文本到圖像生成模型。它主要用於根據文本的描述產生詳細圖像，儘管它也可以應用於其他任務，如內補繪製、外補繪製，以及在提示詞指導下產生圖生圖的轉變。

它是一種潛在變量模型擴散模型，由慕尼黑大學的CompVis研究團體開發的各種生成性人工神經網絡之一。它是由初創公司StabilityAI、CompVis與Runway合作開發，並得到EleutherAI和LAION的支持。截至2022年10月，StabilityAI籌集了1.01億美元的資金。

Stable Diffusion的源代碼和模型權重已分別公開發布在GitHub和Hugging Face，可以在大多數配備有適度GPU的電腦硬體上運行。而以前的專有文生圖模型（如DALL-E和Midjourney）只能通過雲端運算服務訪問。

## 技術架構

Stable Diffusion是一種擴散模型（diffusion model）的變體，叫做「潛在擴散模型」（latent diffusion model; LDM）。擴散模型是在2015年推出的，其目的是消除對訓練圖像的連續應用高斯噪聲，可以將其視為一系列去噪自編碼器。Stable Diffusion由3個部分組成：變分自編碼器（VAE）、U-Net和一個文本編碼器。與其學習去噪圖像數據（在「像素空間」中），而是訓練VAE將圖像轉換為低維潛在空間。添加和去除高斯噪聲的過程被應用於這個潛在表示，然後將最終的去噪輸出解碼到像素空間中。在前向擴散過程中，高斯噪聲被迭代地應用於壓縮的潛在表徵。每個去噪步驟都由一個包含ResNet骨幹的U-Net架構完成，通過從前向擴散往反方向去噪而獲得潛在表徵。最後，VAE解碼器通過將表徵轉換回像素空間來生成輸出圖像。研究人員指出，降低訓練和生成的計算要求是LDM的一個優勢。

去噪步驟可以以文本串、圖像或一些其他數據為條件。調節數據的編碼通過交叉注意機制（cross-attention mechanism）暴露給去噪U-Net的架構。為了對文本進行調節，一個預訓練的固定CLIP ViT-L/14文本編碼器被用來將提示詞轉化為嵌入空間。

## 用法

Stable Diffusion模型支持通過使用提示詞來產生新的圖像，描述要包含或省略的元素，以及重新繪製現有的圖像，其中包含提示詞中描述的新元素（該過程通常被稱為「指導性圖像合成」（guided image synthesis））通過使用模型的擴散去噪機制（diffusion-denoising mechanism）。此外，該模型還允許通過提示詞在現有的圖中進行內補繪製和外補繪製來部分更改，當與支持這種功能的使用者界面使用時，其中存在許多不同的開源軟體。

Stable Diffusion建議在10GB以上的顯存下運行。

但是顯存較少的使用者可以選擇以float16的精度加載權重，而不是默認的float32，以降低顯存使用率。

### 文生圖

演示反向提示詞對圖像生成的影響。

- 上: 無反向提示詞
- 中: "綠樹"
- 下: "圓形石頭"

Stable Diffusion中的文生圖採樣腳本，稱為"txt2img"，接受一個提示詞，以及包括採樣器（sampling type），圖像尺寸，和隨機種子的各種選項參數，並根據模型對提示的解釋生成一個圖像文件。生成的圖像帶有不可見的數位浮水印標籤，以允許用戶識別由Stable Diffusion生成的圖像，儘管如果圖像被調整大小或旋轉，該水印將失去其有效性。Stable Diffusion模型是在由512×512解析度圖像組成的數據集上訓練出來的，這意味著txt2img生成圖像的最佳配置也是以512×512的解析度生成的，偏離這個大小會導致生成輸出質量差。Stable Diffusion 2.0版本後來引入了以768×768解析度圖像生成的能力。

每一個txt2img的生成過程都會涉及到一個影響到生成圖像的隨機種子；使用者可以選擇隨機化種子以探索不同生成結果，或者使用相同的種子來獲得與之前生成的圖像相同的結果。使用者還可以調整採樣迭代步數（inference steps）；較高的值需要較長的運行時間，但較小的值可能會導致視覺缺陷。另一個可配置的選項，即無分類指導比例值，允許用戶調整提示詞的相關性（classifier-free guidance scale value）；更具實驗性或創造性的用例可以選擇較低的值，而旨在獲得更具體輸出的用例可以使用較高的值。

反向提示詞（negative prompt）是包含在Stable Diffusion的一些使用者界面軟體中的一個功能（包括StabilityAI自己的「Dreamstudio」雲端軟體即服務模式訂閱制服務），它允許用戶指定模型在圖像生成過程中應該避免的提示，適用於由於使用者提供的普通提示詞，或者由於模型最初的訓練，造成圖像輸出中出現不良的圖像特徵，例如畸形手腳。與使用強調符（emphasis marker）相比，使用反向提示詞在降低生成不良的圖像的頻率方面具有高度統計顯著的效果；強調符是另一種為提示的部分增加權重的方法，被一些Stable Diffusion的開源實現所利用，在關鍵詞中加入括號以增加或減少強調。

### 圖生圖

Stable Diffusion包括另一個取樣腳本，稱為"img2img"，它接受一個提示詞、現有圖像的文件路徑和0.0到1.0之間的去噪強度，並在原始圖像的基礎上產生一個新的圖像，該圖像也具有提示詞中提供的元素；去噪強度表示添加到輸出圖像的噪聲量，值越大，圖像變化越多，但在語義上可能與提供的提示不一致。圖像升頻是img2img的一個潛在用例，除此之外。

2022年11月24日發布的Stable Diffusion 2.0版本包含一個深度引導模型，稱為"depth2img"，該模型推斷所提供的輸入圖像的深度貼圖，並根據提示詞和深度資訊生成新圖像，在新圖像中保持原始圖像的連貫性和深度。

#### 內補繪製與外補繪製

Stable Diffusion模型的許多不同使用者界面軟體提供了通過img2img進行圖生圖的其他用例。內補繪製（inpainting）由使用者提供的蒙版描繪的現有圖像的一部分，根據所提供的提示詞，用新生成的內容填充蒙版的空間。隨著Stable Diffusion 2.0版本的發布，StabilityAI同時創建了一個專門針對內補繪製用例的專用模型。相反，外補繪製（outpainting）將圖像擴展到其原始尺寸之外，用根據所提供的提示詞生成的內容來填補以前的空白空間。

第一步：使用txt2img生成新圖像。巧合的是，它無意中生成了這個缺少一隻手臂的人。

## 許可證

與DALL-E等模型不同，Stable Diffusion提供其源代碼以及預訓練的權重。其許可證禁止某些使用案例，包括犯罪，誹謗，騷擾，人肉搜索，「剝削…未成年人」，提供醫療建議，自動創建法律義務，偽造法律證據，以及「基於…社會行為或…個人或人格特徵…或受法律保護的特徵或類別而歧視或傷害個人或群體」。使用者擁有其生成的圖像的權利，並可自由地將其用於商業用途。

## 模型訓練

Stable Diffusion是在LAION-5B的圖片和標題對上訓練的，LAION-5B是一個公開的數據集，源自從網路上抓取的公用抓取數據。該數據集由LAION創建，LAION是一家德國非營利組織，接受StabilityAI的資助。該模型最初是在LAION-5B的一個大子集上訓練的，最後幾輪訓練是在「LAION-Aesthetics v2 5+」上進行的，這是一個由6億張帶標題的圖片組成的子集，人工智慧預測人類在被要求對這些圖片的喜歡程度打分時至少會給5/10打分。這個最終的子集也排除了低解析度的圖像和被人工智慧識別為帶有水印的圖像。對該模型的訓練數據進行的第三方分析發現，在從所使用的原始更廣泛的數據集中抽取的1200萬張圖片的較小子集中，大約47%的圖像樣本量來自100個不同的網站，其中Pinterest佔8.5%子集，其次是WordPress，Blogspot，Flickr，DeviantArt和維基共享資源等網站。

該模型是在亞馬遜雲計算服務上使用256個NVIDIA A100 GPU訓練，共花費15萬個GPU小時，成本為60萬美元。

### 終端用戶微調訓練

為了糾正模型初始訓練的局限性，終端用戶可以選擇實施額外的訓練，以微調生成輸出以匹配更具體的使用情況。有三種方法可以讓使用者對Stable Diffusion模型權重存檔點進行微調：

- 「嵌入」（Embedding）可以從使用者提供的一些圖像被訓練出來，並允許模型在提示詞中使用嵌入的名稱時生成視覺上相似的圖像。嵌入是基於2022年臺拉維夫大學的研究人員在輝達的支持下開發的「文本倒置」（Textual Inversion）概念，其中模型的文本編碼器使用的特定標記的矢量表示與新的偽詞相關聯。嵌入可以用來減少原始模型中的偏差，或模仿風格。
- 「超網路」（Hypernetwork）是NovelAI軟體開發員Kurumuz在2021年創造的一種技術，最初用於調節文本生成的Transformer模型，它能讓Stable Diffusion衍生的文生圖模型模仿各種特定藝術家的風格，無論原始模型能否識別此藝術家，通過在較大的神經網路中的不同點應用一個預訓練的小神經網路。超網路將文生圖或圖生圖結果導向特定方向，例如加上藝術風格，當與一個較大的神經網路結合使用時。它通過尋找重要的關鍵區域來處理圖像（例：眼睛，頭髮），然後在二級潛在空間中修補這些區域。超網路的一個缺點是它們的準確性相對較低，也有時會產生不可預知的結果。因此，超網路適用於加上視覺風格或清理人體瑕疵。
- DreamBooth是一個深度學習模型，由Google Research和波士頓大學的研究人員於2022年開發，可以微調模型以產生與指定主題相關的輸出圖像。

## 發行

版本號｜發行日期｜參數｜注釋

1.1, 1.2, 1.3, 1.4｜2022年8月｜都由CompVis發行。沒有版本1.0。1.1引發1.2，而1.2引發1.3和1.4二者。

1.5｜2022年10月｜983M｜以1.2而非1.4的權重初始化。由RunwayML發行。

2.0｜2022年11月｜從頭在過濾後的數據集上重新訓練。

2.1｜2022年12月｜以2.0的權重初始化。

XL 1.0｜2023年7月｜3.5B｜XL 1.0基礎模型有35億個參數，使其比以前版本大了約3.5倍。

XL Turbo｜2023年11月｜提取自XL 1.0而以更少擴散步驟運行。

3.0｜2024年2月（早期預覽）｜800M到8B｜模型家族。

3.5｜2024年10月｜2.5B到8B｜具有Large（80億個參數）、Large Turbo（提取自SD 3.5）和Medium (25億個參數）的模型家族。

## 社會影響

由於藝術風格和構圖不受版權保護，因此通常認為使用Stable Diffusion生成藝術品圖像的使用者不應被視為侵犯視覺相似作品的版權，絕大部分的畫作作者也沒有授權允許用他們的作品訓練ai，這將導致畫師的失業。如果生成的圖像中所描述的真人被使用，他們仍然受到人格權的保護，而且諸如可識別的品牌標識等智慧財產權仍然受到版權保護。儘管如此，藝術家們表示擔心Stable Diffusion等模型的廣泛使用最終可能導致人類藝術家以及攝影師、模特、電影攝影師和演員逐漸失去與基於人工智慧的競爭對手的商業可行性。

與其他公司的類似機器學習圖像合成產品相比，Stable Diffusion在使用者可能產生的內容類型方面明顯更加寬容，例如暴力或性暴露的圖像。

StabilityAI的首席執行官Emad Mostaque解決了該模型可能被用於濫用目的的擔憂，他解釋說：「人們有責任了解他們在操作這項技術時是否符合道德、道德和法律」，將Stable Diffusion的能力交到公眾手中會使該技術在整體上提供淨收益，即使有潛在的負面後果。此外，Mostaque認為，Stable Diffusion的開放可用性背後的意圖是結束大公司對此類技術的控制和主導地位，他們之前只開發了封閉的人工智慧系統進行圖像合成。

## 外部鏈接

- Stable Diffusion演示
- Interactive Explanation of Stable Diffusion
- AUTOMATIC1111的開源Stable Diffusion網路使用者界面（支持繁體中文，簡體中文）

## 基本資料

- 作者：Runway、CompVis、Stability AI
- 開發者：Stability AI
- 發行日期：2022年8月22日
- 程式語言：Python
- 作業系統：任何支持CUDA內核函數的作業系統
- 類型：文本到圖像生成模型