陳蔚瑞, 侯培國(guó)
(燕山大學(xué) 電氣工程學(xué)院,河北 秦皇島 066004)
圖像超分辨率重建技術(shù),是采用特定的算法將低分辨率圖像恢復(fù)成相應(yīng)高分辨率圖像。由于超分辨率重建技術(shù)可以增加圖像分辨率,因此在相關(guān)領(lǐng)域都有廣泛的應(yīng)用。
傳統(tǒng)的超分辨率重建算法一般分為3種:①基于插值的算法[1];②基于退化模型的算法[2];③基于學(xué)習(xí)的算法[3]?;趯W(xué)習(xí)的算法是利用了大量的訓(xùn)練數(shù)據(jù),在其中學(xué)習(xí)低分辨率圖像(LR)和高分辨率圖像(HR)的某種對(duì)應(yīng)關(guān)系,并通過(guò)這種對(duì)應(yīng)關(guān)系預(yù)測(cè)低分辨率圖像對(duì)應(yīng)的高分辨率圖像。由于深度學(xué)習(xí)的不斷發(fā)展,基于學(xué)習(xí)的算法已成為目前研究的熱點(diǎn)[4,5]。
2014年Dong C等[6]將卷積神經(jīng)網(wǎng)絡(luò)首次運(yùn)用于圖像超分辨重建技術(shù),提出了超分辨率卷積神經(jīng)網(wǎng)絡(luò)(super-resolution convolutional neural network,SRCNN)網(wǎng)絡(luò)。SRCNN網(wǎng)絡(luò)由3個(gè)卷積層構(gòu)成,得到了當(dāng)時(shí)在圖像超分辨率重建技術(shù)中最佳的效果。2016年Dong C等[7]提出了加速超分辨率卷積神經(jīng)網(wǎng)絡(luò)(fast super-resolution convolutional neural networks,FSRCNN),將反卷積層應(yīng)用到模型中放大圖片的尺寸,反卷積層的使用不需要在網(wǎng)絡(luò)外部進(jìn)行圖像放大尺寸的操作,與SRCNN相比FSRCNN的速度有較大提升;同年,又提出了亞像素卷積神經(jīng)網(wǎng)絡(luò)(efficient sub-pixel convlutional neural network,ESPCN)亞像素卷積層的概念[8],在超分辨率重建過(guò)程中,其速度和性能都得到了提升。增加網(wǎng)絡(luò)的深度能夠提升模型的性能,使得網(wǎng)絡(luò)能夠從輸入圖像中學(xué)習(xí)到更多的信息,但是直接堆疊網(wǎng)絡(luò),會(huì)使網(wǎng)絡(luò)難以收斂,從而導(dǎo)致網(wǎng)絡(luò)退化甚至出現(xiàn)梯度消失等問(wèn)題。殘差網(wǎng)絡(luò)(residual network,ResNet)[9]是2015年He K M等提出的,能夠很好地解決上述存在的問(wèn)題,近年來(lái)被應(yīng)用在超分辨率重建算法中。加深的超分辨率(very deep super-resolution,VDSR)、增強(qiáng)的深度超分辨率(enhanced deep super-resolution,EDSR)[10]、深度注意力超分辨率(deep attentive super-resolution,DASR)[11]以及超分辨率生成對(duì)抗網(wǎng)絡(luò)(super-resolution generative adversarial network,SRGAN)[12]等均采用了殘差學(xué)習(xí)的方法,除了殘差學(xué)習(xí)之外,密集連接[13]、注意力機(jī)制[14]、遞歸學(xué)習(xí)[15]等方法也被應(yīng)用在超分辨重建過(guò)程中,網(wǎng)絡(luò)層的深度不斷加深,重建性能也在不斷提高。
激活函數(shù)能夠解決卷積神經(jīng)網(wǎng)絡(luò)在非線性上的問(wèn)題[16],非線性的激活函數(shù)有Sigmoid函數(shù)、tanh函數(shù)、Relu函數(shù)、ELU函數(shù)等,由于Relu函數(shù)能夠克服梯度消失的問(wèn)題并且能夠加快訓(xùn)練速度,所以在超分辨率重建算法中經(jīng)常使用。但是若輸入為負(fù)值,則輸出為0即完全不激活,會(huì)造成部分神經(jīng)元的失活,導(dǎo)致缺失部分信息。
針對(duì)Relu激活函數(shù)在算法中存在的一些問(wèn)題,本文設(shè)計(jì)了一種基于Relu激活函數(shù)FSRCNN補(bǔ)充模塊的圖像超分辨率重建算法。
超分辨率是將低分辨率圖像恢復(fù)成相應(yīng)的高分辨率圖像,設(shè)高分辨率圖像為Iy,則相應(yīng)低分辨率圖像Ix的退化過(guò)程如下:
Ix=D(Iy,σ)
(1)
式中:D表示退化映射函數(shù);σ表示模型中的參數(shù)。
低分辨率圖像重建高分辨率圖像的數(shù)學(xué)原理為
(2)
超分辨率的學(xué)習(xí)目標(biāo):
(3)
式中:L為損失函數(shù);λ為權(quán)衡參數(shù);φ(θ)為正則項(xiàng)。
超分辨率重建技術(shù)常用于參考圖片質(zhì)量的評(píng)價(jià)指標(biāo)一般為兩種,一種是峰值信噪比PSNR[17],一種是結(jié)構(gòu)相似性SSIM[18]。
峰值信噪比一般以dB作為單位,數(shù)值越大表明圖像質(zhì)量越好。峰值信噪比公式如下:
(4)
式中:MAX表示的是圖像中像素值中的最大值;MSE是重建圖像SR和原高清圖像HR的均方誤差;單通道圖像的MSE表示為
(5)
多通道圖像的MSE表示為
(6)
式中:C代表通道數(shù);H、W分別代表圖像的高度和寬度;X(i,j)和Y(i,j)分別代表重建圖像對(duì)應(yīng)的像素點(diǎn)和原高清圖像對(duì)應(yīng)的像素點(diǎn)。
結(jié)構(gòu)相似性是衡量重建圖像和原高清圖像相似度的指標(biāo),結(jié)構(gòu)相似性SSIM的值越大表示重建圖像失真越小。
(7)
(8)
(9)
(10)
(11)
式中:μX和μY分別表示重構(gòu)圖像和原高清圖像的均值;σX和σY分別表示重構(gòu)圖像和原高清圖像的方差;σXY表示重構(gòu)圖像和原高清圖像的協(xié)方差。
亮度相似函數(shù):
(12)
對(duì)比度相似函數(shù):
(13)
結(jié)構(gòu)相似函數(shù):
(14)
SSIM分別從亮度、對(duì)比度、結(jié)構(gòu)這3個(gè)方面度量圖像相似性。
SSIM(X,Y)=l(X,Y)×c(X,Y)×s(X,Y)
(15)
式中:C1,C2,C3為常數(shù)。
補(bǔ)充模塊是基于ReLU激活函數(shù)在神經(jīng)網(wǎng)絡(luò)中會(huì)造成部分神經(jīng)元失活而提出的一種方法。ReLU函數(shù)表達(dá)式為
ReLU=max(0,x)
(16)
圖1 ReLU函數(shù)圖像Fig.1 ReLU function image
從ReLU函數(shù)圖像可以看出,當(dāng)x<0時(shí),y值全部取0,在超分辨率重建算法中會(huì)導(dǎo)致部分特征的損失。本文提出的補(bǔ)充模塊是由與ReLU函數(shù)作用相反的rReLU函數(shù)和卷積層構(gòu)成,其中rReLU函數(shù)表達(dá)式為
rReLU=min(0,x)
(17)
反向rReLU函數(shù)如圖2所示,是對(duì)輸入的負(fù)值輸出原本的數(shù)值,在輸入為正值時(shí)輸出直接置0。rReLU函數(shù)的作用是在算法中對(duì)經(jīng)過(guò)卷積層的數(shù)據(jù)進(jìn)行負(fù)值提取。
圖2 rReLU函數(shù)圖像Fig.2 rReLU function image
補(bǔ)充模塊的作用是將通過(guò)ReLU激活函數(shù)置0的負(fù)值信息重新加入到模型中。模塊中rReLU函數(shù)負(fù)責(zé)提取上一層卷積結(jié)果的負(fù)值信息,提取的負(fù)值信息作為輸入傳入到補(bǔ)充模塊卷積層,其中補(bǔ)充模塊中的卷積層已進(jìn)行了降維操作,降低了運(yùn)算量,提升了模型運(yùn)行性能。
在補(bǔ)充模塊結(jié)構(gòu)圖中,設(shè)輸入為X,第1層卷積層操作可以表示為
F(X)=W1*X+Bi
(18)
通過(guò)rReLU激活函數(shù)的操作是
r(X)=min(0,F(X))
(19)
第2層卷積層表示為
S(X)=W2*r(X)+B2
(20)
式中:W代表濾波器;B代表積;*代表卷積操作。
補(bǔ)充模塊結(jié)構(gòu)如圖3所示:
圖3 補(bǔ)充模塊結(jié)構(gòu)圖Fig.3 Supplementary Module Structure Diagram
FSRCNN模型主要特點(diǎn)是將輸入的低分辨率圖像不經(jīng)過(guò)上采樣操作直接作為輸入圖像,在經(jīng)過(guò)一系列卷積操作后,利用反卷積層完成上采樣操作,最后得到重建圖像.
圖4為FSRCNN模型示意圖。
圖4 FSRCNN模型示意圖Fig.4 Schematic diagram of the FSRCNN model
圖4可分為以下5個(gè)部分:
第1個(gè)部分是特征提取層,作用是從輸入圖像中提取特征,輸入圖像是沒(méi)有經(jīng)過(guò)上采樣操作的原始圖像,卷積核大小為5×5,輸出通道數(shù)設(shè)為56; 第2個(gè)部分是收縮層,收縮層采用1×1卷積核進(jìn)行降維操作,可以減少網(wǎng)絡(luò)參數(shù)量,提高網(wǎng)絡(luò)運(yùn)行速率,輸出通道為1; 第3個(gè)部分是映射層,映射層是為了對(duì)特征映射再一次進(jìn)行非線性映射處理,其中卷積核大小為3×3,在這個(gè)過(guò)程中輸出通道與輸入通道保持一致; 第4個(gè)部分是擴(kuò)展層,擴(kuò)展層擴(kuò)充維度,保持與收縮層一致,與收縮層作用相反,輸出通道為56; 最后第5個(gè)部分是反卷積層,進(jìn)行上采樣操作,卷積核大小是9×9,得到重構(gòu)圖像。FSRCNN模型5個(gè)部分中前4個(gè)部分都為卷積層。
模型中選用MSE作為損失函數(shù),Adam優(yōu)化器更新參數(shù),其中優(yōu)化目標(biāo)L(θ)為
(21)
公式中:n是訓(xùn)練樣本的數(shù)目;Xi是高分辨率圖像;Yi是低分辨率圖像;θ是網(wǎng)絡(luò)參數(shù);F(Yi;θ)是重建圖像;模型中的所有參數(shù)都采用反向傳播及隨機(jī)梯度下降的方法來(lái)進(jìn)行優(yōu)化,L(θ)優(yōu)化目標(biāo)的結(jié)果要求最小。
FSRCNN模型原采用PReLU函數(shù)作為激活函數(shù),PReLU函數(shù)如下:
(22)
式中:參數(shù)a一般為0到1之間隨機(jī)抽取的值,并且通常相對(duì)較小。
在負(fù)值域,PReLU的斜率較小,同樣可以避免神經(jīng)元失活的問(wèn)題。但是由于負(fù)值域斜率與正值不同,導(dǎo)致部分特征信息的比例不一致,從而影響超分辨率重建的效果。
基于FSRCNN補(bǔ)充模塊的結(jié)構(gòu)如圖5所示。
圖5 結(jié)構(gòu)圖Fig.5 Structure diagram
基于補(bǔ)充模塊的超分辨率算法是對(duì)ReLU激活函數(shù)在模型中存在的問(wèn)題進(jìn)行改進(jìn),所以對(duì)于加入補(bǔ)充模塊的網(wǎng)絡(luò)模型中激活函數(shù)選擇ReLU函數(shù)。從圖中可以看出模型中卷積層的結(jié)果作為輸入通過(guò)補(bǔ)充模塊后得到具有一通道的特征向量,之后將特征向量重新加入到模型中再進(jìn)行下一步卷積操作。而在超分辨率重建方法中,很少會(huì)出現(xiàn)過(guò)擬合的現(xiàn)象,將補(bǔ)充模塊加入到超分辨率模型中并未出現(xiàn)過(guò)擬合的問(wèn)題。
本文以DIV2K作為訓(xùn)練數(shù)據(jù)集,Set5、Set14、Urban100作為測(cè)試數(shù)據(jù)集,使用Pytorch深度學(xué)習(xí)框架完成實(shí)驗(yàn)。
訓(xùn)練前對(duì)圖像進(jìn)行預(yù)處理,將圖像分割成56×56的圖像塊,步長(zhǎng)設(shè)置為56,訓(xùn)練過(guò)程中初始學(xué)習(xí)率設(shè)置為0.001,每50輪迭代后學(xué)習(xí)率衰減,衰減指數(shù)設(shè)置為0.5。PSNR和SSIM作為評(píng)價(jià)指標(biāo)來(lái)評(píng)估算法性能。超分辨率重建效果對(duì)比如表1所示。
表1 超分辨率重建效果對(duì)比Tab.1 Comparison of super-resolution reconstruction effects
表1中SM是加入補(bǔ)充模塊的FSRCNN算法,PReLU是以PReLU作為激活函數(shù)的FSRCNN算法,ReLU是以ReLU作為激活函數(shù)的FSRCNN算法。
從表1結(jié)果可以看出,在相同訓(xùn)練條件下,基于補(bǔ)充模塊的FSRCNN算法客觀指標(biāo)得到的數(shù)值均高于僅使用激活函數(shù)ReLU或者PReLU的FSRCNN算法,而且隨著圖片放大倍數(shù)的增大,加入補(bǔ)充模塊的FSRCNN算法呈現(xiàn)的效果越好。
圖像重建效果對(duì)比如圖6所示,圖6中左邊是Set14數(shù)據(jù)集中的一幅圖片,右邊的(a)、(b)、(c)、(d)、(e)小圖分別為原高清圖像、經(jīng)過(guò)雙三次下采樣的圖像、采用ReLU函數(shù)作為激活函數(shù)的FSRCNN重建圖像、采用PReLU函數(shù)作為激活函數(shù)的FSRCNN重建圖像和加入了補(bǔ)充模塊后的FSRCNN重建圖像。
圖6 圖像重建效果對(duì)比Fig.6 Comparison of image reconstruction effects
本文提出一種基于FSRCNN補(bǔ)充模塊的超分辨率重建算法。其中補(bǔ)充模塊是將算法訓(xùn)練過(guò)程中通過(guò)卷積層但無(wú)法通過(guò)ReLU激活函數(shù)的特征值,經(jīng)過(guò)rReLU函數(shù)和卷積操作再次加入到算法中進(jìn)行下一步卷積運(yùn)算的過(guò)程。在此過(guò)程中rReLU提取當(dāng)前卷積層的負(fù)值信息作為卷積輸入特征,補(bǔ)充模塊中的卷積部分是將輸入特征轉(zhuǎn)換為一通道的輸出特征,該輸出特征與通過(guò)ReLU激活函數(shù)的輸出特征相連。
ReLU激活函數(shù)在超分辨率重建過(guò)程中,根據(jù)表1結(jié)果的對(duì)比,可以看出其導(dǎo)致的部分神經(jīng)元失活問(wèn)題會(huì)對(duì)超分辨率重建性能有一定的影響。而本文提出的補(bǔ)充模塊加入到算法中,從測(cè)試結(jié)果上表明,補(bǔ)充模塊能夠解決神經(jīng)元失活問(wèn)題,并且可以進(jìn)一步加強(qiáng)算法對(duì)信息的提取,提升算法的性能。