近來,Stable Diffusion 成為新興的研究方向。一位名為 Matthias Bühlmann 的部落客嘗試實驗探究這種模型的強大功能,結果發現 Stable Diffusion 是一個非常強大的有損影像壓縮編解碼器。他寫了一篇部落格描述了這個實驗分析過程,以下是部落格原文。
首先Matthias Bühlmann 給出在高壓縮因子條件下,Stable Diffusion 方法與JPG、WebP 的壓縮結果,所有結果都是512x512 像素的解析度:
#舊金山風景圖,由左至右:JPG (6.16kB), WebP (6.80kB), Stable Diffusion: (4.96kB)。
#糖果店,由左至右:JPG (5.68kB), WebP (5.71 kB), Stable Diffusion (4.98kB)。
#動物照片,由左至右:JPG (5.66 kB), WebP (6.74kB), Stable Diffusion (4.97kB)。
這些範例明顯表明,與 JPG 和 WebP 相比,使用 Stable Diffusion 壓縮映像可以在較小的檔案大小下保留更出色的影像品質。
Matthias Bühlmann 分析了一下其中的工作原理,Stable Diffusion 使用三個串聯的訓練好的人工神經網路:
VAE 將影像空間中的影像編碼和解碼為某種潛在的空間表徵。來源影像(512 x 512,3x8 或 4x8 bit)的潛在空間表徵會解析度更低(64 x 64)、精度更高(4x32 bit)。
VAE 在訓練過程中自行學習,隨著模型的逐步訓練,不同版本模型的潛在空間表徵看起來可能會有所不同,例如Stable Diffusion v1.4 的潛在空間表徵如下(重新映射為4-channel 彩色圖像):
#當重新擴展和將潛在特徵解釋為顏色值(使用alpha channel )時,影像的主要特徵仍然可見,並且VAE 還將更高解析度的特徵編碼到像素值中。
例如,透過一次VAE 編碼/ 解碼roundtrip 得到以下結果:
值得注意的是,這種roundtrip 並不是無損的。例如,圖中藍色帶子上白色的字在解碼後可讀性稍差了一些。 Stable Diffusion v1.4 模型的 VAE 一般較不擅長表徵小型文字和人臉。
我們知道,Stable Diffusion 的主要用途是根據文字描述產生圖像,這就要求該模型要對圖像的潛在空間表徵進行操作。該模型使用經過訓練的 U-Net 迭代地對潛在空間圖像進行去噪,輸出它在噪聲中“看到”(預測)的內容,類似於我們有時把雲看成某種形狀或面孔。在迭代去噪步驟中,第三個 ML 模型(文字編碼器)指導 U-Net 嘗試看到不同的資訊。
Matthias Bühlmann 分析了 VAE 產生的潛在表徵(latent representation)是如何進行有效壓縮的。他發現對 VAE 中的潛在表徵進行取樣或對潛在表徵應用現有的有損影像壓縮方法,都會大幅降低重構影像的質量,而 VAE 解碼過程似乎對潛在表徵的品質穩健性較高。
Matthias Bühlmann 將潛在表徵從浮點數化為 8-bit 無符號整數,結果發現只有非常小的重構誤差。如下圖所示,左:32-bit 浮點潛在表徵;中:ground truth;右:8-bit 整數潛在表徵。
他也發現透過 palette 和抖動演算法進一步量化,得到的結果會出乎意料的好。然而,當直接使用VAE 解碼時,palettized 表徵會導致一些可見的偽影:
左:32-bit 潛在表徵;中:8-bit 量化潛在表徵;右:帶有Floyd-Steinberg 抖動的palettized 8-bit 潛在表徵
帶有Floyd-Steinberg 抖動的palettized 表徵引入了噪聲,使解碼結果失真。於是 Matthias Bühlmann 使用 U-Net 來去除抖動所帶來的雜訊。經過4 次迭代,重構結果在視覺上非常接近未量化的版本:
重構結果(左:帶有Floyd-Steinberg 抖動的palettized 表徵;中:經過四次迭代去噪;右:Ground Truth)。
雖然結果非常好,但還是會引入一些偽影,例如上圖中心形符號上的光澤陰影。
雖然從主觀上看,Stable Diffusion 壓縮影像的結果比 JPG 和 WebP 好得多,但從 PSNR、SSIM 等指標看,Stable Diffusion 並沒有明顯的優勢。
如下圖所示,雖然作為編解碼器的Stable Diffusion 在保留影像粒度方面比其他方法好得多,但受壓縮偽影的影響,影像中物體形狀等特徵可能會改變。
#左:JPG 壓縮;中:Ground Truth;右:Stable Diffusion 壓縮。
值得注意的是,目前的Stable Diffusion v1.4 模型在壓縮過程中無法很好地保留字體很小的文字訊息和人臉特徵,但Stable Diffusion v1.5 模型在人臉生成方面有所改進。
#左:Ground Truth;中:經過VAE roundtrip (32-bit 潛在特徵) ;右:從palettized 去噪8-bit 潛在特徵解碼的結果。
部落格發布後,Matthias Bühlmann 的實驗分析引起了大家的討論。
Matthias Bühlmann 自己認為 Stable Diffusion 的影像壓縮效果比預期好,U-Net 似乎能夠有效消除抖動所引入的雜訊。不過,Stable Diffusion 模型未來的版本可能不會再有這種影像壓縮特性。
然而有網友質疑:「VAE 本身就被用於圖像壓縮」,例如基於Transformer 的圖像壓縮方法TIC 就用到了VAE架構,所以Matthias Bühlmann 的實驗似乎是大材小用了。
對此,你有什麼看法?
以上是檔案更小,品質更高,大火的Stable Diffusion還能壓縮影像?的詳細內容。更多資訊請關注PHP中文網其他相關文章!