神經網絡等數據驅動算法席捲全球。 它們的發展有幾個原因,包括廉價而強大的設備和海量數據。 神經網絡目前處於與“認知”任務相關的一切領域的前沿,例如圖像識別、自然語言理解等。 但它們不應僅限於此類任務。 本文討論如何使用神經網絡壓縮圖像,使用殘差學習。 本文中介紹的方法比標準編解碼器更快更好。 方案、方程式,當然還有下切測試的表格。
本文基於
什麼是圖像壓縮及其工作原理?
圖像壓縮是轉換圖像以使其占用更少空間的過程。 簡單地存儲圖像會佔用大量空間,這就是為什麼有 JPEG 和 PNG 等旨在減少原始圖像大小的編解碼器的原因。
如您所知,有兩種類型的圖像壓縮: 沒有損失 и 有損失. 顧名思義,無損壓縮可以保留原始圖像數據,而有損壓縮會在壓縮過程中丟失部分數據。 例如,JPG 是有損算法 [大約。 翻譯。 - 基本上,我們也不要忘記無損 JPEG],而 PNG 是一種無損算法。
無損和有損壓縮的比較
請注意,右側圖像中有很多塊狀偽像。 這是丟失的信息。 相似顏色的相鄰像素被壓縮為一個區域以節省空間,但有關實際像素的信息丟失了。 當然,JPEG、PNG 等編解碼器中使用的算法要復雜得多,但這是有損壓縮的一個很好的直觀示例。 無損壓縮固然好,但無損壓縮文件佔用磁盤空間大。 有更好的方法可以在不丟失大量信息的情況下壓縮圖像,但它們非常慢並且許多使用迭代方法。 這意味著它們不能在多個 CPU 或 GPU 內核上並行運行。 這種限制使它們在日常使用中完全不切實際。
卷積神經網絡輸入
如果需要計算某些東西並且計算可以是近似的,請添加
架構
作者提出了一個雙網絡。 第一個網絡將圖像作為輸入並生成緊湊表示 (ComCNN)。 該網絡的輸出隨後由標準編解碼器(例如 JPEG)處理。 在經過編解碼器處理後,圖像被傳遞到第二個網絡,該網絡“修復”來自編解碼器的圖像以嘗試返回原始圖像。 作者將這個網絡命名為 Reconstructive CNN (RecCNN)。 與 GAN 一樣,這兩個網絡都是迭代訓練的。
ComCNN 緊湊表示傳遞給標準編解碼器
RecCNN。 ComCNN 輸出按比例放大並饋送到 RecCNN,後者將嘗試學習剩餘部分
編解碼器輸出按比例放大,然後傳遞給 RecCNN。 RecCNN 將嘗試渲染盡可能接近原始圖像的圖像。
端到端圖像壓縮框架。 Co(.) 是一種圖像壓縮算法。 作者使用了 JPEG、JPEG2000 和 BPG
什麼是餘數?
其餘部分可以被認為是“改進”編解碼器正在解碼的圖像的後處理步驟。 擁有大量關於世界的“信息”,神經網絡可以做出關於修復什麼的認知決策。 這個想法是基於
損失函數
使用兩個損失函數是因為我們有兩個神經網絡。 其中第一個是 ComCNN,標記為 L1,定義如下:
ComCNN 的損失函數
說明
這個方程看似複雜,其實是標準的(均方根誤差) MSE. ||² 表示它們所包圍的向量的範數。
公式 1.1
Cr 表示 ComCNN 的輸出。 θ表示ComCNN參數的可學習性,XK是輸入圖像
公式 1.2
Re()
代表 RecCNN。 這個等式簡單地將等式1.1的意思傳達給RecCNN。 θ 表示 RecCNN 可訓練參數(頂上的帽子表示參數是固定的)。
直觀定義
方程式 1.0 將導致 ComCNN 改變其權重,以便在使用 RecCNN 重新創建時,最終圖像看起來與輸入圖像盡可能相似。 第二個 RecCNN 損失函數定義如下:
公式 2.0
說明
同樣,該函數可能看起來很複雜,但這在很大程度上是一個標準的神經網絡損失函數 (MSE)。
公式 2.1
Co()
表示編解碼器輸出,頂部帶帽子的 x 表示 ComCNN 輸出。 θ2 是 RecCNN 可訓練參數, res()
只是 RecCNN 的殘差輸出。 值得注意的是,RecCNN 是在 Co() 和輸入圖像之間的差異上訓練的,而不是在輸入圖像上訓練的。
直觀定義
公式 2.0 將導致 RecCNN 改變其權重,以便輸出看起來與輸入圖像盡可能相似。
學習計劃
模型是迭代訓練的,比如
測試
作者將他們的方法與現有方法(包括簡單的編解碼器)進行了比較。 他們的方法比其他方法執行得更好,同時在適當的硬件上保持高速。 此外,作者嘗試僅使用兩個網絡中的一個並註意到性能下降。
結構相似性指數比較 (SSIM)。 高值表示與原件更相似。 粗體表示作者的工作結果
結論
我們研究了一種將深度學習應用於圖像壓縮的新方法,並討論了在圖像分類和語言處理等“一般”任務之外的任務中使用神經網絡的可能性。 這種方法不僅不遜色於現代要求,而且可以讓您更快地處理圖像。
學習神經網絡變得更加容易,因為我們專門為 Habravchan 製作了促銷代碼 哈伯, 在橫幅上顯示的折扣基礎上額外提供 10% 的折扣。
更多課程
數據分析課程 開發運營課程 職業網絡開發人員 從零開始的職業 iOS 開發者 從零開始的職業 Android 開發者 從零開始的職業 Java 開發人員 JavaScript課程 機器學習課程 “數據科學的數學和機器學習”課程 進階課程《機器學習Pro+深度學習》
推薦文章
如何在沒有在線課程的情況下成為數據科學家 450 個免費的常春藤盟校課程 如何連續 5 個月每週 9 天學習機器學習 數據分析師的收入是多少:2020 年俄羅斯和國外的薪資和職位空缺概覽 採礦業中的機器學習和計算機視覺
來源: www.habr.com