您現在的位置是:首頁 > 攝影首頁攝影

伯克利人工智慧研究院開源深度學習資料壓縮方法Bit-Swap,效能創新高

由 AI科技大本營 發表于 攝影2022-12-22
簡介BAIR 開源了該方法的程式碼,對模型進行了最佳化,並提供了 demo 和預訓練好的 Bit-Swap 模型,可以用來對任何圖片進行壓縮和解壓縮

熵編碼的幾種方法

伯克利人工智慧研究院開源深度學習資料壓縮方法Bit-Swap,效能創新高

(圖片付費下載自視覺中國)

作者 | Friso Kingma

譯者 | Tianyu

責編 | 夕顏

【導讀】在本篇文章中,伯克利人工智慧研究院(BAIR)介紹了一種可擴充套件的、基於深度學習的高效無損資料壓縮技術。該技術基於之前的 bits-back 編碼和非對稱數字系統,對隱變數模型進行壓縮的方法進行了擴充套件。在實驗中,Bit-Swap 在高度多樣化的圖集的表現上超過了壓縮器中的 benchmark。BAIR 開源了該方法的程式碼,對模型進行了最佳化,並提供了 demo 和預訓練好的 Bit-Swap 模型,可以用來對任何圖片進行壓縮和解壓縮。歡迎觀看文末連結裡的影片,其中包含對 bits-back 編碼和 Bit-Swap 原理的解釋。

高維資料的無失真壓縮

該研究的目標是,設計一種可用於影象等高維資料的高效無失真壓縮方法。實現這一目標,要同時解決兩個問題:

選擇一個可以緊密捕捉輸入資料潛在分佈的統計模型;

開發一種可擴充套件的壓縮演算法,它可以充分發掘模型的壓縮潛能

伯克利人工智慧研究院開源深度學習資料壓縮方法Bit-Swap,效能創新高

任何壓縮方法的壓縮比都嚴重依賴於一個因素:模型的容量。而近年來深度學習的飛速發展,使得我們可以對基於複雜高維資料的機率模型進行有效的最佳化。這些進步為無失真壓縮技術的發展提供了更多可能性。如今有一些先進的技術結合了自迴歸模型和熵編碼,如算術編碼和非對稱數字系統(ANS, asymmetric numeral systems),都具有很不錯的壓縮比。然而,自迴歸結構使解壓過程比壓縮過程慢了幾個數量級。

幸運的是,ANS 具有平行計算的能力。為了充分利用這一特性,我們將注意力放在了全因子分佈的建模上。由於這個限制,我們不得不基於此進行模型的選擇,並構建新的編碼方案。

近期研究

伯克利人工智慧研究院開源深度學習資料壓縮方法Bit-Swap,效能創新高

最近提出的基於非對稱數字系統的 Bits-Back(BB-ANS, Bits-Back with Asymmetric Numeral Systems)方法,透過將潛變數模型與 ANS 結合來緩解了這個問題。潛變數模型定義了未被觀察的隨機變數,但這些變數的值影響了資料的分佈。例如,如果我們所觀察的資料包含影象,影象的構成可能依賴於邊的位置和紋理,這些特徵都屬於隱變數。這類模型可以使用全因子分佈,並透過 VAE 框架進行有效的最佳化。

伯克利人工智慧研究院開源深度學習資料壓縮方法Bit-Swap,效能創新高

使得 BB-ANS 可以基於隱變數模型進行壓縮的關鍵要素是 bits-back 編碼,事實證明這種方法天生適用於 ANS。Bits-back 編碼可以保證壓縮結果接近於負的 ELBO(Evidence Lower Bound),只有初始化的時候需要一點額外的開銷。當一次性壓縮較長的序列時,這種額外的開銷就顯得很微不足道了。

伯克利人工智慧研究院開源深度學習資料壓縮方法Bit-Swap,效能創新高

成果

當我們把隱變數模型設計成複雜的高密度估計器時,模型被限制在全因子分佈上,這會影響模型的靈活性。因此,我們採用分層隱變數模型來解決這個問題,該模型相比於單個的隱變數模型具有更大的容量。我們透過遞迴的方式對隱變數模型進行擴充套件,將全因子先驗分佈替換為第二個隱變數模型,將其先驗替換為第三個隱變數模型,以此類推。

伯克利人工智慧研究院開源深度學習資料壓縮方法Bit-Swap,效能創新高

例如,如果所觀察的資料是影象,影象的構成取決於邊的位置和紋理的分佈,這些特徵又依賴於物體的位置,而物體的位置又依賴於場景的構成,等等。因此,如果我們讓每一層都只依賴於它的上一層,這個模型可能要設計成多層巢狀的隱變數模型:所觀察資料的分佈受第一個隱變數層控制,第一個隱變數層的分佈受第二個隱變數層控制,以此類推直到最上面一層,而這層具有無條件先驗分佈。

伯克利人工智慧研究院開源深度學習資料壓縮方法Bit-Swap,效能創新高

基於這個想法,我們開發了全新的編碼技術,名為遞迴式 bits-back 編碼。正如這個方法的名字,我們在每一層上遞迴地使用 bits-back 編碼,從底層到頂層依次處理巢狀隱變數模型。我們將遞迴式 bits-back 編碼和特定的分層隱變數模型相結合,得到了 Bit-Swap 模型。Bit-Swap 有以下幾個優勢:

用遞迴的形式使用 bits-back 編碼可以節省模型的開銷,而且不會隨模型的深度增加而增加。這與直接在分層隱變數模型上使用 BB-ANS 有所不同,不會忽略隱變數的拓撲性,也不會將全部隱變數層當作單個向量處理,而導致模型的開銷隨著層次深度增加而增大。

Bit-Swap 還可以達到負 ELBO 的壓縮水平,所需的開銷也更小。

基於每層的先驗分佈進行隱變數層的巢狀疊加,除了最上面一層,使每一個隱變數層都擁有更復雜的分佈。巢狀結構使 ELBO 更為緊湊,即更低的壓縮比。

我們透過模型維持全因子分佈,使得整個編碼過程可以並行。基於 GPU 實現的 ANS 以及模型的並行,我們實現了高速的壓縮和解壓縮。該方法的瓶頸在於 ANS 的實際操作,但我們對此保持樂觀,相信其固有的並行性可以解決這一問題。未來 Bit-Swap 將會有更大幅度的提升。

結果

伯克利人工智慧研究院開源深度學習資料壓縮方法Bit-Swap,效能創新高

伯克利人工智慧研究院開源深度學習資料壓縮方法Bit-Swap,效能創新高

我們從 ImageNet 中隨機選取 32x32 畫素的圖,進行分層隱變數模型的訓練。我們又從測試集中選取另外 100 個圖進行測試,這 100 個圖同樣被處理為 32x32 畫素,這樣就可以適用於由 32x32 畫素塊組成的網格了。該網格可以看作為一個數據集,使用 Bit-Swap 和 BB-ANS 以序列的形式進行處理。接下來,我們用 Bit-Swap 和 BB-ANS 處理單個序列,即每次壓縮一張圖片。我們使用相同的圖片,與 baseline 進行對比。結果如上圖所示。我們相信可以透過使用更高畫素的圖和更復雜的模型獲得更好的結果。全部結果可參見論文。

Demo

來嘗試用 Bit-Swap 壓縮你自己的圖片吧。把這個 GitHub 資料夾(https://github。com/fhkingma/bitswap)克隆到本地,執行指令碼 demo_compress。py 和 demo_decompress。py,demo_compress。py 會使用 Bit-Swap 進行壓縮處理,並與 GNU Gzip、bzip2、LZMA、PNG 和 WebP 等壓縮方法進行對比。demo_decompress。py 會對 Bit-Swap 壓縮檔案進行解壓縮。

注意:

如果輸入的檔案是已經被壓縮的(JPEG、PNG 等),程式會先對檔案進行解壓縮,輸出為 RGB 畫素資料。接下來,RGB 畫素資料就成了輸入,Bit-Swap 會對其進行壓縮,得到比 RGB 畫素資料更小的結果。有人可能注意到了,原始的 RGB 畫素資料比輸入的檔案包含了更多的資訊量。在將 JPEG 檔案轉為 RGB 資料時,檔案大小上的差異尤為明顯。這是因為 JPEG 是一種有損的壓縮形式,它包含一個量化步驟,該步驟會使原始圖片丟失掉大部分資訊。量化過程實現了可預測的模式,但也不得不使用了有損的壓縮技術。然而當解壓 JPEG 檔案並將其轉化為 RGB 時,無論是什麼模式,我們都儲存了每一個畫素值,從而保留了更大的資訊量。

原文連結:

https://bair。berkeley。edu/blog/2019/09/19/bit-swap/

(*本文為 AI科技大本營翻譯文章,轉載請微信聯絡1092722531)