嫌圖片太大!有卷積神經網路幫忙,生成高質壓縮圖像不再難
GIF/1.7M
原文來源:medium
作者:Harshvardhan Gupta
「機器人圈」編譯:嗯~阿童木呀、多啦A亮
眾所周知,現如今,諸如神經網路這樣的數據驅動演算法已經風靡全球。而隨著技術價格的降低、硬體的強大和數據的海量級增多,演算法的應用領域也在逐漸擴張。目前,神經網路是涵蓋圖像識別和自然語言理解等「認知」任務領域中的最先進技術,但並不局限於這些任務。 在這篇文章中,我將討論一種使用神經網路進行圖像壓縮的方式,以更快的速度實現圖像壓縮的最先進性能表現。
本文基於《一個基於卷積神經網路的端到端壓縮框架》實現的。下載論文。
在開始之前,本文假設你對諸如卷積和損失函數等神經網路有一定的了解。
什麼是圖像壓縮?
圖像壓縮是轉換圖像的過程,以便使其佔用較少的空間。對圖像進行簡單存儲將會佔用大量空間,所以有一些諸如JPEG和PNG這樣的編解碼器出現,目的是減小原始圖像的大小。
有損與無損壓縮
圖像壓縮有兩種類型:無損和有損。顧名思義,在無損壓縮中,有可能返回原始圖像的所有數據,而在有損壓縮中,有些數據會在轉換期間丟失。
例如,JPG是一種有損演算法,而PNG是一種無損演算法。
無損和有損壓縮之間的比較(原圖、50%有損壓縮、80%有損壓縮)
請注意,請注意右側的圖像有許多塊狀的人工製品。這就是信息丟失的方式。附近的類似顏色的像素被壓縮為一個區域,雖然節省了空間,但同時也丟失了關於實際像素的信息。當然,像JGEG、PNG等編解碼器的實際演算法要複雜得多,但這確實是有損壓縮的一個較為直觀的例子。無損壓縮是很好,但它最終在磁碟上佔用了大量的空間。
其實,有很多更好的方法可以用來壓縮圖像而不丟失大量信息,但是它們的運行速度非常慢,而且其中有很多需要使用迭代方法,這意味著它們不能在多個CPU內核或GPU上並行運行。因此,將它們應用於日常使用中顯得非常不切實際。
卷積神經網路的引入
如果需要計算任何東西,且可以近似,那就在其上使用神經網路。作者使用了一個非常標準的卷積神經網路來改善圖像壓縮。他們的方法不僅能夠與「更好的方式」(如果沒有更好)相媲美,還可以利用並行計算,使速度提高到一個不可思議的水平。
而究其原因,主要是因為卷積神經網路(CNN)非常善於從圖像中提取空間信息,然後以一種更為緊湊的形式表示(例如,僅存儲圖像的「重要」部分)。作者想利用CNN的這種能力來更好地表現圖像。
架構
作者提出了一個雙重網路。第一個網路,接收圖像並生成一個緊湊表示(ComCNN)。然後,該網路的輸出將通過標準編解碼器(例如JPEG)進行處理。經過編解碼器的處理,圖像將被傳遞到第二個網路,這它將「修復」來自編解碼器的圖像,試圖恢復原始圖像。作者將其稱為重建CNN(RecCNN)。同時,這兩個網路都將進行迭代訓練,類似於生成式對抗網路(GAN)。
ComCNN ,將緊湊表示傳遞給標準編解碼器
RecCNN,來自ComCNN的輸出被放大並傳遞給RecCNN,它將試圖學習殘差
來自的編解碼器的輸出被放大,然後傳遞給RecCNN。RecCNN將嘗試輸出一個與原始圖像相似的圖像。
進行圖像壓縮的端到端框架,Co(.)表示圖像壓縮演算法。作者使用JPEG、JPEG2000和BPG進行處理。
什麼是殘差?
殘差可以被認為是一個後期處理步驟,用以「改進」編解碼器解碼的圖像。那些有著很多關於這個世界「信息」的網路,可以做出關於「修復」的認知決定。而這個想法的提出是基於殘差學習的,更多有關更多信息可以參閱此篇論文。
損失函數
由於有兩個網路,所以使用兩個損失函數。第一個,對於ComCNN,標記為L1的定義為:
等式1.0用於 ComCNN的損失函數
說明
這個等式可能看起來很複雜,但它實際上是標準(均方誤差)MSE。其中||2表示它們所包含的向量的「範數」。
等式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修改其權重,使其輸出看起來儘可能靠近原始圖像。
訓練安排
這些模型被迭代地訓練,類似於GAN的訓練方式。一個模型的權重是固定的,而另一個模型的權重被更新,當另一個模型的權重是固定的,而第一個模型被訓練。
基準
作者將其方法與現有方法進行了比較,包括編解碼器。 他們的方法比其他方法執行得更好,同時在可用硬體上使用時保持高速。作者嘗試只使用其中一個網路,他們發現性能有所下降。
圖3.0 SSIM(結構相似度指數)比較。較高的值表示更好的與原始相似性。作者的作品用粗體字體表示。
結論
我們研究了一種利用深度學習來壓縮圖像的新方法。 我們討論了在除了圖像分類和語言處理等常見的任務上使用神經網路的可能性。這種方法不僅在現有技術上一直很好,而且可以以更快的速度處理圖像。
※瞬間變樣!看TensorFlow如何實現深度「圖片風格遷移」
※TensorFlow和PyTorch相繼發布最新版,有何變化
※如何用CoreML和Swift在蘋果上開發「實時對象識別器」
※你離識別這些AI謊言有多遠?科普綜藝來補位
※LR-GAN如何生成圖像?這裡有篇Pytorch教程
TAG:機器人圈 |
※極端圖像壓縮的生成對抗網路,可生成低碼率的高質量圖像
※學界 | 極端圖像壓縮的生成對抗網路,可生成低碼率的高質量圖像
※幹掉高速攝像頭!神經網路生成極慢視頻,突破人類肉眼極限
※軟網推薦:多重文件夾生成不再難
※恆星坍縮不是只能生成黑洞,還會有種恐怖的天體,比黑洞更加強大
※新手必看,重訓時速度快慢會影響肌肉生成嗎?別再猶豫了!
※使用生成式對抗網路進行圖像去模糊
※黑洞的成因再添新理論,它誕生於恆星的直接塌陷,生成速度很快
※用你的姓氏一鍵生成頭像壁紙,太好看了!
※量子力學在真正的隨機數生成方面取得了重大突破!
※一言不合就想斗圖?快用深度學習幫你生成表情包
※高齡大腦依然可生成神經元
※生成的圖像數據集效果不好?也許你需要考慮內容分布的差異
※為什麼女生成績越好越難找工作?
※神秘的快速射電暴再現,源頭尚不明確,其生成機制也成謎
※AI用你的臉生成假視頻,你卻不能刪除
※邊做飯還能生成短視頻,這台智能電烤箱的想法很特別
※解答頭皮屑是怎麼生成的 讓你擁有美好形象
※宇宙中有沒有生成比鈾密度更大的元素?
※終極問題,既然能量不能憑空產生,那生成宇宙的能量源於哪裡?