么天舜 馬曉軒
(北京建筑大學電氣與信息工程學院 北京 100044)(建筑大數據智能處理方法研究北京市重點實驗室 北京 100044)
單圖超分辨率重建技術(Single Image Super-Resolution,SISR)指將一幅低分辨率的圖像通過相關算法重建出對應的高分辨率圖像,廣泛用于視頻監控[1]、衛星圖像[2]、醫學成像[3]等領域。圖像超分辨率重構是計算機視覺領域重要的研究工作[4]。超分辨率技術中常用的方法分為基于插值[5]、基于重建、基于學習[6]三種。基于插值的方法主要有雙線性插值、雙三次插值等,此類方法主要依靠圖像的原始信息,計算簡單但生成的圖像高頻信息不足、質量不高。基于重建的方法主要有迭代反投影法、凸集投影法和最大后驗概率估計法。此類方法將圖像退化后重構,雖然與插值方法相比提高了計算的復雜度,但受限于先驗信息,對于復雜圖像重建的效果不理想。基于學習的方法是目前超分辨率中的主要解決方法。隨著深度學習的發展,以神經網絡模型為基礎的算法應用到了超分辨率問題上,通過復雜的網絡結構學習低分辨率和高分辨率圖像的深層映射關系,取得了較好的效果。
近年來,基于深度學習的方法解決超分辨率問題已具有一定的發展。Dong等[7]提出的SRCNN(Super-Resolution Conventional Neural Network)方法首次利用神經網絡解決超分辨率問題。SRCNN僅使用三個卷積層對圖像進行特征提取、映射后生成高分辨率圖像,在當時重建的效果優于傳統方法。在He等[8]提出的殘差網絡解決了在深度網絡結構下訓練困難的問題之后,Kim等[9]提出VDSR使用殘差學習并加深網絡結構,與SRCNN相比提高了生成圖片的質量。Ledig等[10]提出SRGAN網絡,該方法首次使用生成對抗網絡[11](Generative Adversarial Networks,GAN)思想構建網絡結構,并提出了新的損失函數解決生成的圖像在放大倍數較大時紋理細節較少問題。但由于引入生成對抗網絡,目前也存在著網絡訓練不穩定,生成網絡和判別網絡在訓練中不平衡導致的梯度消失和多樣性不足等問題。Wang等[12]提出的ESRGAN中以SRGAN網絡結構為基礎,通過刪除網絡中批規范化層以及使用密集殘差塊等方法,減少了生成圖像的偽影現象使圖像更加逼真。Zhang等[13]提出密集殘差塊對SRGAN中殘差塊進行修改,利用圖像的所有分層特征進行學習提高重建效果。Lim等[14]提出的EDSR去掉了SRResNet多余的模塊并相應擴大模型規模,達到重建圖像效果的提升。
為了進一步提高重建后圖像的質量,恢復更多的紋理細節并提升網絡的穩定性,本文設計一種生成對抗網絡下改進的單圖超分辨率重建算法。以生成對抗網絡結構為基礎,首先對生成網絡中的殘差塊進行修改,使用多尺度下的卷積層對圖像的特征進行學習,前移激活函數移到權重層之前形成預激活并使用GELU作為激活函數構成新的殘差塊,提高網絡的泛化能力從而生成更加真實的圖像;然后利用Wasserstein距離對網絡中的對抗損失函數進行修改,增強網絡訓練的穩定性;其次引入Huber損失函數作為內容損失;最后減少判別網絡中的批規范化層從而優化網絡結構。
本文以生成對抗網絡為基礎結構構建單圖超分辨率重建算法,網絡模型總體結構包括生成器網絡和判別器網絡,其中生成器網絡以低分辨率的圖像作為輸入,通過神經網絡生成高分辨率圖像去擬合原始的高分辨率圖像;判別器網絡以生成的圖像和原始的圖像為輸入盡可能將兩者區分出來。兩個網絡分別以損失函數為優化目標訓練生成器和判別器,經過一定的迭代次數最終優化網絡。本文通過對生成網絡中的殘差塊結構、激活函數、損失函數、判別器網絡結構進行修改,使模型訓練更穩定的同時提高模型的生成能力,從而改進圖像重建后的質量。
本文中生成網絡以一幅低分辨率的圖像為輸入,先經過一個由16個殘差塊組成的殘差網絡學習圖像的特征,然后再經過兩個放大比例為2的亞像素卷積層對圖像進行放大,最終生成高分辨率的圖像。
通常來說,網絡深度的增加可以學習到圖像更深層次的特征從而提升網絡的性能,但同時會帶來梯度消失和網絡退化等問題,利用殘差網絡可以緩解這些問題。為進一步解決這一問題,本文對殘差塊進行修改,首先采用更多尺度的卷積層對圖像特征進行學習,提高模型精度。然后將激活函數前移至權重層之前形成預激活,在通過加法合并的殘差網絡結構中,預激活能夠使網絡更容易進行優化工作,從而緩解深度網絡中的過擬合現象提高網絡的泛化能力。最后在激活函數上使用高斯誤差線性單元GELU激活函數代替深度學習中一般使用的ReLU(Rectified Linear Unit)等激活函數。
本文設計的殘差網絡由16個殘差塊相連組成,其中殘差塊結構如圖1所示。使用兩種維度下的卷積提取不同尺度的特征,每個通道由兩個預激活層(GELU)和兩個卷積層組成對圖像特征進行學習。

圖1 本文殘差塊結構
除了改進殘差網絡以外,本文在生成器網絡中移除了所有批歸一化(Batch Normalization,BN)層。雖然BN層能夠在一定程度上緩解過擬合問題,但是也使生成后的圖像出現偽影現象,為了提高重建圖像的質量,本文在生成網絡中均不使用BN層。生成網絡結構如圖2所示,生成網絡卷積層參數設置如表1所示。

圖2 生成網絡結構

表1 生成網絡卷積層參數設置
激活函數為神經網絡引入非線性特性,ReLU是神經網絡中常用的激活函數,其定義如下:

(1)
由式(1)可以看出,當輸入x≤0時輸出為0,這將會導致部分參數無法更新。本文引入Hendrycks等[15]提出的GELU激活函數以解決這一問題,GELU激活函數定義如下:
GELU(x)=xP(X≤x)=xΦ(x)
(2)
式中:X~N(0,1)是標準正態分布。為了方便計算,將式(2)近似為式(3)。
(3)
ReLU與GELU函數圖像如圖3所示。

(a) ReLU (b) GELU圖3 激活函數圖像
由圖3和式(3)看出,GELU激活函數具有非凸、非單調性的特點,在正域內是非線性的,并且在所有點處均有曲率。與ReLU不同,當輸入為負數時GELU不是將輸出簡單置0而是仍有相應的輸出達到激活作用。并且GELU在激活中引入隨機正則的思想,對輸入x乘以一個依賴于整體輸入分布的數值,保持了輸入x的隨機性以及對輸入的依賴性。
GELU將非線性與依賴輸入數據分布的隨機正則化結合在一起,提高了模型的泛化能力,這是ReLU所不具備的。Hendrycks等[15]證明了GELU優于ReLU等激活函數。
判別網絡主要由連續的卷積層組成,分別以生成器生成的高分辨率圖像和原始真實的高分辨率圖像為輸入,在8個卷積層之后通過一個全連接層降低維度以便損失函數的計算。在SRGAN中,判別網絡最后通過Sigmoid激活函數解決二分類問題。本文由于使用Wasserstein距離增強網絡訓練的穩定性,在判別器網絡中去除原始SRGAN中最后的Sigmoid激活并減少BN層以優化網絡結構。判別網絡結構如圖4所示,判別網絡卷積層參數設置如表2所示。

圖4 判別網絡結構

表2 判別網絡卷積層參數設置

(4)

(5)

2.3.1內容損失
本文使用Huber Loss函數而不是MSE損失函數作為內容損失。MSE(Mean Squared Error)屬于L2型損失函數,由于函數計算樣本目標值與預測值之間誤差的平方,當兩者差距較大時誤差會被放大從而受到更大的懲罰,使得模型對異常值比較敏感,紋理細節等高頻信息不能被恢復出來,最終生成的圖像過于平滑和模糊,無法反映模型輸出和真值圖像之間的感知區別。因此本文使用Huber Loss函數作為內容損失函數部分,其結合了L2型MSE與L1型MAE損失函數兩者的優點,以超參數δ為界,不同的預測偏差值對應不同的函數,降低了對離群點的懲罰程度并增強了魯棒性,函數定義如式(6)所示。
(6)
式中:δ=0.75;ILR為原始低分辨率圖像;IHR為原始高分辨率圖像;G(ILR)為生成器生成的高分辨率圖像。
2.3.2感知損失
(7)
式中:H、W為圖像的高度和寬度;Φi,j表示在VGG19網絡中的第i個最大卷積層之前的第j個卷積獲得的特征圖,i=5、j=4。先利用VGG網絡提取特征然后再使用MSE損失計算,從而解決僅使用MSE損失時圖片過渡平滑、紋理細節不高的問題。
2.3.3對抗損失
本文引入Arjovsky等[16]提出的Wasserstein距離(Earth-Mover距離)對對抗損失函數進行修改,主要解決GAN中訓練不穩定的問題。GAN中目標函數見式(8)。
Ex~Pg(x)[log(1-D(G(x)))]
(8)

(9)
C(G)=-log(4)+2JSD(pr‖pg)
(10)
式中:JSD(pr‖pg)表示pr與pg之間的JS散度,當二者分布相同時JS散度等于0;C(G)為最小值,生成器網絡完成優化。但是當pr與pg之間的分布完全沒有重疊或者重疊的部分可以忽略時,它們之間JS散度的數值等于log2,此時梯度為0導致生成器發生梯度消失,使得生成對抗網絡難以訓練。因此引入Wasserstein距離修改對抗損失函數,Wasserstein距離如式(11)所示。
(11)

(12)

L=Ex~Pr[fw(x)]-Ex~Pg[fw(x)]
(13)

(14)
(15)
式中:ILR為原始低分辨率圖像;IHR為原始高分辨率圖像;G(ILR)為生成器生成的高分辨率圖像。
本文實驗設備如下:顯卡為NVIDIA GeForce 2060 super,顯存為8 GB,處理器為Intel Corei5- 8400 2.80 GHz。使用Anaconda軟件配置和管理程序的運行環境,程序主要基于TensorFlow框架。
本文實驗采用DIV2K數據集,此數據集包含1 000幅高清圖片(2K分辨率),其中800幅供訓練使用,剩下200幅為驗證和測試使用,并且提供了與高清圖片對應的低分辨率圖片。實驗使用DIV2K數據集中的800幅圖片進行訓練,測試時使用Set5、Set14、BSD100通用數據集。實驗中,高分辨率圖像的大小為低分辨率圖像的4倍,采用RMSprop優化器進行優化,初始學習率為10-4,rho為0.9,網絡訓練次數為100。受硬件設備所限,batch_size設置為4,其次將訓練數據集中的圖片大小裁剪成256×256×3和64×64×3并進行左右旋轉操作以豐富數據集。在開始訓練前先對生成器進行100次預訓練,這樣在正式訓練時第一次生成的圖像能夠更接近真實的圖像。訓練完成后,在測試集上將本文方法與Bicubic[17]、SRCNN[7]、SRGAN[10]、ESRGAN[12]這些經典算法重建后的圖像進行對比。
本文采用峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)和結構相似性(Structure Similarity Index,SSIM)作為客觀評價指標。峰值信噪比(PSNR)是一種目前常用的評價圖像質量的指標,計算簡單、實現速度快,峰值信噪比數值越高代表圖像失真越少、質量越好,其定義見式(16)。
(16)
式中:MAXI為圖片最大像素值255;I為原始的圖像;K為重建的圖像。
但由于峰值信噪比基于對應像素點間的差值計算,與人類主觀感覺并不完全一致。因此本文也使用結構相似性(SSIM)作為評價指標,SSIM從亮度、對比度、結構這三項對比兩幅圖像的相似性,更符合人眼的真實感知,其數值越大,表示圖像失真越小,質量越好,其定義見式(17)。
(17)

本文在生成器網絡中主要對殘差塊進行了相關優化,為了驗證改進后的效果,將改進后的殘差塊與原始SRGAN中殘差塊進行對比。在相同的訓練集條件下,兩個網絡模型分別使用不同的殘差塊結構、相同的本文中的損失函數進行訓練。訓練完成之后分別在Set5和Set14數據集下進行測試,其結果見表3、表4。

表3 不同殘差塊在Set5上的PSNR/SSIM數值

表4 不同殘差塊在Set14上的PSNR/SSIM數值
可以看出,在Set5數據集上,本文方法與使用改進前殘差塊結構的模型相比,PSNR提高了0.17 dB、SSIM提高了0.003 8;在Set14數據集上,PSNR提高了0.07 dB、SSIM提高了0.002 2。結果表明,本文通過引入GELU激活函數等方法對殘差塊進行優化有一定的提升效果。
本文引入Wasserstein距離改進損失函數,為了驗證其對網絡穩定性的影響,將本文算法與SRGAN算法的判別器損失函數曲線進行對比,結果見圖5、圖6。

圖5 SRGAN判別器Loss曲線

圖6 本文算法判別器Loss曲線
可以看出,SRGAN算法在訓練60輪后判別器Loss數值逐漸趨于平穩,但是仍不穩定、存在波動。而本文算法在訓練20輪之后逐漸開始收斂,訓練60輪后趨于穩定且波動較小。驗證了本文算法通過引入Wasserstein距離對損失函數進行優化,能夠使模型訓練更穩定、收斂速度更快。
本文在內容損失中引入Huber Loss函數,由于函數受其超參數δ影響,超參數數值的設定影響模型的生成能力,因此對δ分別選取不同數值并與原始MSE損失進行比較,在Set5數據集下測試性能,對比結果見圖7、圖8。通過對比發現,對于評價指標PSNR,Huber損失均優于MSE損失。對于評價指標SSIM,當δ為0.5、0.75時,Huber損失優于MSE損失,證明了Huber損失總體表現優于MSE損失。其次當δ=0.75時,PSNR和SSIM數值最大,因此本文選取0.75作為超參數δ的數值。

圖7 不同δ下PSNR數值對比

圖8 不同δ下SSIM數值對比
實驗在Set5、Set14和BSD100數據集上進行測試,高分辨率和低分辨率圖像之間的放大因子為4倍,本文算法同Bicubic、SRCNN、SRGAN、ESRGAN這些經典算法進行對比,分別從Set5、Set14數據集中選擇了一幅圖像進行重建,各個算法重建后的效果如圖9、圖10所示。為了進一步對比圖像重建的效果,本文對相關算法進行PSNR和SSIM客觀數值上的對比。其中PSNR數值的對比見表5,SSIM數值的對比見表6。除了進行客觀數據對比,本文將SRGAN、ESRGAN和本文方法這三種基于生成對抗網絡模型的算法進行訓練時間上的對比,結果見表7。

(a) HR (b) Bicubic(c) SRCNN

(d) SRGAN (e) ESRGAN (f) 本文方法圖9 Set5各個算法重建后的效果

(a) HR (b) Bicubic(c) SRCNN

(d) SRGAN (e) ESRGAN (f) 本文方法圖10 Set14各個算法重建后的效果

表5 相關算法在各數據集上的PSNR數值 單位:dB

表6 相關算法在各數據集上的SSIM數值 單位:dB

表7 網絡訓練的平均時間對比
通過圖9、圖10可以看出,基于學習類方法(SRCNN、SRGAN、ESRGAN、本文方法)重建的圖像質量均高于基于插值(Bicubic)的方法,且基于插值重建的圖像的PSNR和SSIM數值均不如其他算法,說明了在超分辨率問題上基于學習的方法在性能和效果方面優于基于插值的方法,而且基于對抗網絡的算法能夠恢復較為清晰的圖像信息。通過表5、表6可以看出,在測試的數據集Set5、Set14和BSD100中,對于評價指標PSNR,本文方法較SRGAN方法分別提高了0.35 dB、0.38 dB、0.42 dB,對于評價指標SSIM,本文方法較SRGAN方法分別提高了0.005 2、0.003 1、0.003 9。與ESRGAN方法相比,本文方法重建后的圖像在PSNR數值上提高了0.19 dB、0.15 dB、0.15 dB,在SSIM數值上提高了0.002 3、0.001 8、0.001 4。說明了本文算法在一定程度上提高了圖像重建后的質量,能夠生成較為高質量的圖像。通過表7可以看出,本文方法通過對網絡結構進行優化,在平均訓練時間上要少于SRGAN以及ESRGAN的訓練時間,本文方法訓練時迭代一次的時間為0.874 s,與SRGAN相比減少了0.031 s,與ESRGAN相比減少了0.247 s,因此說明了本文方法在訓練時效率更高。
本文主要以生成對抗網絡結構為基礎,首先引入多尺度卷積層以及GELU激活函數對殘差塊進行改進以增強網絡的學習能力,提高生成圖片的質量;其次,引入Wasserstein距離改進對抗損失函數,增強網絡的穩定性;最后減少判別網絡中大量批規范化層從而對網絡結構進行優化,減少模型的冗余部分。實驗采用峰值信噪比(PSNR)和結構相似性(SSIM)作為客觀評價指標,與其他基于學習的經典方法進行主觀視覺效果以及客觀評價指標對比。實驗結果表明與其他經典算法相比,本文算法生成的圖像紋理細節清晰,PSNR及SSIM數值較高,訓練時間更短,說明了本文算法在單圖超分辨率重建中有一定的提升。下一步將深入研究網絡中卷積核的改進,以達到進一步提升圖像重建質量的目的。