Stable Diffusion還能壓縮圖:比JPEG更小,肉眼看更清晰,但千萬別試人臉
這個(gè)圖像生成模型又被玩出了新花樣
Alex 發(fā)自 凹非寺
量子位 | 公眾號(hào) QbitAI
免費(fèi)開源的Stable Diffusion又被玩兒出了新花樣:
這次是被拿來壓縮圖片。
Stable Diffusion不僅能把同一張?jiān)瓐D縮到更小,而且表現(xiàn)還肉眼可見地優(yōu)于JPEG和WebP。
對(duì)于同一張?jiān)瓐D,Stable Diffusion壓縮出來的圖像不僅有更多細(xì)節(jié),而且壓縮偽影也變少了。
但用Stable Diffusion來壓縮圖的軟件工程師Matthias Bühlmann(咱們就叫他MB哥吧)也指出,這種方式也有明顯的局限性。
因?yàn)檫@不太擅長處理人臉和文字等,有時(shí)甚至?xí)诮獯a擴(kuò)展回去后,幻化出原圖中不存在的特征。
比如像這樣(效果可以讓人嚇一跳):
△左為原圖,右為Stable Diffusion壓縮再擴(kuò)展的生成圖
不過,話說回來——
Stable Diffusion是如何壓縮圖片的?
要講清楚Stable Diffusion怎么壓縮圖片,不妨從Stable Diffusion的一些重要工作原理說起。
Stable Diffusion是一種特殊的擴(kuò)散模型,叫作潛在擴(kuò)散?(Latent Diffusion)。
和標(biāo)準(zhǔn)擴(kuò)散(Standard Diffusion )不同,潛在擴(kuò)散在維度較低的隱空間(Latent Space)上進(jìn)行擴(kuò)散過程,而不使用實(shí)際的像素空間。
也就是說,隱空間的表示結(jié)果是一些分辨率較低的壓縮圖,不過這些圖有較高的精確度。
這里說一下,圖像的分辨率和精度是兩回事兒。分辨率是表示一張圖數(shù)據(jù)量多少的參數(shù),而精度是反映結(jié)果與真值接近程度的量。
就拿這個(gè)駱駝的大頭照來舉例:原圖大小768KB,分辨率為512×512,精度為3×8位。
用Stable Diffusion壓縮到4.98KB后,分辨率減少為64×64,而精度反而提升到4×32位了。
所以看起來,Stable Diffusion的壓縮圖和原圖相比,差別不大。
如果再進(jìn)一步具體而言而話,Stable Diffusion這種潛在擴(kuò)散模型有三個(gè)主要組成部分:
VAE?(Variational Auto Encoder,變分自編碼器),U-Net,和文本編碼器?(Text-encoder)。
不過在這項(xiàng)壓縮圖像的測(cè)驗(yàn)中,文本編輯器沒什么用。
發(fā)揮主要作用的還是VAE,它由兩部分組成:一個(gè)編碼器和一個(gè)解碼器。
所以,VAE可以將一張圖從圖像空間中,編碼再解碼得到一些潛在空間表示(Latent space representation)。
MB哥發(fā)現(xiàn),VAE的解碼功能對(duì)于量化潛在表示來說,表現(xiàn)非常穩(wěn)定。
通過縮放、拖拽和重新映射,將潛在表示從浮點(diǎn)量化為8位無符號(hào)整數(shù),就可以得到不怎么失真的壓縮圖了:
首先將latents量化為8位無符號(hào)整數(shù),此時(shí)圖像大小為64×64×4×8Bit=16 kB(原圖大小512×512×3×8Bit=768 kB)。
然后再運(yùn)用調(diào)色板(Palette)和抖動(dòng)(Dither),進(jìn)一步使數(shù)據(jù)縮小到5kB,同時(shí)還提高了圖像的還原度。
作為一位嚴(yán)謹(jǐn)?shù)某绦騿T,MB哥除了通過肉眼觀察,還對(duì)圖像質(zhì)量進(jìn)行了數(shù)據(jù)分析。
不過,從圖像質(zhì)量評(píng)估的兩項(xiàng)重要指標(biāo)PSNR(峰值信噪比)和SSIM(結(jié)構(gòu)相似性)來看,Stable Diffusion的壓縮結(jié)果并沒有比JPG和WebP好到哪兒去。
另外,當(dāng)把潛在表示重新解碼擴(kuò)展到原圖分辨率時(shí),雖然圖像的主要特征仍然可見,但VAE也會(huì)將高分辨率的特征賦予這些像素值。
用大白話講,就是重建的圖像往往和原圖不一樣,里面夾雜了不少新生成的“鬼畜”特征。
讓我們?cè)賮砘仡櫼幌逻@張圖:
雖然用Stable Diffusion來壓縮圖確實(shí)還存在不少問題,但用MB哥的話來說,其效果還是很驚艷的,非常有發(fā)展前途。
現(xiàn)在MB哥已經(jīng)把相關(guān)代碼放到了Google Colab上,感興趣的朋友可以仔細(xì)看看~
傳送門
https://colab.research.google.com/drive/1Ci1VYHuFJK5eOX9TB0Mq4NsqkeDrMaaH?usp=sharing
參考鏈接:
[1]https://arstechnica.com/information-technology/2022/09/better-than-jpeg-researcher-discovers-that-stable-diffusion-can-compress-images/
[2]https://matthias-buehlmann.medium.com/stable-diffusion-based-image-compresssion-6f1f0a399202
[3]https://huggingface.co/blog/stable_diffusion