閱讀999 返回首頁    go 阿裏雲 go 技術社區[雲棲]


AI新技術:利用神經網絡對圖片進行超級壓縮

像神經網絡這樣的數據驅動算法已席卷全球。他們最近的激增是由於硬件變得更加便宜也更加強大,同時也不缺乏大量的數據的支持。神經網絡目前發展到“圖像識別”,“自然語言理解”等認知任務,當然也僅限於此類任務。在這篇文章中,我將討論一種使用神經網絡壓縮圖像的方法,以更快的速度實現圖像壓縮的最新技術。

本文基於“基於卷積神經網絡的端到端壓縮框架”(https://arxiv.org/pdf/1708.00838v1.pdf)。

你需要對神經網絡有一些熟悉,包括卷積和損失函數。

什麼是圖像壓縮?

圖像壓縮是轉換圖像使其占用較少空間的過程。簡單地存儲圖像會占用大量空間,因此存在編解碼器,例如JPEG和PNG,旨在減小原始圖像的大小。

有損與無損壓縮
圖像壓縮有兩種類型:無損和有損。正如他們的名字所暗示的那樣,在無損壓縮中,有可能獲取原始圖像的所有數據,而在有損壓縮中,有些數據在轉換中丟失。

例如JPG是一種有損算法,而PNG是一種無損算法

279bda9bc536e5284d08c2b7189cf2c74042a725

無損和有損壓縮之間的比較

仔細看會發現右邊的圖像有很多小塊,這就是信息的丟失。類似顏色附近的像素被壓縮為一個區域,節省了空間,但也丟失關於實際像素的信息。當然,像JGEG,PNG等編解碼器的實際算法要複雜得多,但這是有損壓縮的良好直觀示例。無損當然好,但它在磁盤上占用了太大的空間。

雖然有更好的方法壓縮圖像而不會丟失大量信息,但是它們太慢了,許多使用迭代的方法,這意味著它們不能在多個CPU內核或GPU上並行運行。這使得它們應用在日常使用中並不現實。

進入卷積神經網絡

如果需要計算任何東西並且可以近似,就可以讓一個神經網絡來做。作者使用一個相當標準的卷積神經網絡來改善圖像壓縮。他們的方法不僅能達到“更好的壓縮圖像方法”的效果,還可以利用並行計算,讓速度的快速提升。

因為,卷積神經網絡(CNN)非常擅長從圖像中提取空間信息,然後以更緊湊的結構表現(例如,僅存儲圖像的“重要”比特)。作者想利用CNN的這種能力更好地表現圖像。

架構

作者提出了一個雙重網絡。第一個網絡,將采集圖像並生成壓縮表示(ComCNN)。然後,這個網絡的輸出通過標準的編解碼器(例如JPEG)進行處理。經過編解碼器後,圖像將被傳遞到第二個網絡,從編解碼器“修複”圖像,試圖恢複原始圖像。作者稱之為重建CNN(RecCNN)。這兩個網絡都被反複地訓練,類似於GAN。

440919bdbd6a1c62a46ba03fa25cf03fc00f39b3

ComCNN將壓縮表示傳遞給標準的編解碼器

6ff782b007e7ecde088eccf2b490b0f9212da0cb

來自ComCNN的輸出被放大並傳遞給RecCNN,它將嚐試學習一個殘差

編解碼器的輸出被放大,然後傳遞給RecCNN。RecCNN將嚐試輸出與原始圖像相似的圖像。

26310e47d1d824f892ff7080b864c4792a7af86c

殘差是什麼

殘差可以被認為是“改善”編解碼器解碼的圖像的後處理步驟。神經網絡有很多關於世界的“信息”,可以對“修複”做出認知決定。這個想法是基於殘差學習,你點擊鏈接進行更深入的了解(https://arxiv.org/pdf/1708.00838v1.pdf)。

損失函數

由於有兩個網絡,所以使用兩個損失函數函數。第一個,對於ComCNN,標記為L1,定義為:

bed7988cea1eff04b74eaf9835798adc294f66e4

ComCNN的損失函數(公式1.0)

說明
這個方程可能看起來很複雜,但它實際上是標準MSE(均方誤差)。||²表示它們所包含的矢量的“標準”。

085136ae46b70c9770c3c179779c5fce70df80ab

(公式1.1)

Cr表示ComCNN的輸出。θ表示ComCNN的可訓練參數,Xk表示輸入圖像

587fa7a86247d052582bebc6b5f0abe659459890

(公式1.2)

Re()表示RecCNN。該方程將公式1.1的值傳遞給RecCNN。“θ帽”表示RecCNN的可訓練參數(帽表示參數固定)

直觀的定義
公式1.0將使ComCNN修改它的權重,這樣,在經過RecCNN重新創建後,最終圖像將盡可能接近真實的輸入圖像。

RecCNN的第二個損失函數定義為:

2a15305a0fe93ab23b22076917450adc58ad8d8d

(公式2.0)

說明
同樣的,這個函數可能看起來很複雜,但它是一個常見而標準的神經網絡損失函數(MSE)。

b0470926ceed98ffcd809b906cc6317f3f9384ab

(公式2.1)

Co()表示編解碼器的輸出。x帽表示ComCNN的輸出。θ2表示RecCNN的可訓練參數。res()隻表示網絡學習的殘差,它隻是RecCNN的輸出。值得注意的是,RecCNN在Co()和輸入圖像之間的差異進行訓練,而不是直接從輸入圖像中進行訓練。

直觀的定義
公式2.0將使RecCNN修改其權重,使得其輸出看起來盡可能接近原始圖像。

訓練計劃

這些模型經過類似於GAN的訓練方式的迭代訓練。第一個模型的權重是固定的,而第二個模型的權重被更新,然後第二個模型的權重是固定的,而第一個模型被訓練。

基準

作者將其方法與現有方法進行了比較,包括簡單的編解碼器。他們的方法比其他方法更好,同時在有能力的硬件上使用時保持高速。作者注意到嚐試隻使用其中一個網絡性能會下降。

6bcd00be4a262d08c609ee44403e9d508e23a401

SSIM(結構相似度指數)比較。較高的值表示與原始的更好的相似性,作者的作品是粗體。

結論

一種應用深度學習來壓縮圖像的新技術。我們討論了除了圖像分類和語言處理等常用任務之外,使用神經網絡的可能性。這種技術不僅壓縮表現良好,處理圖像的速度也更快。

本文為編譯作品,轉載請注明出處。更多內容關注微信公眾號:atyun_com

最後更新:2017-10-20 12:33:24

  上一篇:go  高可用架構篇 MySQL源碼編譯安裝(CentOS-6.6+MySQL-5.6)
  下一篇:go  Hello 雲棲