潛在擴散模型
潛在擴散模型(LDM)讓擴散變得負擔得起,做法是拒絕在原始像素上做苦工。直接在一張 512x512x3 的影像上執行完整的去雜訊鏈,意味著網路在數十個步驟的每一步都必須處理約 80 萬個數值——極其昂貴。LDM 的洞見是:這些像素大多在感知上是冗餘的——一個獨立的自編碼器可以把影像壓縮成一個小的潛在網格,保留有意義的結構、丟棄不可感知的細節,然後你就在那個緊湊空間中執行整個擴散過程。
具體而言,LDM 有兩個階段。首先,訓練一個變分自編碼器(VAE)把影像編碼成一個潛在張量——例如把 512x512x3 壓縮到 64x64x4,空間元素數量約減為 1/48——並能把那個潛在張量解碼回一張忠實的影像。這個 VAE 訓練一次後就凍結。其次,一個普通的擴散模型(前向加雜訊、學習得來的反向去雜訊,與 DDPM/DDIM 同一套機制)完全在那些潛在張量上訓練。要生成時,你透過擴散反向鏈從雜訊抽樣出一個潛在張量,再把它送入 VAE 解碼器得到像素。這種分工是刻意的:VAE 處理高頻的感知細節(銳利邊緣、紋理),那是擴散會浪費資源的地方;擴散模型則處理它擅長的語意與構圖內容。
正是這種因式分解,讓高解析度、以文字為條件的生成在消費級硬體上變得實用,也是 Stable Diffusion 底層的架構。它還讓加入條件變得便宜:由於去雜訊器較小,你便有餘裕在每個區塊都加入交叉注意力層,把文字嵌入注入進去。主要的警告是,VAE 加上了一個品質上限與特有的失敗模式——精細的文字、微小的臉孔、繁複的紋理,可能在編碼/解碼的來回過程中被抹糊,無論擴散模型多優秀都一樣,因為那些資訊在擴散開始前就已被丟棄。
潛在空間不是像素——千萬別假設某個潛在通道就是「紅色通道」,或潛在座標與影像座標一一對應。VAE 學到的是一種抽象、學習得來的壓縮。這就是為什麼你無法有意義地檢視或手動編輯原始潛在張量,也是為什麼潛在空間的修補必須謹慎地透過編碼器進行,而不是直接貼上像素區塊。