把文生圖 AI 反過(guò)來(lái)用,不就能壓縮圖片了嗎。
每當(dāng)在網(wǎng)上看到有趣的表情包、梗圖時(shí),不少人都會(huì)在心中暗暗念叨一句:“你的圖很好,不過(guò)現(xiàn)在它是我的了?!?/p>
但當(dāng)人們把“盜”下來(lái)的圖再次傳到其他帖子中時(shí),網(wǎng)絡(luò)平臺(tái)往往會(huì)再次壓縮圖片,節(jié)省儲(chǔ)存空間和網(wǎng)絡(luò)帶寬。如果一個(gè)圖被“盜”的次數(shù)太多,就會(huì)被重復(fù)壓縮多次。每次壓縮,圖片畫(huà)質(zhì)就會(huì)下降一點(diǎn),變得更“糊”一點(diǎn) —— 甚至還會(huì)變綠、變暗一點(diǎn)。被“盜”過(guò)很多遍的圖會(huì)變綠甚至已經(jīng)變成了一個(gè)梗,甚至催生了一系列渣畫(huà)質(zhì)的表情包。原因大概是:如果一個(gè)圖很有趣,就會(huì)被更多人保存,就會(huì)被壓縮更多次,畫(huà)質(zhì)也就越差;反過(guò)來(lái),如果一個(gè)圖片畫(huà)質(zhì)很差,那大概也就說(shuō)明它很受歡迎。
這有點(diǎn)像一件受歡迎的古玩,在長(zhǎng)久歲月中被無(wú)數(shù)人細(xì)細(xì)把玩,最終在表面形成了一層有光澤的“包漿”。渣畫(huà)質(zhì)、整體偏綠的顏色已經(jīng)成為了網(wǎng)絡(luò)時(shí)代的“電子包漿”、“賽博包漿”。甚至還有人看到那些高畫(huà)質(zhì)的好圖,總覺(jué)得它沒(méi)有經(jīng)過(guò)“歲月的洗禮”,心中感慨:“干干巴巴的,麻麻賴(lài)賴(lài)的,一點(diǎn)兒都不圓潤(rùn)。盤(pán)它!”于是,電子包漿模擬器誕生了。
圖片為何變綠
圖片變綠其實(shí)是安卓操作系統(tǒng)核心代碼的一個(gè) bug。安卓系統(tǒng)給開(kāi)發(fā)者提供了一個(gè)圖像壓縮接口,可以讓開(kāi)發(fā)者方便地壓縮 JPEG 圖片(也就是 jpg 圖片)。但這個(gè)接口的底層實(shí)現(xiàn)算法為了加速壓縮計(jì)算過(guò)程,在色彩模式轉(zhuǎn)換的過(guò)程中出了一個(gè) bug。
我們?cè)谑謾C(jī)屏幕上看到的圖片都存儲(chǔ)著 RGB 信息(Red 紅、Green 綠、Blue 藍(lán)),它能告訴屏幕上每個(gè)紅綠藍(lán)子像素應(yīng)該以何等亮度發(fā)光,從而在屏幕上顯示出圖片的樣貌。但在圖像處理過(guò)程中,一般需要 RGB 信息轉(zhuǎn)換成 YUV 信息(亮度、藍(lán)色濃度偏移量、紅色濃度偏移量)。因?yàn)槿搜蹖?duì) Y 代表的亮度信息更為敏感,算法可以著重壓縮 UV 信息。這樣就能在人眼感知差別不大的情況下,盡可能減小圖片所占的存儲(chǔ)空間。
一般而言,從 RGB 色彩模式轉(zhuǎn)換到 YUV 色彩模式是輕微有損的,但損失較小,并不至于讓圖片朝著變綠的方向一路狂奔。但是開(kāi)發(fā)者為了加速這個(gè)轉(zhuǎn)換計(jì)算過(guò)程,不當(dāng)?shù)厥褂昧宋贿\(yùn)算,導(dǎo)致數(shù)據(jù)在從 RGB 向 YUV 轉(zhuǎn)換時(shí)會(huì)向下取。所以在重復(fù)壓縮過(guò)程時(shí),Y、U、V 三個(gè)值就會(huì)不斷減小,亮度 Y 值減小會(huì)讓圖片不斷變暗,而 UV 不斷減小,會(huì)讓色彩不斷向綠色的方向偏移(見(jiàn)下圖)。所以,經(jīng)過(guò)多次壓縮的圖片會(huì)變綠、變暗。
這個(gè)問(wèn)題在 2016 年 4 月中旬就被修復(fù)了,按照安卓系統(tǒng)的發(fā)行時(shí)間來(lái)看,從 2016 年 8 月 22 日安卓 7 系統(tǒng)發(fā)布,這個(gè)問(wèn)題才算解除。(不過(guò)考慮到手機(jī)廠商對(duì)安卓系統(tǒng)的跟進(jìn)大多存在延遲,這個(gè)問(wèn)題解決的時(shí)間就更晚了。)所以說(shuō),圖片變綠的問(wèn)題,只有在幾年前的安卓系統(tǒng)上使用 JPEG 圖片時(shí)才會(huì)產(chǎn)生。
新的圖片壓縮算法
雖然有人喜歡圖片變綠變暗的“電子包漿”,覺(jué)得這樣的圖片更有“味道”。但開(kāi)發(fā)者肯定還需要結(jié)果正確、不會(huì)變綠的圖片壓縮算法。除了修復(fù)安卓圖片壓縮接口的 bug 外,又有不少高效的圖片格式被開(kāi)發(fā)了出來(lái)。比如谷歌開(kāi)發(fā)的 WebP 格式,蘋(píng)果推廣的 HEIC 格式,都采用了比較先進(jìn)的圖片壓縮算法。和傳統(tǒng)的 JPEG 格式相比,這兩種格式在觀看效果更好的同時(shí),占用的空間還更小。
而最近,根據(jù)文字生成圖像的 AI 火了起來(lái)。這些 AI 算法大多基于擴(kuò)散模型,可以在經(jīng)過(guò)大量文字、圖像的訓(xùn)練后,從用戶(hù)輸入的文字生成一張圖片。雖然圖片的細(xì)節(jié)還不算完美,但可以日夜無(wú)休生成圖片的 AI 還是讓人看到了巨大的潛力。甚至有人感嘆,這樣發(fā)展下去,畫(huà)師恐怕要失業(yè)了。
這種 AI 將來(lái)能發(fā)展到什么程度我們先按下不表,倒是有一名瑞士開(kāi)發(fā)者 Matthias Bühlmann 動(dòng)起了“歪腦筋”—— 它能否用于圖片壓縮呢?
人工智能壓縮
Matthias Bühlmann 選擇了免費(fèi)開(kāi)源的文生圖 AI:Stable Diffusion。它主要由三個(gè)模塊構(gòu)成:變分自編碼器(Variational Auto Encoder,VAE)、U-Net 和文字編碼器。
壓縮圖片時(shí)不需要文字輸入,所以 Matthias Bühlmann 舍棄了文字編碼器;而 VAE 則可以將圖片編碼到潛在空間表征(latent space representation)。在潛在空間表征下,圖片分辨率變低了(從 512×512 到 64×64),但是色彩精度卻提高了(從 8 位提升到 32 位)。
VAE 還能將潛在空間表征的圖片再解碼回圖片原來(lái)的樣子。就算在潛在空間表征上再次對(duì)圖片進(jìn)行壓縮,VAE 也能將圖片大致還原成本來(lái)的樣子。最終,Matthias Bühlmann 將一張未經(jīng)壓縮的 768kB 的圖片壓縮到了 5kB。肉眼看過(guò)去,同樣是把圖片壓縮到這個(gè)大小,JPEG 和 WebP 的壓縮損失就很明顯了。
AI 電子包漿
當(dāng)然,但這種壓縮算法并不是完美的。雖然這種圖片壓縮算法能騙過(guò)人眼,但在客觀評(píng)價(jià)圖片質(zhì)量的兩個(gè)參數(shù) PSNR 和 SSIM 上,它相對(duì) JPG 和 WebP 并沒(méi)有明顯的優(yōu)勢(shì)。
說(shuō)到底,這種圖像壓縮算法還是讓 AI 根據(jù)一個(gè)壓縮過(guò)的縮略圖去“猜”它的原圖長(zhǎng)什么樣子,還原出的圖片在一些細(xì)節(jié)上難免和原圖不一致,這反而造就了一種新的“電子包漿”。Matthias Bühlmann 就發(fā)現(xiàn),這種圖像壓縮算法在處理人臉、文字時(shí),可能在人臉上生成詭異(甚至有時(shí)還有點(diǎn)“克蘇魯”)的效果,VAE 重建的文字也幾乎難以辨認(rèn)。也就是說(shuō),和以前的壓縮算法會(huì)讓圖片產(chǎn)生綠色的“電子包漿”,而新時(shí)代 AI 壓縮算法會(huì)讓人臉和文字產(chǎn)生詭異的“電子包漿”。
AI 的復(fù)雜性也讓這種圖像壓縮算法難以推廣。傳統(tǒng)圖像壓縮算法是一套固定的算法,可以用輕量化的程序?qū)崿F(xiàn)。而 AI 則以計(jì)算量龐大著稱(chēng),這種 AI 圖像壓縮算法需要足足 4GB 的空間存儲(chǔ)參數(shù)文件,并且解碼時(shí)間也比其他壓縮算法更長(zhǎng)。
所以說(shuō),目前這種圖像壓縮算法并不值得推廣,就算推廣了,它也并不能完美解決“電子包漿”的問(wèn)題,反而卻會(huì)因?yàn)?AI 的特性,產(chǎn)生人類(lèi)難以想象的、全新的、詭異的“電子包漿”。
不過(guò),現(xiàn)在最流行的電子包漿并不是整體偏綠偏暗的顏色,而是層層疊疊難以去除的水印……
參考鏈接:
https://pub.towardsai.net/stable-diffusion-based-image-compresssion-6f1f0a399202
https://arstechnica.com/information-technology/2022/09/better-than-jpeg-researcher-discovers-that-stable-diffusion-can-compress-images/
https://magiconch.com/patina/
https://www.zhihu.com/question/29355920/answer/119088684
https://github.com/google/skia/commit/c7d01d3e1d3621907c27b283fb7f8b6e177c629d
https://en.wikipedia.org/wiki/YUV
https://developers.google.com/speed/webp
本文來(lái)自微信公眾號(hào):環(huán)球科學(xué) (ID:huanqiukexue),撰文:王昱,審校:栗子
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。