超分辨率(Super-Resolution, SR)是指從觀測到的低分辨率圖像重建出相應的高分辨率圖像,在監控設備、衛星圖像和醫學影像等領域都有重要的應用價值。
端到端的基於深度學習的單張圖像超分辨率方法(Single Image Super-Resolution, SISR),2014年SRCNN是深度學習用在超分辨率重建上的開山之作,SRCNN的網絡結構非常簡單,僅僅用了三個卷積層,網絡結構如下圖所示:
SRCNN首先使用雙三次(bicubic)插值將低分辨率圖像放大成目標尺寸,接着通過三層卷積網絡擬合非線性映射,最后輸出高分辨率圖像結果。SRCNN將三層卷積的結構解釋成三個步驟:圖像塊的提取和特征表示,特征非線性映射和最終的重建。三個卷積層使用的卷積核的大小分為為9x9,1x1和5x5,前兩個的輸出特征個數分別為64和32。使用均方誤差(Mean Squared Error, MSE)作為損失函數,有利於獲得較高的PSNR。
2016年FSRCNN是對SRCNN的改進,主要在三個方面:一是在最后使用了一個反卷積層放大尺寸,因此可以直接將原始的低分辨率圖像輸入到網絡中,而不是像SRCNN那樣需要先通過bicubic方法放大尺寸;二是改變特征維數,使用更小的卷積核和使用更多的映射層;三是可以共享其中的映射層,如果需要訓練不同上采樣倍率的模型,只需要微調整fine-tuning最后的反卷積層。
由於FSRCNN不需要在網絡外部進行放大圖片尺寸的操作,同時通過添加收縮層和擴張層,將一個大層用一些小層來代替,因此FSRCNN與SRCNN相比有較大的速度提升。FSRCNN在訓練時也可以只fine-tuning最后的反卷積層,因此訓練速度更快。FSRCNN與SCRNN的結構對比如下圖所示:
FSRCNN可以分為五個部分:
特征提取:SRCNN中針對的是插值后的低分辨率圖像,選取的卷積核大小為9×9,FSRCNN直接對原始的低分辨率圖像進行操作,因此卷積核大小可以選小一點,設置為5×5;
收縮:通過應用1×1的卷積核進行降維,減少網絡的參數,降低計算復雜度;
非線性映射:感受野大,能夠表現的更好。在SRCNN中,采用的是5×5的卷積核,但是由於5×5的卷積核計算量會比較大。因此,FSRCNN改用兩個串聯的3×3的卷積核替代一個5×5的卷積核,同時兩個串聯的小卷積核需要的參數3×3×2=18比一個大卷積核5×5=25的參數量要小。FSRCNN網絡中通過m個核大小為3×3的卷積層進行串聯。
擴張:低維度的特征帶來的重建效果不是太好,因此,應用1×1的卷積核進行擴維,相當於收縮的逆過程;
反卷積層:可以簡單的看作是卷積層的逆操作,如果步長為n,那么尺寸放大n倍,實現了上采樣的操作。FSRCNN中激活函數采用PReLU,損失函數仍然是均方誤差-MSE。
2016年ESPCN類似SRCNN方法,由於SRCNN需要將低分辨率圖像通過上采樣插值得到與高分辨率圖像相同大小的尺寸,再輸入到網絡中,這意味着要在較高的分辨率上進行卷積操作,從而增加了計算復雜度。ESPCN采用了一種直接在低分辨率圖像尺寸上提取特征,計算得到高分辨率圖像的高效方法。ESPCN網絡結構如下圖所示:
ESPCN的核心概念是亞像素卷積層(sub-pixel convolutional layer)。網絡的輸入是原始低分辨率圖像,通過三個卷積層以后,得到通道數為r2的與輸入圖像大小一樣的特征圖像。再將特征圖像每個像素的r2個通道重新排列成一個r x r的區域,對應高分辨率圖像中一個r x r大小的子塊,從而大小為H x W x r2的特征圖像被重新排列成rH x rW x 1的高分辨圖像。在ESPCN網絡中,圖像尺寸放大過程的插值函數被隱含地包含在前面的卷積層中,可以自動學習得到。由於卷積運算都是在低分辨率圖像尺寸大小上進行,因此運算效率會比較高。訓練時,可以將輸入的訓練數據,預處理成重新排列操作前的格式,如將21×21的單通道圖,預處理成9個通道的7×7圖,這樣在訓練時,就不需要做重新排列的操作。此外,ESPCN激活函數采用tanh替代了ReLU,損失函數為均方誤差。
2016年VDSR指出輸入的低分辨率圖像和輸出的高分辨率圖像在很大程度上是相似的,即低分辨率圖像攜帶的低頻信息與高分辨率圖像攜帶的低頻信息相近,訓練時帶上這部分低頻信息會多花費大量的時間,因此,僅需要學習高分辨率圖像和低分辨率圖像之間的高頻部分信息的殘差即可。殘差網絡結構(residual network)特別適合用來解決超分辨率問題,VDSR是最直接明顯的學習殘差的結構,其網絡結構如下圖所示:
VDSR將插值后得到的變成目標尺寸的低分辨率圖像作為網絡的輸入,再將這個圖像與網絡學到的殘差相加得到最終的網絡的輸出。VDSR主要有4點貢獻:
1.加深了網絡結構(20層),使得越深的網絡層擁有更大的感受野,VDSR選取3×3的卷積核,深度為D的網絡擁有(2D+1)×(2D+1)的感受野。
2.采用殘差學習,殘差圖像比較稀疏,大部分值都為0或者比較小,因此收斂速度快。VDSR還應用了自適應梯度裁剪(Adjustable Gradient Clipping),將梯度限制在某一范圍內,也能夠加快收斂過程。
3.VDSR在每次卷積前都對圖像進行補0操作(padding),這樣保證了所有的特征圖和最終的輸出圖像在尺寸上都保持一致,解決了圖像通過逐步卷積會越來越小的問題。VDSR實驗證明補0操作對邊界像素的預測結果也能夠得到提升。
4.VDSR將不同倍數的圖像混合在一起訓練,這樣訓練出來的一個模型就可以解決不同倍數的超分辨率問題。
2016年RED采用了由對稱的卷積層-反卷積層構成的網絡結構,作為一個編碼-解碼框架可以學習由低質圖像到原始圖像端到端的映射,網絡結構如下圖所示:
RED網絡的結構是對稱的,每個卷積層都有對應的反卷積層。卷積層用來獲取圖像的抽象內容,反卷積層用來放大特征尺寸並且恢復圖像細節。卷積層將輸入圖像尺寸減小后,再通過反卷積層上采樣變大,使得輸入輸出的尺寸一樣。每一組鏡像對應的卷積層和反卷積層有着跳線連接結構,將兩部分具有同樣尺寸的特征(要輸入卷積層的特征和對應的反卷積層輸出的特征)做相加操作(類似ResNet操作)后再輸入到下一個反卷積層。這樣的結構能夠讓反向傳播信號能夠直接傳遞到底層,解決了梯度消失問題,同時能將卷積層的細節傳遞給反卷積層,能夠恢復出更干凈的圖片。網絡中有一條線是將輸入的圖像連接到后面與最后的一層反卷積層的輸出相加,也就是VDSR中用到的方式,因此RED中間的卷積層和反卷積層學習的特征是目標圖像和低質圖像之間的殘差。RED的網絡深度為30層,損失函數用的均方誤差。
2017年SRDenseNet在稠密塊(dense block)中將每一層的特征都輸入給之后的所有層,使所有層的特征都串聯(concatenate)起來,而不是像ResNet那樣直接相加。這樣的結構給整個網絡帶來了減輕梯度消失問題、加強特征傳播、支持特征復用、減少參數數量的優點。一個稠密塊的結構如下圖所示:
SRDenseNet將稠密塊結構應用到了超分辨率問題上,取得了不錯的效果,網絡結構如下圖所示:
SRDenseNet可以划分成四個部分:首先,用一個卷積層學習低層的特征;接着,用多個稠密塊學習高層的特征;然后,通過幾個反卷積層學到上采樣濾波器參數;最后,通過一個卷積層生成高分辨率輸出圖像。
2017年SRGAN(SRResNet)將生成對抗網絡(Generative Adversarial Network, GAN)用在引入到超分辨率問題上。訓練網絡時用均方差作為損失函數,雖然能夠獲得很高的峰值信噪比,但是恢復出來的圖像通常會丟失高頻細節,使人不能有好的視覺感受。SRGAN利用感知損失(perceptual loss)和對抗損失(adversarial loss)來提升恢復出的圖片的真實感。感知損失是利用卷積神經網絡提取出的特征,通過比較生成圖片經過卷積神經網絡后的特征和目標圖片經過卷積神經網絡后的特征的差別,使生成圖片和目標圖片在語義和風格上更加的相似。SRGAN的工作:生成器G通過低分辨率的圖像生成高分辨率圖像,由鑒別器D判斷輸入的圖像是由G生成的,還是數據庫中的原圖像(真圖像)。當G能成功騙過D的時,即可通過這個GAN完成超分辨率。使用用均方誤差優化SRResNet(SRGAN的生成網絡部分),能夠得到具有很高的峰值信噪比的結果。在訓練好的VGG模型的高層特征上計算感知損失來優化SRGAN,並結合SRGAN的判別網絡D,能夠得到峰值信噪比不高但具有逼真視覺效果的輸出結果,SRGAN網絡結構如下圖所示:
在生成網絡部分SRResNet部分G包含多個殘差塊,每個殘差塊中包含兩個3×3的卷積層,卷積層后接批規范化層(batch normalization, BN)和PReLU作為激活函數,兩個2×亞像素卷積層(sub-pixel convolution layers)被用來增大特征尺寸。在判別網絡部分D包含8個卷積層,隨着網絡層數加深,特征個數不斷增加,特征尺寸不斷減小,選取激活函數為LeakyReLU,最終通過兩個全連接層和最終的sigmoid激活函數得到預測為自然圖像的概率。實驗結果表明,采用基於均方誤差的損失函數訓練的SRResNet,得到了結果具有很高的峰值信噪比,但是會丟失一些高頻部分的細節,圖像比較平滑。而SRGAN得到的結果則有更好的視覺效果。
2017年EDSR去除掉了SRResNet多余的模塊,從而可以擴大模型的尺寸來提升結果質量,EDSR的網絡結構如下圖所示:
EDSR在結構上與SRResNet相比,EDSR把批規范化處理(batch normalization, BN)操作給去掉。由於原始的ResNet開始是被提出來解決高層的計算機視覺問題,如分類和檢測,直接把ResNet的結構應用到像超分辨率這樣的低層計算機視覺問題,顯然不是最優的解決方式。由於批規范化層消耗了與它前面的卷積層相同大小的內存,在去掉這一步操作后,相同的計算資源下,EDSR就可以堆疊更多的網絡層或者使每層提取更多的特征,從而得到更好的性能表現。EDSR用L1范數樣式的損失函數來優化網絡模型。在訓練時先訓練低倍數的上采樣模型,接着用訓練低倍數上采樣模型得到的參數來初始化高倍數的上采樣模型,這樣既能夠減少高倍數上采樣模型的訓練時間,同時訓練結果也更好。
來源於網絡