AIGC名詞解釋:Stable Diffusion 穩定擴散模型 I

2023-10-07     新設技

原標題:AIGC名詞解釋:Stable Diffusion 穩定擴散模型 I

用設計師能理解的語言

來解釋AIGC中的技術名詞

AIGC 屬於跨學科的產物,涉及領域眾多,包括高等數學、統計學、計算機圖形圖像學、機器學習等各個領域。AIGC 設計軟體的介面上往往會涉及到許多這些領域的技術術語。要想搞清楚它們背後的知識體系需要展開的知識樹體量十分龐大繁雜。術業有專攻,我們無法全面俱到地在每一個領域都做到精通,但又需要了解到一定的程度,以便更好地使用 AIGC 的相關軟體。所以,我們將儘量以設計行業從業者能理解的語言來解釋那些經常遇到無法繞開的技術術語。

Stable Diffusion 穩定擴散模型(上)

Stable Diffusion 是 Diffusion擴散模型中最先進的模式,它採用了更加穩定、可控和高效的方法來生成高質量圖像。在生成圖像的質量、速度和成本上都有顯著的提高,因此該模型可以直接在消費級顯卡上實現圖像生成,可達至少512*512像素的圖像。最新的XL版本可以生成1024*1024的圖像。生成效率也比以往的Diffusion擴散模型提高了30倍。目前 Stable Diffusion 的應用已經不局限於圖像生成領域,它還被廣泛應用於自然語言處理、音頻生成等領域。

Stable Diffusion 背後的公司 Stability AI,是於2022年8月由 CompVis、Stability AI和 LAION 的研究人員在 Latent Diffusion Model 的基礎上創建的。其核心技術來源於 AI 視頻剪輯技術創業公司 Runway 的 Patrick Esser,以及慕尼黑大學機器視覺學習組的 Robin Romabach 這兩位開發者在計算機視覺大會 CVPR22 上合作發表的潛擴散模型(Latent Diffusion Model)的研究(論文:https://arxiv.org/abs/2112.10752 )。

Stability AI 旗下各大項目

除了 Stable Diffusion,Stability AI 雄心勃勃的計劃下面還聚集了 EleutherAI 和LAION 等知名開源項目,以及生物模型 OpenBioML、音頻生成 Harmonai、人類偏好學習 Carperai、多模態 DeepFloyd 等更多項目。Stability AI 的迅速崛起給因 ChatGPT 而聞名天下的 OpenAI 公司造成了不小壓力,前 Oculus CTO John Carmack 表示:「Stable Diffusion 是一個開源炸彈。OpenAI 雖然資金充裕,但從商業化以及產品化的角度很難與其匹敵。」

Stable diffusion 相比它的祖宗版本 Latent diffusion 主要有以下幾點改進:

  • 訓練數據:Latent Diffusion 是採用 laion-400M 數據訓練的,而 Stable Diffusion 是在 laion-2B-en 數據集上訓練的,明顯後者用了更多的訓練數據,而且後者還採用了數據篩選來提升樣本數據質量,比如去掉有水印的圖像以及選擇美學評分較高的圖像。
  • Text Encoder:Latent Diffusion採用一個隨機初始化的 Transformer 來編碼 text,而 Stable Diffusion 採用一個預訓練好的 Clip text encoder來編碼 text,預訓練的 text model 往往要優於從零開始訓練的模型。
  • 訓練尺寸:Latent Diffusion 是在256x256解析度上訓練,而 Stable Diffusion 是先在256x256解析度上預訓練,然後再在512x512解析度上微調優化的,而現在已經再次升級到1024*1024的解析度了。

訓練尺寸:Latent Diffusion 是在256x256解析度上訓練,而 Stable Diffusion 是先在256x256解析度上預訓練,然後再在512x512解析度上微調優化的,而現在已經再次升級到1024*1024的解析度了。

然而 Latent Diffusion 可以說是Stable Diffusion的鼻祖,因為它用淺空間的方法解決了 Diffusion 效率低下的問題,它的U-Net是在潛空間的低維度中進行運算,這極大地降低了內存消耗和計算複雜度。例如,一個(3,512,512)的圖像,意味著 RGB 三個通道*512*512像素的圖像,其像素維度的數據體積在 786432 之上,而潛空間中會變成(4,64,64),內存消耗將會減少到原來的64分之1。

Stable Diffusion 的三個主要組件(每個組件都是一個神經網絡) ,也稱為三大基礎模型:

  • CLIPText 用於文本編碼,使文本數字化:

    Input:輸入文本;

    Output:77 token embeddings vectors,每個 token 向量有 768 個維度;

  • U-Net + Scheduler 用於逐步處理/擴散被轉化到潛空間中的信息:

    Input:文本嵌入和由噪點組成的起始多維矩陣(是一種結構化的數字列表,也稱為張量Tensor);

    Output:處理後的信息矩陣;

  • Auto-EncoderDecoder (主要是一個VAE:Variational AutoEncoder )使用處理後的信息矩陣解碼繪製出最終圖像,把潛空間的運算結果解碼成實際圖片維度: Input:處理後的信息矩陣,維度: (4,64,64); Output:生成的圖像,維度:(3, 512, 512)為(RGB三個通道、和兩個像素尺寸);

CLIPText 用於文本編碼,使文本數字化:

Input:輸入文本;

Output:77 token embeddings vectors,每個 token 向量有 768 個維度;

U-Net + Scheduler 用於逐步處理/擴散被轉化到潛空間中的信息:

Input:文本嵌入和由噪點組成的起始多維矩陣(是一種結構化的數字列表,也稱為張量Tensor);

Output:處理後的信息矩陣;

之前了解了那麼多人工智慧AIGC領域的概念和詞彙,為的就是更系統地了解 Stable Diffusion 。所以我們要用更精細的方式來接續解構和學習 Stable Diffusion 的運作原理。

Jay Alammar

Jay Alammar 專門寫了一篇文章,配了35張簡明扼要的拓撲圖,並配了視頻,深入淺出地詳細講解了 Stable Diffusion 的運作原理。(可以通過以下地址訪問:https://jalammar.github.io/illustrated-stable-diffusion/)為了講清楚 Stable Diffusion 的工作原理,我們引用並翻譯了其中的部分內容。

Stable Diffusion 穩定擴散模型是多才多藝的,它可以被應用在許多方面。但在 AIGC 設計領域,我們僅關注它的兩個主要方面:

第一個是文生圖(text2img)。上圖展示了一套文本和對應生成的圖像。這套文本就是Prompt提示詞,圖中提示詞的例子是:paradise cosmic beach。

文生圖:提示詞「paradise cosmic beach」生成了對應的圖片

第二個是改變圖片。很明顯,改變圖片需要的是輸入一張圖片,還有提示詞。對應的例子是第一次生成的圖+一套增加的提示詞 Pirate ship。

提示詞修圖:修圖提示詞「Pirate ship」在原圖上進行了新元素的添加

Stable Diffusion 穩定擴散模型的組成架構

Stable Diffusion,其實它本身並不是一個模型,而是一個由多個模塊和模型組成的系統。

當我們把它解剖開來發現,其中首先有一個文本理解組件( Text Understander 圖中藍色模塊),它將文本信息轉換為用數字表達的信息(通常為一個數據集 ),它的用途是捕捉文本的含義。

藍色模塊為文本理解組件 Text Understander

這個文本理解組件如果按照技術結構組成來說,可以理解為一個文本編碼器(Encoder),是一個特殊的 Transformer 語言模型(技術術語: CLIPText ,或 Clip模型文本編碼器)。它的輸入是文本,輸出則為數據集,即用數據集的方式來表達文本中的每個單詞/token(通常每個向量對應一個token)。

然後,這些信息輸入給由若干模塊組成的圖像生成器(Image Generator 圖中粉色黃色模塊 ) 。

藍色3*5的格子為Token轉化的數據集,粉紅色黃色模塊為圖像生成器 Image Generator

這個圖像生成器進一步拆解如下:

  • Image information creator 圖像信息創建器

    這個模塊就是 Stable Diffusion 穩定擴散的核心武器,是它比以前的 Diffusion 版本能夠獲得更多性能提升的地方。此組件反覆運行多步(Steps)來生成用於產生圖像的信息。Steps 數值通常默認為 50 或 100。

    圖像信息創建器完全在潛在空間中工作,這使它比以前在像素空間中工作的效率提高了64倍。從技術上講,這個組件由一個 U-Net 神經網絡和一個調度算法組成。

    在這個圖像信息創建器組件中,信息的運行方式是一個逐層處理的機制,然後輸出給下一個模塊——圖像解碼器(Image Decoder)來生成最終的圖像。

Image information creator 圖像信息創建器

這個模塊就是 Stable Diffusion 穩定擴散的核心武器,是它比以前的 Diffusion 版本能夠獲得更多性能提升的地方。此組件反覆運行多步(Steps)來生成用於產生圖像的信息。Steps 數值通常默認為 50 或 100。

圖像信息創建器完全在潛在空間中工作,這使它比以前在像素空間中工作的效率提高了64倍。從技術上講,這個組件由一個 U-Net 神經網絡和一個調度算法組成。

在這個圖像信息創建器組件中,信息的運行方式是一個逐層處理的機制,然後輸出給下一個模塊——圖像解碼器(Image Decoder)來生成最終的圖像。

圖像生成器 Image Generator 中的結構

  • Image Decoder 圖像解碼器

    圖像解碼器根據從圖像信息創建器處獲得的信息繪製圖像。它只在之前的 Diffusion 過程完全結束時才運行一次,以生成最終的像素圖像。

Image Decoder 圖像解碼器

圖像解碼器根據從圖像信息創建器處獲得的信息繪製圖像。它只在之前的 Diffusion 過程完全結束時才運行一次,以生成最終的像素圖像。

構成 Stable Diffusion 模型的三大組件

通過上述講解,我們了解到構成 Stable Diffusion 的三個主要組件 CLIPText 用於文本編碼(Text Encoder)、U-Net 用於逐步處理/擴散被轉化到潛空間中的信息、VAE 使用處理後的信息矩陣解碼繪製出最終圖像,把潛空間的運算結果解碼成實際的圖片。

要繼續往下進行,我們首先要詳細了解一下,到底什麼是「Diffusion 擴散」?

「Diffusion 擴散」到底是什麼意思?

首先,擴散的過程發生在圖中粉紅色的部分,即圖像信息創建器(Image Information Creator)組件中。這部分同時包含了兩個輸入:從文本編碼器( CLIP Text模型)輸出過來的Token embeddings,和隨機的初始圖像信息矩陣,即潛空間的噪點圖,然後經過圖像信息創建器(Image Information Creator)處理後輸出處理過的圖像信息矩陣(圖像數據集),最終交給圖像解碼器來繪製圖像。

粉紅色部分:圖像信息創建器(Image Information Creator)組件

輸入 ,再輸出 ,這些步驟不是一次性完成的,而是一個反覆疊代多次的進程 ,每一次疊代都會去掉部分噪點並添加更多與目標圖片相關的信息。

不僅僅為了講述這個模型的方便,在實際執行過程中,都會在每一次疊代步驟後添加一個檢查點,以查看圖像中的噪點被逐漸去除並生成到了何種程度。這也是我們在使用 Stable Diffusion WebUI 軟體時看到的,每過一段時間預覽窗口中就會生成出一個中間步驟的圖像。

當擴散過程發生時,每疊代一步就引入一個 U-Net 預測噪點矩陣,並用之前一步包含噪點的圖片減去這個預測噪點矩陣,產生一個更好的、噪點更少的圖片。所謂「更好」的意思就是,這個圖片更像從預先訓練好的大模型中抽取出的所有與輸入文本語義相關的圖片在潛空間中的表達。50或100步疊代後,便最終生成了結果,一個不帶任何噪點的圖片從潛空間矩陣中被解碼出來。還是一頭霧水?接下來下面我們會詳細逐步地介紹。

這裡我們可以看出,CLIP 文本語義的潛空間矩陣和大模型中提煉出來的 U-Net 預測噪點潛空間矩陣給 Diffusion 的多次疊代過程提供了不斷校準的能力。

如果我們在某一次疊代步驟之後檢查一下潛空間矩陣,看看這個擴散過程進展到了什麼程度。比如我們在第 1、2、4、5、10、30、50 步後查看,就會發現,它呈現如下圖的狀態。

在第 1、2、4、5、10、30、50 步後查看噪點去除情況

這就是之前我們提過的Diffusion模型中的反向過程(Reverse Diffusion Process) 。而前向過程就是預訓練模型階段,通過不斷地加噪點去訓練模型對每一個階段噪點的預測能力,以便為日後反向過程中為每一次疊代去噪點階段提供噪點校準的能力。

下面我們先來看看前向(訓練)階段具體發生了什麼。如之前所述,Diffusion 擴散模型生成圖像(反向過程)的過程中最關鍵地方是我們事先擁有了一個強大的 U-Net 模型。這個模型預訓練的過程可以簡述為以下幾個步驟。

假設我們有了一張照片(下圖中1),並生成了一些隨機噪點(下圖中2),然後在若干噪點強度中選擇其中某一個強度級別(下圖中3),然後將這個特定強度級別的噪點加到圖片中(下圖中4)。這樣,我們就完成了一次典型的樣本的訓練。(注意,噪點並不是直接在像素維度加到圖片上的,而是在潛空間中加到圖片的潛空間數據矩陣中的。這裡的噪點圖只是為了方便大家理解。)

文章來源: https://twgreatdaily.com/zh-sg/d77c1635db52657c4970b0f93d1973be.html