超分辨率技術(Super-Resolution)是指從觀測到的低分辨率圖像重建出相應的高分辨率圖像,在監控設備、衛星圖像和醫學影像等領域都有重要的應用價值。SR可分爲兩類:從多張低分辨率圖像重建出高分辨率圖像和從單張低分辨率圖像重建出高分辨率圖像。基於深度學習的SR,主要是基於單張低分辨率的重建方法,即Single Image Super-Resolution (SISR)。html
SISR是一個逆問題,對於一個低分辨率圖像,可能存在許多不一樣的高分辨率圖像與之對應,所以一般在求解高分辨率圖像時會加一個先驗信息進行規範化約束。在傳統的方法中,這個先驗信息能夠經過若干成對出現的低-高分辨率圖像的實例中學到。而基於深度學習的SR經過神經網絡直接學習分辨率圖像到高分辨率圖像的端到端的映射函數。git
本文介紹幾個較新的基於深度學習的SR方法,包括SRCNN,DRCN, ESPCN,VESPCN和SRGAN等。github
1.SRCNN
Super-Resolution Convolutional Neural Network (SRCNN, PAMI 2016, http://mmlab.ie.cuhk.edu.hk/projects/SRCNN.html)是較早地提出的作SR的卷積神經網絡。該網絡結構十分簡單,僅僅用了三個卷積層。算法
該方法對於一個低分辨率圖像,先使用雙三次(bicubic)插值將其放大到目標大小,再經過三層卷積網絡作非線性映射,獲得的結果做爲高分辨率圖像輸出。做者將三層卷積的結構解釋成與傳統SR方法對應的三個步驟:圖像塊的提取和特徵表示,特徵非線性映射和最終的重建。chrome
三個卷積層使用的卷積核的大小分爲爲9x9, 1x1和5x5,前兩個的輸出特徵個數分別爲64和32. 該文章分別用Timofte數據集(包含91幅圖像)和ImageNet大數據集進行訓練。相比於雙三次插值和傳統的稀疏編碼方法,SRCNN獲得的高分辨率圖像更加清晰,下圖是一個放大倍數爲3的例子。markdown
對SR的質量進行定量評價經常使用的兩個指標是PSNR(Peak Signal-to-Noise Ratio)和SSIM(Structure Similarity Index)。這兩個值越高表明重建結果的像素值和金標準越接近,下圖代表,在不一樣的放大倍數下,SRCNN都取得比傳統方法好的效果。網絡
2.DRCN
SRCNN的層數較少,同時感覺野也較小(13x13)。DRCN (Deeply-Recursive Convolutional Network for Image Super-Resolution, CVPR 2016, http://cv.snu.ac.kr/research/DRCN/)提出使用更多的卷積層增長網絡感覺野(41x41),同時爲了不過多網絡參數,該文章提出使用遞歸神經網絡(RNN)。網絡的基本結構以下:ide
與SRCNN相似,該網絡分爲三個模塊,第一個是Embedding network,至關於特徵提取,第二個是Inference network, 至關於特徵的非線性變換,第三個是Reconstruction network,即從特徵圖像獲得最後的重建結果。其中的Inference network是一個遞歸網絡,即數據循環地經過該層屢次。將這個循環進行展開,就等效於使用同一組參數的多個串聯的卷積層,以下圖所示:函數
其中的到是D個共享參數的卷積層。DRCN將每一層的卷積結果都經過同一個Reconstruction Net獲得一個重建結果,從而共獲得D個重建結果,再把它們加權平均獲得最終的輸出。另外,受到ResNet的啓發,DRCN經過skip connection將輸入圖像與的輸出相加後再做爲Reconstruction Net的輸入,至關於使Inference Net去學習高分辨率圖像與低分辨率圖像的差,即恢復圖像的高頻部分。
實驗部分,DRCN也使用了包含91張圖像的Timofte數據集進行訓練。獲得的效果比SRCNN有了較大提升。
3.ESPCN
在SRCNN和DRCN中,低分辨率圖像都是先經過上採樣插值獲得與高分辨率圖像一樣的大小,再做爲網絡輸入,意味着卷積操做在較高的分辨率上進行,相比於在低分辨率的圖像上計算卷積,會下降效率。 ESPCN(Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network,CVPR 2016, https://github.com/Tetrachrome/subpixel)提出一種在低分辨率圖像上直接計算卷積獲得高分辨率圖像的高效率方法。
ESPCN的核心概念是亞像素卷積層(sub-pixel convolutional layer)。如上圖所示,網絡的輸入是原始低分辨率圖像,經過兩個卷積層之後,獲得的特徵圖像大小與輸入圖像同樣,可是特徵通道爲(是圖像的目標放大倍數)。將每一個像素的個通道從新排列成一個r x r的區域,對應於高分辨率圖像中的一個r x r大小的子塊,從而大小爲 x H x W的特徵圖像被從新排列成1 x rH x rW大小的高分辨率圖像。這個變換雖然被稱做sub-pixel convolution, 但實際上並無卷積操做。
經過使用sub-pixel convolution, 圖像從低分辨率到高分辨率放大的過程,插值函數被隱含地包含在前面的卷積層中,能夠自動學習到。只在最後一層對圖像大小作變換,前面的卷積運算因爲在低分辨率圖像上進行,所以效率會較高。
重建效果上,用PSNR指標看來ESPCN比SRCNN要好一些。對於1080HD的視頻圖像,作放大四倍的高分辨率重建,SRCNN須要0.434s而ESPCN只須要0.029s。
4. VESPCN
在視頻圖像的SR問題中,相鄰幾幀具備很強的關聯性,上述幾種方法都只在單幅圖像上進行處理,而VESPCN( Real-Time Video Super-Resolution with Spatio-Temporal Networks and Motion Compensation, arxiv 2016)提出使用視頻中的時間序列圖像進行高分辨率重建,而且能達到實時處理的效率要求。其方法示意圖以下,主要包括三個方面:
一是糾正相鄰幀的位移誤差,即先經過Motion estimation估計出位移,而後利用位移參數對相鄰幀進行空間變換,將兩者對齊。二是把對齊後的相鄰若干幀疊放在一塊兒,當作一個三維數據,在低分辨率的三維數據上使用三維卷積,獲得的結果大小爲。三是利用ESPCN的思想將該卷積結果從新排列獲得大小爲的高分辨率圖像。
Motion estimation這個過程能夠經過傳統的光流算法來計算,DeepMind 提出了一個Spatial Transformer Networks, 經過CNN來估計空間變換參數。VESPCN使用了這個方法,而且使用多尺度的Motion estimation:先在比輸入圖像低的分辨率上獲得一個初始變換,再在與輸入圖像相同的分辨率上獲得更精確的結果,以下圖所示:
因爲SR重建和相鄰幀之間的位移估計都經過神經網路來實現,它們能夠融合在一塊兒進行端到端的聯合訓練。爲此,VESPCN使用的損失函數以下:
第一項是衡量重建結果和金標準之間的差別,第二項是衡量相鄰輸入幀在空間對齊後的差別,第三項是平滑化空間位移場。下圖展現了使用Motion Compensation 後,相鄰幀之間對得很整齊,它們的差值圖像幾乎爲0.
從下圖能夠看出,使用了Motion Compensation,重建出的高分辨率視頻圖像更加清晰。
5.SRGAN
SRGAN (Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network,https://arxiv.org/abs/1609.04802, 21 Nov, 2016)將生成式對抗網絡(GAN)用於SR問題。其出發點是傳統的方法通常處理的是較小的放大倍數,當圖像的放大倍數在4以上時,很容易使獲得的結果顯得過於平滑,而缺乏一些細節上的真實感。所以SRGAN使用GAN來生成圖像中的細節。
傳統的方法使用的代價函數通常是最小均方差(MSE),即
該代價函數使重建結果有較高的信噪比,可是缺乏了高頻信息,出現過分平滑的紋理。SRGAN認爲,應當使重建的高分辨率圖像與真實的高分辨率圖像不管是低層次的像素值上,仍是高層次的抽象特徵上,和總體概念和風格上,都應當接近。總體概念和風格如何來評估呢?可使用一個判別器,判斷一副高分辨率圖像是由算法生成的仍是真實的。若是一個判別器沒法區分出來,那麼由算法生成的圖像就達到了以假亂真的效果。
所以,該文章將代價函數改進爲
第一部分是基於內容的代價函數,第二部分是基於對抗學習的代價函數。基於內容的代價函數除了上述像素空間的最小均方差之外,又包含了一個基於特徵空間的最小均方差,該特徵是利用VGG網絡提取的圖像高層次特徵:
對抗學習的代價函數是基於判別器輸出的機率:
其中是一個圖像屬於真實的高分辨率圖像的機率。是重建的高分辨率圖像。SRGAN使用的生成式網絡和判別式網絡分別以下:
該方法的實驗結果以下
從定量評價結果上來看,PSNR和SSIM這兩個指標評價的是重建結果和金標準在像素值空間的差別。SRGAN獲得的評價值不是最高。可是對於MOS(mean opinion score)的評價顯示,SRGAN生成的高分辨率圖像看起來更真實。