1. 程式人生 > >基於CNN的超解析度重建方法

基於CNN的超解析度重建方法

超解析度技術(Super-Resolution)是指從觀測到的低解析度影象重建出相應的高解析度影象,在監控裝置、衛星影象和醫學影像等領域都有重要的應用價值。SR可分為兩類:從多張低解析度影象重建出高解析度影象和從單張低解析度影象重建出高解析度影象。基於深度學習的SR,主要是基於單張低解析度的重建方法,即Single Image Super-Resolution (SISR)。SISR是一個逆問題,對於一個低解析度影象,可能存在許多不同的高解析度影象與之對應,因此通常在求解高解析度影象時會加一個先驗資訊進行規範化約束。在傳統的方法中,這個先驗資訊可以通過若干成對出現的低-高解析度影象的例項中學到。而基於深度學習的SR通過神經網路直接學習解析度影象到高解析度影象的端到端的對映函式。

本文介紹幾個較新的基於深度學習的SR方法,包括SRCNN,DRCN, ESPCN,VESPCN和SRGAN等。

1.SRCNNSuper-Resolution Convolutional Neural Network (SRCNN, PAMI 2016, http://mmlab.ie.cuhk.edu.hk/projects/SRCNN.html)是較早地提出的做SR的卷積神經網路。該網路結構十分簡單,僅僅用了三個卷積層。

該方法對於一個低解析度影象,先使用雙三次(bicubic)插值將其放大到目標大小,再通過三層卷積網路做非線性對映,得到的結果作為高解析度影象輸出。作者將三層卷積的結構解釋成與傳統SR方法對應的三個步驟:影象塊的提取和特徵表示,特徵非線性對映和最終的重建。

三個卷積層使用的卷積核的大小分為為9x9, 1x1和5x5,前兩個的輸出特徵個數分別為64和32. 該文章分別用Timofte資料集(包含91幅影象)和ImageNet大資料集進行訓練。相比於雙三次插值和傳統的稀疏編碼方法,SRCNN得到的高解析度影象更加清晰,下圖是一個放大倍數為3的例子。


對SR的質量進行定量評價常用的兩個指標是PSNR(Peak Signal-to-Noise Ratio)和SSIM(Structure Similarity Index)。這兩個值越高代表重建結果的畫素值和其標準越接近,下圖表明,在不同的放大倍數下,SRCNN都取得比傳統方法好的效果。



2.DRCNSRCNN的層數較少,同時感受野也較小(13x13)。DRCN (Deeply-Recursive Convolutional Network for Image Super-Resolution, CVPR 2016, http://cv.snu.ac.kr/research/DRCN/)提出使用更多的卷積層增加網路感受野(41x41),同時為了避免過多網路引數,該文章提出使用遞迴神經網路(RNN)。網路的基本結構如下:

與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.SRGANSRGAN (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生成的高解析度影象看起來更真實。


參考資料1, Dong, Chao, et al. "Image super-resolution using deep convolutional networks." IEEE transactions on pattern analysis and machine intelligence 38.2 (2016): 295-307.2, Kim, Jiwon, Jung Kwon Lee, and Kyoung Mu Lee. "Deeply-recursive convolutional network for image super-resolution." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.3, Shi, Wenzhe, et al. "Real-time single image and video super-resolution using an efficient sub-pixel convolutional neural network." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.4, Caballero, Jose, et al. "Real-Time Video Super-Resolution with Spatio-Temporal Networks and Motion Compensation." arXiv preprint arXiv:1611.05250 (2016).5, Jaderberg, Max, Karen Simonyan, and Andrew Zisserman. "Spatial transformer networks." Advances in Neural Information Processing Systems. 2015.6, Ledig, Christian, et al. "Photo-realistic single image super-resolution using a generative adversarial network." arXiv preprint arXiv:1609.04802 (2016).7,深度對抗學習在影象分割和超解析度中的應用