陳宗航,胡海龍,姚劍敏,2*,嚴 群,2,林志賢
(1.福州大學(xué) 物理與信息工程學(xué)院,福建 福州350108;2.晉江市博感電子科技有限公司,福建 晉江362200)
生活中許多領(lǐng)域都對圖像的分辨率有著較高的要求,如安防、醫(yī)療、航天、刑偵等,而圖像超分辨率(Super Resolution,SR)重建技術(shù)也漸漸成為近年來研究的熱門話題。圖像超分辨率技術(shù)于1984年首次被提出[1],其指的是通過某種方法將低分辨率的圖像重建為高分辨率的圖像,它是圖像處理和計算機視覺領(lǐng)域的重要研究方向。圖像超分辨率方法主要有基于差值的方法、基于重建的方法和基于學(xué)習(xí)的方法[2]?;诓钪档姆椒ㄊ抢媚硞€像素點周圍的像素值以及其中相對的位置關(guān)系,依據(jù)數(shù)學(xué)方法來進行評估,主要有最近鄰插值法[3]和雙三次插值法[4]?;谥亟ǖ姆椒ㄖ饕抢米匀活A(yù)想的先驗知識(如平滑性),常見的方法有凸集投影[5]以及最大后驗概率法[6]?;趯W(xué)習(xí)的方法主要有傳統(tǒng)的機器學(xué)習(xí)方法和近年來被廣泛應(yīng)用的深度學(xué)習(xí)的方法?;跈C器學(xué)習(xí)的方法一般是結(jié)合矩陣變換的相關(guān)方法來學(xué)習(xí)其中復(fù)雜的映射關(guān)系,需要人為地提取特征進行學(xué)習(xí)。與傳統(tǒng)方法相比,基于深度學(xué)習(xí)的超分辨率重建不需要手動進行特征提取,而是經(jīng)過神經(jīng)網(wǎng)絡(luò)自動地提取復(fù)雜豐富的特征,然后學(xué)習(xí)兩幅圖片之間的映射關(guān)系,且通過深度學(xué)習(xí)方法還原的高分辨率圖像具有更豐富的紋理信息和更清晰的視覺感知。
Dong等人提出了SRCNN(Super-Resolution using Convolutional Neural Network)[7],其是深度學(xué)習(xí)應(yīng)用在超分辨率領(lǐng)域的開山之作,對圖像超分辨率的重建效果和速度取得了重大突破。而后VDSR[8]、LapSRN[9-10]等又在SRCNN的基礎(chǔ)上做出了許多改進,極大地推動了圖像超分辨率技術(shù)的發(fā)展。之后Ledig等人[11]將生成對抗網(wǎng)絡(luò)[12](Generative Adversarial Networks,GAN)應(yīng)用在圖像超分辨率重建中,提出了SRGAN算法,使得圖像在重建后擁有更多的高頻細節(jié),感受野更好,但是其中GAN網(wǎng)絡(luò)的訓(xùn)練不穩(wěn)定,訓(xùn)練時間也較長。本文設(shè)計了不同于SRGAN的生成對抗網(wǎng)絡(luò),且在損失函數(shù)中使用了與MSE[13]不同的SmcothL1損失并引入了Earth-Mover距離[14]的思想來穩(wěn)定網(wǎng)絡(luò)的訓(xùn)練,實驗證明圖像評價指標PSNR和SSIM都有提升。
生成對抗網(wǎng)絡(luò)是由Goodfellow提出的一種基于生成模型的網(wǎng)絡(luò)。其靈感來自于零和博弈論中的納什均衡[15]。GAN網(wǎng)絡(luò)的訓(xùn)練目標就是生成網(wǎng)絡(luò)G強大到可以混淆判別網(wǎng)絡(luò)D的同時,判別網(wǎng)絡(luò)D又能很好地分辨出生成網(wǎng)絡(luò)G生成的圖像和原始圖像,GAN的目標函數(shù)可以表示為:
minmaxV(D,G)=Ex~Pdata(x)[lgD(x)]+
EZ~P(Z)[lg(1-D(G(Z))],
(1)
其中:Pdata(x)表示真實樣本的分布,而P(z)表示生成網(wǎng)絡(luò)的分布。判別函數(shù)D希望真實數(shù)據(jù)的D(x)概率更大,D(G(z))更小,對于D來說希望這個目標函數(shù)的值更大,生成網(wǎng)絡(luò)函數(shù)G則希望G(z)更接近x,使得D(G(z))更大,這時目標函數(shù)的值就會更小。這也體現(xiàn)了GAN網(wǎng)絡(luò)中的G網(wǎng)絡(luò)和D網(wǎng)絡(luò)一種對抗的特點。SRGAN的訓(xùn)練流程如圖1所示。
圖1 SRGAN訓(xùn)練流程Fig.1 Training process of SRGAN
首先,對原始的高分辨率圖像HR進行某種方法的預(yù)處理以獲得低分辨率圖像LR;后將低分辨率圖像送入生成網(wǎng)絡(luò)G中,得到生成高分辨率圖像SR;再將SR和原始高分辨率圖像HR組成一個圖像對送入判別網(wǎng)絡(luò)D中。判別網(wǎng)絡(luò)的輸出實際上是一個判斷圖片是HR還是SR的二分類問題。在獲得判別結(jié)果的誤差后,調(diào)整模型的參數(shù),以使模型能夠在學(xué)習(xí)過程中自動更新參數(shù)信息。
SRGAN中使用的生成網(wǎng)絡(luò)為ResNet[16],這是一種殘差網(wǎng)絡(luò),而DenseNet[17]提出了一個密集型的連接模型,具體來說就是每一層除了會接受上一層的輸出作為輸入還會接受之前所有層的輸出作為輸入。其簡易原理圖如圖2所示。
圖2 DenseNet簡易原理圖Fig.2 Simple schematic diagram of DenseNet
DenseNet每個層都會與之前所有層channel維度上相連接,并作為下一層的輸入。當(dāng)一個DenseNet網(wǎng)絡(luò)有L層時,DenseNet總共會包含L(L+1)/2個連接,且DenseNet是直接合并來自不同層的特征圖,這可以更好地實現(xiàn)特征復(fù)用,提升網(wǎng)絡(luò)的訓(xùn)練效率。
2.2.1 子像素卷積
子像素卷積[18](Sub-pixel convolution)是一種較為特別的圖像和特征圖的放大方法,其又可以稱作像素清洗(Pixel shuffle)。以往的DenseNet使用較多的上采樣方法為逆卷積,但是逆卷積往往會摻雜過多的人工因素,而子像素卷積的過程是需要學(xué)習(xí)的,相比于逆卷積,這種通過樣本學(xué)習(xí)的方式得到放大圖像或者特征圖所需參數(shù)的方法其放大性能更為準確。子像素卷積模塊如圖3所示。
圖3 子像素卷積模塊Fig.3 Module of sub-pixel convolution
2.2.2 生成網(wǎng)絡(luò)模型
本文采用了8×8的密集連接模塊,輸入圖像需要經(jīng)過一個4倍的下采樣過程。EDSR[19]中提出BN層(批規(guī)范化層)[20]用于解決較高層的計算機視覺問題,而BN層并不適合應(yīng)用在圖像超分辨率這類低層的計算機視覺問題中。如果將BN層加入到生成網(wǎng)絡(luò)中,其會消耗與它之前的卷積層相同的計算資源,且并不會對重建出的圖像質(zhì)量有所幫助。因此本文的DenseNet網(wǎng)絡(luò)與以往不同的是去除了冗余的BN層,之后在相同的硬件條件下,就可以在模型中加入更多的網(wǎng)絡(luò)層或者增加各層提取的特征來提高模型性能。生成網(wǎng)絡(luò)的整體的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。其中k代表卷積核個數(shù),n代表通道數(shù),s代表步長。將高分辨率圖像HR通過一定方法生成低分辨率圖像LR之后,LR和HR組成一個圖像對送入網(wǎng)絡(luò)訓(xùn)練。首先經(jīng)過一個卷積模塊,用于提取低水平特征,該卷積模塊由一個卷積層和一個Relu[21]激活函數(shù)構(gòu)成;之后進入密連接模塊,其中有8個密連接塊(DenseBlock),每個密連接塊中有8個密連接層,每個密連接層也采用了一個卷積層加一個Relu激活函數(shù)的結(jié)構(gòu)。其中各個塊和層均采用了上文提到的DenseNet結(jié)構(gòu),即各個塊和層除了接受上一個塊和層的輸出還會接受之前每一個塊和層的輸出。通過兩個子像素卷積塊進行放大生成高分辨率圖像。
圖4 生成網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.4 Structure diagram of generator
2.2.3 判別網(wǎng)絡(luò)模型
在判別網(wǎng)絡(luò)中,保留了BN層以用于穩(wěn)定訓(xùn)練。由于本文引入了Earth-Mover距離的思想,因此判別網(wǎng)絡(luò)的任務(wù)從判斷生成圖片和原始圖片的二分類任務(wù)變?yōu)榱藬M合任務(wù),所以在最后一層不使用sigmoid層,以保證損失的收斂。判別網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。在判別網(wǎng)絡(luò)中,采用8個卷積核大小為3×3的卷積模塊進行特征提取。s1代表步長為1,n代表輸出通道數(shù)。隨著卷積層數(shù)的不斷加深,特征個數(shù)在第3,5,7層時加倍,使用了LeakyRelu激活函數(shù),在第2至第8個層加入了BN穩(wěn)定網(wǎng)絡(luò)的訓(xùn)練,最后通過一個全連接層輸出一個一維的張量。
圖5 判別網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.5 Structure diagram of discriminator
在SRGAN中,其損失函數(shù)為:
(2)
式(2)中第一項代表了內(nèi)容損失,可以表示為:
(3)
式(3)的第一項是原始高清圖像HR和生成網(wǎng)絡(luò)生成的圖像的像素之間的損失,公式如下
(4)
而由于單純地使用MSE易使得圖像過于平滑,缺乏高頻細節(jié),所以SRGAN提出了基于VGG19網(wǎng)絡(luò)提取特征的損失,公式如下
(5)
式(5)表示用VGG19對原始高清圖HR和重建出的圖像SR分別進行計算,得到兩幅圖的特征圖,之后再對其計算MSE值,式中H和W分別代表圖片的寬和長,φi,j表示通過截取VGG19網(wǎng)絡(luò)的第i層最大池化和第j層卷積層后的特征圖。
式(2)的第二項指的是低分辨率圖像通過生成網(wǎng)絡(luò)生成高分辨率SR圖像后再經(jīng)過判別網(wǎng)絡(luò)得出的值與真實值的交叉熵。
由于MSE損失函數(shù)容易放大最大誤差和最小誤差之間的差距,且對異常點較為敏感。本文采用SmoothL1損失來指導(dǎo)訓(xùn)練的過程。得到的感知損失為:
(6)
由于GAN網(wǎng)絡(luò)訓(xùn)練不穩(wěn)定,不易通過觀察損失來了解訓(xùn)練過程的好壞,且Matin[22]等人通過研究GAN的原理解釋了GAN訓(xùn)練過程不穩(wěn)定的原因。主要是由于等價優(yōu)化的距離衡量JS散度不合理導(dǎo)致,因此本文引入Earth-Mover(EM)距離進行優(yōu)化。本文模型的EM距離定義為:
L=Ex~Pg[DθD(IHR)]-Ex~Pr[DθD(ILR)],
(7)
生成網(wǎng)絡(luò)的目標就轉(zhuǎn)變?yōu)楸M可能最小化EM距離。
實驗硬件資源為i5-6500處理器搭配一塊GTX 1060 6G 加速計算。軟件環(huán)境有cuda10.1配合顯卡加速,pytorch1.4.0用于網(wǎng)絡(luò)搭建和損失函數(shù)的定義,用python3.6.10進行編程。實驗的訓(xùn)練集來自公開數(shù)據(jù)集COCO2014中隨機選取的5000張圖片,測試集采用SET5、SET14、BSD100基準測試集,用與生成效果圖和對比評價指標。為驗證本文模型的圖像超分辨率效果,實驗選取了經(jīng)典的傳統(tǒng)方法雙三次插值(Bicubic)以及3種深度學(xué)習(xí)的方法SRCNN、VDSR、SRGAN進行實驗對比。
本文實驗采用峰值信噪比(PSNR)與結(jié)構(gòu)相似性(SSIM)[23]兩項客觀評價指標進行對比。PSNR的定義為:
(8)
本文計算PSNR的方法是先將圖片轉(zhuǎn)化為YCbCr格式,然后只對Y分量進行PSNR計算。
SSIM針對SR和HR兩張圖片進行計算,其公式為:
(9)
本文首先對模型的生成網(wǎng)絡(luò)進行預(yù)先訓(xùn)練,之后才開始訓(xùn)練整個網(wǎng)絡(luò)。訓(xùn)練過程中通過tensorboard觀察網(wǎng)絡(luò)訓(xùn)練穩(wěn)定性和訓(xùn)練的程度。圖6所示(橫坐標為迭代輪數(shù),縱坐標為損失值)為原始GAN訓(xùn)練過程的判別損失圖,其損失值此起彼伏是因為判別網(wǎng)絡(luò)和生成網(wǎng)絡(luò)正在進行對抗,所以很難通過觀察損失來判定訓(xùn)練過程的好壞,GAN的訓(xùn)練相當(dāng)不穩(wěn)定。
圖6 原始GAN判別損失Fig.6 D_loss of original GAN
圖7所示為本文模型訓(xùn)練過程的損失變化??梢钥闯鲭S著訓(xùn)練的進程,損失逐漸趨于某一值開始收斂,這也符合了Earth-Mover距離的思想。
圖7 本文模型判別損失Fig.7 Ours d_loss
本次實驗通過PIL庫對低分辨率圖像進行雙三次差值重建,并且重建了SRCNN、VDSR、SRGAN模型進行了實驗對比,實驗結(jié)果如圖8所示,分別展示了每個模型在測試集中的重建效果。其中圖8(a)是通過雙三次差值重建的高分辨率圖像,圖8(b)是通過SRCNN模型重建的高分辨率圖像,圖8(c)是通過VDSR模型重建的高分辨率圖像,圖8(d)是通過SRGAN模型重建的高分辨率圖像,圖8(e)是通過本文模型重建的高分辨率圖像;圖8(f)是原始高分辨率圖像。
圖8 重建圖像Fig.8 Reconstructed images
可以看出通過雙三次差值重建出的圖像特征明顯模糊,而SRGAN和本文的模型重建的圖像不僅較為清晰且擁有許多的紋理細節(jié)。為了進一步比較各模型重建圖像的效果,圖9展示了放大圖像某一部分后的圖像對比。
圖9 細節(jié)對比圖Fig.9 Detail comparison
從圖(9)中可以看出本文的模型重建出的圖像細節(jié)更加清晰,色彩亮度更加接近原始圖像。
接著我們使用PSNR和SSIM兩個圖像評價指標對各算法的重建效果進行評估,從而更準確嚴謹?shù)乇容^各個算法間的優(yōu)劣。PSNR越高代表重建出的圖像質(zhì)量越好,失真越少。SSIM值越接近1代表生成的圖像結(jié)構(gòu)越接近于原始圖像,原圖的SSIM值為1。本文采用的放大倍數(shù)為4倍,使用skimage工具包進行PSNR和SSIM的計算。表1和表2是各算法在各測試集上的平均PSNR和SSIM對比。從圖像指標中可以看出傳統(tǒng)的雙三次差值方法的圖像重建質(zhì)量落后于深度學(xué)習(xí)方法,并且通過計算3個測試集指標的平均值,本文方法的PSNR高出SRGAN約2.02 dB,SSIM約高出0.042(5.6%)。
表1 在測試集SET5、SET14和BSD100上的PSNR對比Tab.1 Comparison of PSNR on test sets SET5,SET14 and BSD100
表2 在測試集SET5、SET14和BSD100上的SSIM對比Tab.2 Comparison of SSIM on test sets SET5,SET14 and BSD100
續(xù) 表
通過損失函數(shù)、重建圖像以及評價指標的對比,本文方法的網(wǎng)絡(luò)訓(xùn)練的穩(wěn)定性要優(yōu)于SRGAN,且重建出的圖像質(zhì)量要優(yōu)于其他算法。
本文提出了一種基于DenseNet的生成對抗網(wǎng)絡(luò)來進行圖像超分辨率重建。與以往不同的是,本文將子像素卷積模塊加入DenseNet的網(wǎng)絡(luò)中,并且移除了冗余的BN層,提高了特征復(fù)用率的同時加快了模型訓(xùn)練的效率。本文引入了Earth-Mover距離,重新設(shè)計了損失函數(shù),使得判別網(wǎng)絡(luò)的任務(wù)由二分類任務(wù)轉(zhuǎn)變?yōu)閿M合任務(wù)。在損失函數(shù)中改用了SmoothL1來計算VGG提取的特征圖,以防止MSE損失放大最大誤差和最小誤差之間的差距。最后通過實驗驗證,本文提出的方法在SET5、SET14以及BSD100三個基準測試集上的圖像質(zhì)量明顯好于其他方法,且對比同樣基于生成對抗網(wǎng)絡(luò)的SRGAN,平均PSNR高出約2.02 dB,SSIM高出約0.042(5.6%)。