ECCV 2020 Oral | 可逆圖像縮放:完美恢復降採樣後的高清圖片

  

  文介紹的是ECCV 2020 Oral論文《Invertible Image Rescaling》,論文做來自北大、微軟亞洲研究院和多倫多大學。git

  做者 | 鄭書新github

  編輯 | 叢 末安全

  

  論文地址:https://arxiv.org/pdf/2005.05650.pdf
服務器

  開源代碼:https://github.com/pkuxmq/Invertible-Image-Rescaling(即將開源)網絡

  1函數

  研究背景性能

  不知道同窗們平日裏上網有沒有遇到過這種狀況:本身精心拍攝的高清照片/視頻,想發給朋友or分享到朋友圈/微博/抖音/知乎,結果上傳文件以後,直接被無良服務器壓成超低分辨率渣畫質。甚至有些圖片/表情包在通過屢次傳播以後,畫質已經糊到慘不忍睹。
學習

  其實,圖片的降採樣(縮放)能夠說是對數字圖像最多見的操做了,它的用處多種多樣:壓縮圖片尺寸、節省服務器存儲or帶寬、適配不一樣分辨率的屏幕等等。像如今服務器資源這麼貴,你們發微博/知乎也不交錢,頂多給各位多塞點廣告,因此高清圖片和視頻天然是能壓則壓,能分得清張一山和夏雨就能夠了。ui

  如何恢復降採樣後的圖片是圖像處理中一個很是有挑戰的問題,一直沒有被很好的解決。3d

  咱們這篇最新工做,就巧妙地嘗試從本質上解決這個問題,論文已被ECCV2020收錄爲Oral 論文。

  2

  方法

  對降採樣後圖片的原圖求解是一個典型的病態(ill-posed)問題:

  

  如今有一張圖片有4個像素,值分別爲1,3,5,7。假設對原圖進行雙線性插值降採樣(Bilinear Interpolation),獲得像素值爲4的低分辨率圖片。那麼,如何從這一個像素還原出原圖呢?

  這個問題太難了,有太多種4個像素取值的組合均可以獲得一樣一張低分辨率圖片。若是是4x降採樣,則會有16個像素被採樣成一個點。。想要精確地從一個像素還原出原圖?你看看那些像素上的"?"眼熟不。。。

  

  爲何這是一個病態問題?這是由於在降採樣的過程當中存在着信息的丟失(information loss), 以致於沒法很好地還原回原圖。而前人的作法通常是使用一個超分辨率的卷積神經網絡,嘗試從大量的數據中強行學習低分辨率到高分辨率的映射關係;或者使用encoder網絡對原圖進行降採樣,同時使用decoder網絡還原圖片,兩者進行聯合訓練(jointly training)達到更好的效果。但以上這些方法都沒有從本質上解決病態問題,效果也不盡如人意。所以咱們須要更聰明的方法來解決病態問題。

  

  基於DNN的Encoder-Decoder結構對圖像進行縮放和還原

  剛纔提到了病態問題的產生是因爲信息的丟失,那麼具體是什麼信息被丟失了呢?

  「High-frequency content will get lost during sample rate conversion.」
--Nyquist-Shannon Sampling Theorem

  正是因爲高頻信息的丟失致使了咱們沒法很好的還原高清原圖,那麼若是咱們「保留」這些高頻信息呢?

  

  爲了能夠顯式地保留高頻信息,咱們將降採樣的過程替換爲小波變換:由小波變換咱們能夠獲得原圖的一個低頻份量和三個不一樣方向的高頻份量。這裏的低頻份量與雙線性插值降採樣獲得的低分辨率結果是同樣的,而高頻份量則是在降採樣過程當中被丟失的信息。

  當咱們選擇保留所有信息時,咱們可使用小波變換的逆變換(即反函數,若是 ,那麼 ),很輕鬆地將原圖恢復出來。同理,對於使用DNN進行降採樣的圖片,咱們若是保留了所有信息,那麼也可使用DNN的反函數將原圖恢復回來。

  

  
對於深度學習模型這樣一種複雜的非線性函數,它的反函數是什麼呢? 這裏咱們要用到可逆神經網絡(Invertible NN, INN)模型。 對可逆神經網絡模型不熟悉的同窗,推薦閱讀Lilian Weng的博客: Flow-based Generative Model. 咱們採用了最簡單的Normalizing Flow的形式。 這裏須要注意,flow-based模型是嚴格可逆的。 從另外一個角度來思考這個問題,降採樣和升採樣原本就是一對逆任務,是否便應當使用可逆神經網絡?

  

  
有了可逆神經網絡模型,咱們能夠把以前的Encoder-Decoder網絡換成INN和它的反函數,這樣,若是咱們能夠保留所有信息,就能完美地恢復出原始高清圖片。 然而,咱們顯然沒法在存儲、傳輸低分辨率圖片時還附帶這些本應被丟失的信息(低分辨率圖片的維度+丟失信息的維度=原始圖片的維度),而丟棄這些信息又讓咱們沒法使用INN來恢復出原圖。 因此,折騰了半天又把這條路堵死了?

  

  別急,咱們再來回顧一下前面的簡單例子:

  

  咱們令 表示原始高清圖片, 和 分別表示低頻與高頻份量。小波變換 將 轉換爲 。 本該被丟棄,然而卻沒法被丟棄(丟棄後沒法經過 恢復 ),其緣由在於 的分佈是condition on ,即 是與樣本相關的(case-specific),所以分佈 是難以獲知的。那咱們的insight就是:只要捕捉到丟失信息(Lost Information)的分佈,就能獲得關於它最多的信息。所以若是能令 與 相互獨立,而且使全部的 (over dataset)經過某個變換服從一個預約的簡單分佈(如高斯分佈),那麼 就能夠被安全地丟棄,須要它時再採樣就行了。

  此時,輪到咱們的INN出場了。咱們引入變量 ,令 。 是一個INN,負責把 轉換爲 (這步有定理保證[1])。此使 的分佈已經與 無關了,即case-agnoistic。同時,INN還能夠生成符合咱們要求的 (如視覺效果更好的/便於壓縮的..)。

  

  對於case-agnoistic的 ,咱們能夠放心地將其丟棄;而當須要恢復原圖時,咱們能夠在高斯分佈中進行採樣來獲得 。這裏須要注意,整個過程並非徹底沒有信息丟失,這是由於咱們使用了一個分佈(高斯分佈)中的一次隨機採樣來代替符合該分佈中的一個特定樣本點。可是因爲咱們的INN已經學習到如何將符合高斯分佈的點(結合 )恢復爲case-specific的 ,所以相對於前人徹底忽視ill-posed問題的作法,能夠從本質上緩解求解ill-posed問題帶來的困難,效果上的提高也是很是顯著:

  除了性能的大幅提高,更重要的是,得益於建模方法嘗試直接解決任務的本質問題,模型所需參數量只需前人方法的1/10~1/30。下面是效果的可視化,請注意綠色框中對原圖的還原程度。

  

  更多的細節能夠參考論文,包括具體的訓練方法、不一樣採樣的 如何影響圖片還原、對於Out of Distribution的 模型又會有怎樣的效果等等。

  3

  總結

  最後總結一下:其實Image Rescaling任務是一個頗有挑戰、同時在實際場景中應用普遍且商業價值巨大的任務。本文使用可逆神經網絡對解決這一對逆任務進行了初步的嘗試,沿着這條思路仍有不少值得發掘的點。同時,信息丟失(Information Loss)所致使的ill-posed問題在現實中也大量存在,本文提供的對Lost Information進行建模的視角,相信能夠對相似任務有必定的參考價值。

  參考資料:

  ^Nonlinear independent component analysis: Existence and uniqueness results. https://www.sciencedirect.com/science/article/abs/pii/S0893608098001403

相關文章
相關標籤/搜索