知道該在哪「偷工減料」,Google開源深度學習壓縮圖片技術Guetzli

Kashin via Shutterstock
Google最近開源了一個圖像壓縮演算法Guetzli,能產生(壓縮)更小的JPEG文檔,同時盡可能的保持圖像品質。它可利用到很多的網站設計以及圖像工具上,進而實現降低全網的影像檔大小。

打開一個網站,發現網頁速度載入很慢,這可能不僅僅是你網路頻寬的問題,也可能是因為這個網站需要載入太多的影像檔。

而同等頻寬和網站的前提下,如果可以「無損」壓縮這個網站上的圖片大小,理所應當就會載入得更快。我們想擁有更快的網速,也珍惜寶貴的手機流量,Google就決定在技術上做一個微小的貢獻,讓你在瀏覽網頁時有更快的感受。

實際上,Google最近開源了一個圖像壓縮演算法Guetzli——Guetzli能產生(壓縮)更小的JPEG文檔,同時盡可能的保持圖像品質,並且它能與現在的流覽器格式、影像處理應用程式和JPEG標準相容。也就是說,Google提供了一種新的壓縮圖像的方法,這種方法可以提供類似的圖片顯示效果,但保持更小的檔大小。它可利用到很多的網站設計以及圖像工具上,進而實現降低全網的影像檔大小。

話不多說,先上圖看是不是有類似的效果:

PingWest
PingWest

兩張圖分別存在未壓縮的原圖、使用比較流行演算法的壓縮圖和Google的Guetzli演算法壓縮圖。如果不提前說明,你能看出什麼樣的規律?

在第一張20×24圖元的貓眼圖中,我們實際上很難察覺出第一張和第二張內具體有什麼區別,但第三張看起來色彩更淡,而貓眼之外第三張比第二張區塊更少;而下面這張圖,其實是天空中的一根電話線,我們可以看到第一張圖最清晰,電話線本身很少有區塊,而第二張和第三張均出現了區塊,且線之外的天空裡第二張區塊更明顯。這些是基於我們人眼的判斷結果。

真相是,貓的眼睛縮放圖最左側是原始未壓縮的圖、中間的是經過libjpeg演算法的圖(libjpeg是另外一個比較流行的圖像壓縮演算法,用來和Guetzli做對比)、最右側的是經過Guetzli演算法的圖;第二張16×16圖元電線圖的位置一樣。

對於這個技術本身,Google並沒有在官方博客裡給出詳細的技術解讀,但已知的是這其實也是一個基於深度學習(RNN)的技術,主旨就是基於人們對於圖片的感知因素而判斷取捨。

JPEG圖片的視覺品質和主流的圖像多級壓縮方式是直接相關的,主要是要遵從三個過程:色彩空間變換——離散余弦變換——量化階段。前兩部分有些複雜,但並不是這個技術的核心,所以可以理解為在前兩項技術壓縮大小已經固定的情況下,優化最後一項量化階段。而量化階段的操作就有點類似很多影像處理軟體的「另存為」:選擇的視覺品質越小,它就損失越多,圖片就會被壓縮得更小。但這個量化階段的重點是如何取捨圖像品質和圖像大小這些細節問題。

Guetzli演算法就是在這個步驟引入了一個叫做Butteraugli的精神視覺模型——它用來決定保存哪些顏色或者細節、壓縮掉哪些細節,從而達到人們視覺上的最優,且影像檔更小。

但具體是如何做到的,Google Blog中也沒有給到更詳細的解釋。但既然是一項基於圖像壓縮和人類感知的深度學習技術——或許如果把圖像庫資料打散成各種標籤,與人們視覺感知的結果作邏輯連接,提供人們視覺下的最佳解做模型。在不斷地攝入眾多這樣的資料來源(圖像)後,是不是就可以形成可以支撐Guetzli演算法的「精神視覺」模型?而這個精神視覺模型已經學會了判斷在人們覺得什麼樣的圖片更好看以及圖片如何壓縮之間的最佳解?嗯,可能比人更瞭解。

PingWest

Google拿這一結果與另一款比較流行的開源編碼器libjpeg進行了對比——「75%的用戶更偏好Guetzli,這意味著Butteraugli的精神視覺性模型在高畫質感知取捨方面更接近於人類感知。」

Google已經在Github上開源了這個Guetzli JPEG編碼器。可見這件事情也不只是針對Google網站或者公司本身,而是Google希望所有的網站開發人員、圖形設計師或是攝影師都可以使用到這樣的圖像壓縮演算法替代網路中傳統演算法下的JPEG圖片,進而大幅降低網路成本。

Google Blog中也提到,因為Guetzli演算法涉及到更多的量化過程,也就是說壓縮過程比libjpeg更慢,但Guetzli相容現有的流覽器和設備。Google希望更多的人使用Guetzli演算法壓縮圖片,而如果這一成就達成,相信我們會有更快的流覽體驗。

當然,也會節省你的手機流量。

本文授權轉載自:PingWest

PingWest

宣導「有品好玩的科技一切與你有關」,開始構建科技創新實踐者與消費者的共用社區,成為科技融入生活與消費方式的創新實驗室。

追蹤我們