近期十分熱門的AI繪圖模型,除了Midjourney外,另一個同樣受到討論的就是Stable Diffusion了,除了知道如何應用它生成所需的圖片之外,本篇文章將深入說明從文字生成圖片的過程中,需要經過哪些步驟以及當中一些有趣的模型。我們將使用Pytorch框架及hugging face上訓練好的模型,實際進行Stable Diffusion的流程。
先簡單的介紹Stable Diffusion,它的主要功能就是根據人所給出的文字,並畫出相對應的圖片出來。(如下圖所示)。不過Stable Diffusion並不是一個單一模型,而是由多個模型所組成。
在訓練模型時,會將訓練的圖片加入雜訊(noise),以預測latent space中的雜訊。加入雜訊的目的是,希望模型具備反推能力,也就是在生成圖片時能將圖中的雜訊去除,並還原成沒有雜訊的圖片。
這裡主要由幾個模型組合而成,包含提取文字特徵的tokenizer與text encoder;為了整合圖與文字,表現出不錯的latent representation,就需要U-Net;最後則是將上述資訊轉為圖片的VAE。接著,就依序讓大家認識每個模型的細節用途,及Stable Diffusion生成的整個流程。
下圖就是Stable Diffusion生成出一張圖片的流程圖,接著依序說明每個步驟的任務:
圖2. Stable Diffusion生成流程