天天看點

深度學習在圖像超分辨率重建中的應用

超分辨率技術(Super-Resolution)是指從觀測到的低分辨率圖像重建出相應的高分辨率圖像,在監控裝置、衛星圖像和醫學影像等領域都有重要的應用價值。SR可分為兩類:從多張低分辨率圖像重建出高分辨率圖像和從單張低分辨率圖像重建出高分辨率圖像。基于深度學習的SR,主要是基于單張低分辨率的重建方法,即Single Image Super-Resolution (SISR)。

SISR是一個逆問題,對于一個低分辨率圖像,可能存在許多不同的高分辨率圖像與之對應,是以通常在求解高分辨率圖像時會加一個先驗資訊進行規範化限制。在傳統的方法中,這個先驗資訊可以通過若幹成對出現的低-高分辨率圖像的執行個體中學到。而基于深度學習的SR通過神經網絡直接學習分辨率圖像到高分辨率圖像的端到端的映射函數。

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

深度學習在圖像超分辨率重建中的應用

該方法對于一個低分辨率圖像,先使用雙三次(bicubic)插值将其放大到目标大小,再通過三層卷積網絡做非線性映射,得到的結果作為高分辨率圖像輸出。作者将三層卷積的結構解釋成與傳統SR方法對應的三個步驟:圖像塊的提取和特征表示,特征非線性映射和最終的重建。

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

深度學習在圖像超分辨率重建中的應用

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

深度學習在圖像超分辨率重建中的應用
深度學習在圖像超分辨率重建中的應用

與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有了較大提高。

深度學習在圖像超分辨率重建中的應用
深度學習在圖像超分辨率重建中的應用

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。

深度學習在圖像超分辨率重建中的應用

在視訊圖像的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,重建出的高分辨率視訊圖像更加清晰。

深度學習在圖像超分辨率重建中的應用

傳統的方法使用的代價函數一般是最小均方差(MSE),即

深度學習在圖像超分辨率重建中的應用

該代價函數使重建結果有較高的信噪比,但是缺少了高頻資訊,出現過度平滑的紋理。SRGAN認為,應當使重建的高分辨率圖像與真實的高分辨率圖像無論是低層次的像素值上,還是高層次的抽象特征上,和整體概念和風格上,都應當接近。整體概念和風格如何來評估呢?可以使用一個判别器,判斷一副高分辨率圖像是由算法生成的還是真實的。如果一個判别器無法區分出來,那麼由算法生成的圖像就達到了以假亂真的效果。

是以,該文章将代價函數改進為

深度學習在圖像超分辨率重建中的應用

第一部分是基于内容的代價函數,第二部分是基于對抗學習的代價函數。基于内容的代價函數除了上述像素空間的最小均方差以外,又包含了一個基于特征空間的最小均方差,該特征是利用VGG網絡提取的圖像高層次特征:

深度學習在圖像超分辨率重建中的應用

對抗學習的代價函數是基于判别器輸出的機率:

深度學習在圖像超分辨率重建中的應用

其中

深度學習在圖像超分辨率重建中的應用

是一個圖像屬于真實的高分辨率圖像的機率。

深度學習在圖像超分辨率重建中的應用

是重建的高分辨率圖像。SRGAN使用的生成式網絡和判别式網絡分别如下:

深度學習在圖像超分辨率重建中的應用

該方法的實驗結果如下

深度學習在圖像超分辨率重建中的應用

從定量評價結果上來看,PSNR和SSIM這兩個名額評價的是重建結果和金标準在像素值空間的差異。SRGAN得到的評價值不是最高。但是對于MOS(mean opinion score)的評價顯示,SRGAN生成的高分辨率圖像看起來更真實。

深度學習在圖像超分辨率重建中的應用

原文釋出時間為: 2017-04-26

本文作者:travelsea

本文來自雲栖社群合作夥伴極市網,了解相關資訊可以關注極市網。

繼續閱讀