李 誠,張 羽,黃初華
貴州大學 計算機科學與技術(shù)學院,貴陽550025
超分辨率圖像重建(Super Resolution Image Reconstruction,SRIR)[1-2]是近年來計算機視覺和圖像處理領(lǐng)域的一個研究熱點,由于廣泛的應用場景和理論價值,超分辨率圖像重建引起了研究者的廣泛關(guān)注。超分辨率圖像重建本質(zhì)上是如何由一幅或多幅低分辨率(Low Resolution,LR)圖像生成一個具有良好視覺效果和接近真實圖像的高分辨率(High Resolution,HR)圖像的問題。在圖像的實際應用中,為了減輕傳輸或存儲負擔等問題,通常對圖像進行下采樣等降質(zhì)操作,而降質(zhì)操作具有不可逆性,所以該問題是病態(tài)問題。因此從低分辨率圖像重建為高分辨率圖像的關(guān)鍵是找到低分辨率和高分辨率圖像之間的映射關(guān)系。
目前主流的超分辨率重構(gòu)技術(shù)大致分為三類:基于插值[3]、基于重建[4-5]和基于學習[6-8]的方法?;诓逯档姆椒?,例如最近鄰域插值和雙三次插值,該類方法能有效地增強圖像分辨率,但圖像邊緣部分會出現(xiàn)模糊?;谥亟ǖ姆椒ㄖ攸c是恢復圖像丟失的高頻信息,該類方法簡單且工作量低,但無法處理結(jié)構(gòu)比較復雜的圖像。基于學習的方法是近年來的主流方法,該類方法旨在通過對大量數(shù)據(jù)樣本的學習,建立低分辨率圖像和高分辨率圖像之間的映射關(guān)系。其中,基于深度學習[9]的超分辨率重建相比于傳統(tǒng)只能人工提取特征進行相對簡單的函數(shù)擬合的淺層學習,深度學習可以自動學習得到層次化的特征表示,實現(xiàn)更加復雜的非線性函數(shù)模型逼近?;谏疃葘W習的算法性能超越了之前的很多經(jīng)典算法。
Dong等人[10]首次將卷積神經(jīng)網(wǎng)絡(luò)應用于超分辨率重建上,提出基于卷積神經(jīng)網(wǎng)絡(luò)的超分辨率(Super-Resolution Convolutional Neural Network,SRCNN)算法,使用3個卷積層,將圖像特征從低分辨率空間非線性映射到高分辨率空間,重建效果優(yōu)于其他傳統(tǒng)算法。Kim等人[11]加深了卷積層數(shù),提出了一個20層的深度卷積神經(jīng)網(wǎng)絡(luò)模型(Very Deep Convolutional Networks,VDSR),提高了圖像的重建質(zhì)量。Kim等人[12]提出的基于深度循環(huán)神經(jīng)網(wǎng)絡(luò)的圖像超分辨率重建(Deeply-Recursive Convolutional Network,DRCN)和Tai等人[13]提出的基于深度循環(huán)殘差網(wǎng)絡(luò)的圖像超分辨率重建(Deep Recursive Residual Network,DRRN)均在網(wǎng)絡(luò)中加入循環(huán)神經(jīng)網(wǎng)絡(luò),大幅度減少了網(wǎng)絡(luò)參數(shù)。Tong等人[14]提出使用密集跳躍連接實現(xiàn)圖像超分辨率重建(Super-Resolution Dense Skip Connections Network,
SRDenseNet),脫離了加深網(wǎng)絡(luò)層數(shù)和加寬網(wǎng)絡(luò)結(jié)構(gòu)來提升網(wǎng)絡(luò)性能的定式思維,有效地提高了重建質(zhì)量。Zhang等人[15]將殘差塊(Residual Block)和密集塊(Dense Block)整合為殘差密集塊(Residual Dense Block,RDB),提出殘差密集網(wǎng)絡(luò)(Residual Dense Network,RDN),并應用在超分辨率重建上,提高重建質(zhì)量。
隨著近年來生成對抗網(wǎng)絡(luò)(Generative Adversarial Networks,GAN)的出現(xiàn),Ledig等人[16]首次將GAN應用到超分辨率重建上,提出了基于生成對抗網(wǎng)絡(luò)的超分辨率重建(Super-Resolution Generative Adversarial Networks,SRGAN),在將殘差網(wǎng)絡(luò)(Residual Network,ResNet)作為生成器部分的基礎(chǔ)上,增加一個判別器,使用MSE損失函數(shù)和VGG損失函數(shù)來重建逼真的超分辨率圖像,實驗證明,生成對抗網(wǎng)絡(luò)能適用于超分辨率重建。之后,Lim等人[17]提出的增強深度殘差(Enhanced Deep Super-Resolution,EDSR)網(wǎng)絡(luò)在SRGAN的結(jié)構(gòu)基礎(chǔ)上修改了殘差塊的設(shè)計,去除了其中的批歸一化(Batch Normlization,BN)層,實驗證明,去除BN層后可以節(jié)省約40%的GPU內(nèi)存空間。
由于生成對抗網(wǎng)絡(luò)在超分辨率重建領(lǐng)域的優(yōu)勢,本文基于生成對抗網(wǎng)絡(luò)框架,提出基于殘差密集網(wǎng)絡(luò)的生成對抗網(wǎng)絡(luò)的圖像超分辨率重建算法。在SRCNN基礎(chǔ)上添加判別器網(wǎng)絡(luò),擴展成生成對抗網(wǎng)絡(luò)框架,并分別架構(gòu)生成器網(wǎng)絡(luò)和判別器網(wǎng)絡(luò):使用殘差密集網(wǎng)絡(luò)作為生成對抗網(wǎng)絡(luò)的生成器網(wǎng)絡(luò),將殘差塊替換為殘差密集塊,加深網(wǎng)絡(luò)深度以及提高特征信息的利用率;使用PatchGAN作為判別器網(wǎng)絡(luò)部分,解決訓練不穩(wěn)定和收斂慢的問題。
GAN是Goodfellow等人[18-19]在2014年提出的一種生成式模型。其思想受博弈論中的二人零和博弈(即二人的利益之和為零,一方的所得正是另一方的所失)的啟發(fā),由一個生成器和一個判別器構(gòu)成。生成器捕捉真實數(shù)據(jù)樣本的潛在分布,并生成新的數(shù)據(jù)樣本;判別器是一個二分類器,判別輸入的是真實數(shù)據(jù)還是生成數(shù)據(jù)。生成器和判別器均可采用深度神經(jīng)網(wǎng)絡(luò)模型實現(xiàn)。GAN發(fā)展至今,其家族在不斷擴大,常用的模型有DCGAN(Deep Convolutional Generative Adversarial Networks)[20]、WGAN(Wasserstein GAN)[21]、PatchGAN[22]等。目前GAN已經(jīng)在圖像處理、計算機視覺、語音識別等方面得到了應用。相較于其他方法,加入GAN算法的模型能充分利用圖像信息,因此模型的準確率均有提高。
Dong等人[10]提出了基于卷積神經(jīng)網(wǎng)絡(luò)的超分辨率算法,將深度學習應用到圖像超分辨率重建中,這是首次將卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)應用到超分辨率重建領(lǐng)域。
SRCNN直接學習高低分辨率圖像之間的端對端映射。映射表現(xiàn)為一個深度卷積神經(jīng)網(wǎng)絡(luò),輸入的是低分辨率圖像,輸出的是高分辨率圖像。SRCNN網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。SRCNN不像傳統(tǒng)的稀疏表示的圖像超分辨率重建分開處理每個部件,它共同優(yōu)化了所有的層,有很好的重建質(zhì)量,在實際應用中也取得了很好的效果。
SRCNN從總體上大致由特征提取和表示、非線性映射、重建三部分組成,每層負責特定的任務(wù)。
圖1 SRCNN網(wǎng)絡(luò)架構(gòu)
圖像塊提取和表示:該操作從低分辨率圖像中提取多個特征塊,并將每個特征塊表示為高維度向量,這些向量構(gòu)成第一層的特征圖。
非線性映射:該操作是非線性地將來自第一層的每個高維向量映射到另一個高維向量上。每個映射向量都是一個高分辨率圖像塊的表示,這些映射向量構(gòu)成了第二層的特征圖。
重構(gòu):該操作集合了上一層的高分辨率圖像塊,來生成最終的高分辨率圖像。
圖像超分辨率重建通常是通過提取低分辨率圖像的細節(jié)信息、重建等步驟得到相應的高分辨率圖像,在特征信息的利用上存在著利用率不高的問題。本文通過增加一個判別器網(wǎng)絡(luò),將原本基于卷積網(wǎng)絡(luò)框架拓展成基于生成對抗網(wǎng)絡(luò)框架,用生成對抗網(wǎng)絡(luò)來約束圖片。其中生成器網(wǎng)絡(luò)部分使用RDB提高特征信息利用率,提高生成圖像質(zhì)量。判別器網(wǎng)絡(luò)部分使用PatchGAN來提高收斂速度和提高重建圖像質(zhì)量。本文網(wǎng)絡(luò)框架如圖2所示。
本文主要在網(wǎng)絡(luò)架構(gòu)和特征利用方面對SRCNN進行改進,與SRCNN和SRGAN結(jié)構(gòu)相比,本文有以下特點:
(1)使用殘差網(wǎng)絡(luò)和密集網(wǎng)絡(luò)結(jié)合后的殘差密集網(wǎng)絡(luò)來替代SRCNN中特征提取和表示、非線性映射、重建三部分,使用殘差網(wǎng)絡(luò)增加網(wǎng)絡(luò)的深度,使用密集網(wǎng)絡(luò)提高對圖像特征信息的利用,最終提高重建圖像的質(zhì)量。
(2)使用PatchGAN替換GAN的原始判別器網(wǎng)絡(luò)部分,與SRGAN的判別器網(wǎng)絡(luò)部分相比,PatchGAN輸出的是一個N×N的矩陣。本算法在原本SRGAN可以提高重建圖像質(zhì)量的基礎(chǔ)上,將輸入圖像以圖像塊的形式進行處理,可以減少參數(shù)量和運算量,以解決收斂慢的問題。
SRCNN算法以及一些基于SRCNN的算法,很多情況都只是通過加深網(wǎng)絡(luò)的深度來提高重建圖像質(zhì)量,這種加深網(wǎng)絡(luò)深度方法雖然可以提高重建圖像的質(zhì)量,但每層的特征信息無法被重復利用,導致特征利用率低,重建圖像質(zhì)量不高。本文算法使用將殘差網(wǎng)絡(luò)和密集網(wǎng)絡(luò)結(jié)合在一起的殘差密集網(wǎng)絡(luò)構(gòu)成生成器網(wǎng)絡(luò),在使用殘差網(wǎng)絡(luò)加深網(wǎng)絡(luò)深度的基礎(chǔ)上,使用密集網(wǎng)絡(luò),通過RDB將所有具有相同特征映射大小的特征圖連接起來,每層的輸入都附加了前面所有層的輸出,通過從前面層到后續(xù)層的短路徑不僅可以緩解梯度消失問題,而且增強了特征傳播,促進了特征再利用,保留了前向傳播的特性。這種卷積層和激活層的輸出附加到后面卷積層的輸入的方法,使得網(wǎng)絡(luò)具有連續(xù)記憶的功能,每層的狀態(tài)得以連續(xù)傳遞,將每層的特征信息重復利用,解決SRCNN中特征信息利用率低的問題。
圖2 本文網(wǎng)絡(luò)架構(gòu)
生成器網(wǎng)絡(luò)架構(gòu)使用RDB構(gòu)建,主要由輸入、特征提取、殘差密集塊、特征融合、全局殘差學習(Global Residual Learning,GRL)、重建和輸出組成。每層詳細介紹如下:
(1)特征提取層:使用3×3卷積核的卷積層對輸入的低分辨率圖像進行卷積處理,提取特征圖。
(2)RDB層:由RDB組成,結(jié)構(gòu)如圖3所示,使用由卷積層和激活層組成的特征提取單元多次重復串接組成,這樣可以在獲得較深的網(wǎng)絡(luò)層數(shù)的前提下,通過密集連接重復利用前后特征信息。LRL(Local Residual Learning)為局部殘差學習。本文引入EDSR[17]的網(wǎng)絡(luò)架構(gòu)特點刪除殘差網(wǎng)絡(luò)結(jié)構(gòu)中的BN層,因為使用BN層來歸一化特征會使得網(wǎng)絡(luò)參數(shù)大量增加,占用較多內(nèi)存,不利于網(wǎng)絡(luò)收斂,所以生成器網(wǎng)絡(luò)部分刪除BN層,提高收斂速度。
圖3 RDB塊結(jié)構(gòu)
(3)特征融合層:將每個殘差塊輸出的特征圖進行連接,形成密集特征融合。
(4)GRL層:在特征圖進行重建之前,將輸入圖像經(jīng)過底層卷積操作后得到的特征圖再次融合到經(jīng)過殘差塊提取的特征圖中,形成全局殘差學習,這樣做有利于網(wǎng)絡(luò)訓練和梯度保持。
(5)重建模塊:使用反卷積層對特征圖進行擴充處理,反卷積可以加速超分辨率圖像的重建過程,同時獲取的大量LR圖像的紋理信息可以被用于推斷HR圖像的細節(jié)信息。
判別器部分受到Isola等人[22]提出的基于圖像塊的判別器PatchGAN的啟發(fā),設(shè)計6層的卷積神經(jīng)網(wǎng)絡(luò)作為判別器網(wǎng)絡(luò)。該判別器網(wǎng)絡(luò)由卷積層、批歸一化層、激活層和最大池化層交替構(gòu)成,卷積層和最大池化層的步幅均設(shè)置為2,以增大輸出特征的感受野,批歸一化層的使用可以提高判別器網(wǎng)絡(luò)的泛化能力。
GAN一般情況下的網(wǎng)絡(luò)結(jié)構(gòu),在一些人的實驗中已經(jīng)表明對于要求高分辨率、高細節(jié)保持的圖像領(lǐng)域并不適合,與SRGAN的原本判別器網(wǎng)絡(luò)相比,PatchGAN辨別器網(wǎng)絡(luò)對小尺寸的圖像塊進行運算,大大減少了參數(shù)數(shù)量和運算量,緩解了原本GAN網(wǎng)絡(luò)收斂慢的問題。而Isola等通過實驗驗證,當圖像塊的尺寸大于70×70時,生成圖像的效果已經(jīng)十分接近對真實圖像進行判定的結(jié)果。因此,本文算法使用判別器網(wǎng)絡(luò)部分可以提高重建圖像質(zhì)量和解決收斂速度慢的問題。
本文采用均方誤差(Mean Square Error,MSE)損失和對抗損失的加權(quán)和作為訓練生成器網(wǎng)絡(luò)的目標函數(shù),而未使用SRGAN中的VGG損失?;谙袼氐腗SE損失用于保留圖像的低頻部分,對抗損失用于恢復圖像的高頻信息。損失函數(shù)表達式如下:
LG=LMSE+αLA
其中,LG是生成網(wǎng)絡(luò)的總體損失,LMSE為MSE損失,LA為對抗損失,α為加權(quán)系數(shù)權(quán)重。
3.4.1 MSE損失
為獲得高質(zhì)量的重建圖像,算法采用MSE損失計算生成圖像與目標圖像對應像素的歐幾里德距離。MSE更接近人的視覺感知,對數(shù)值差異較大的異常像素點更加敏感,但難以捕捉圖像感知上的區(qū)別,因此將MSE作為目標函數(shù)的網(wǎng)絡(luò)模型生成的圖像趨于平滑。而像素是數(shù)字圖像的最小單位,減小像素間的差距能夠更加快速、有效地保證圖像信息的準確性,因此MSE損失雖然會丟失圖像的一部分高頻信息,但能夠很好地恢復圖像的低頻內(nèi)容。
MSE損失函數(shù)表達式如下:
式中,IHi代表高分辨率圖像,ILi代表低分辨率圖像,G(x,θ)代表生成網(wǎng)絡(luò)學習低分辨率圖像和高分辨率圖像之間的映射函數(shù)。
3.4.2 對抗損失
基于生成網(wǎng)絡(luò)和對抗網(wǎng)絡(luò)的對抗機制,參照SRGAN網(wǎng)絡(luò)的對抗損失函數(shù),設(shè)定對抗損失的表達式如下:
其中,D(G(ILi,θ))為判別器網(wǎng)絡(luò)判定生成圖像為真實圖像的概率。
本文方法基于PyTorch框架進行實驗,實驗的硬件參數(shù)如下:IntelCorei7-4790K 4.00 GHz,NVIDIA GTX1060 6 GB。采用NTIRE2017中提供的DIV2K訓練集,該訓練集由1 000幅RGB圖像組成,其中訓練集包含800幅圖像,驗證集和測試集各100幅圖像,所有圖像至少在垂直或水平上包含2 040像素。訓練部分不采用原本SRCNN的優(yōu)化,而使用Adam算法進行優(yōu)化,總迭代次數(shù)為100次,初始學習率設(shè)置為10-4,隨迭代進行,微調(diào)學習率,損失函數(shù)的參數(shù)α經(jīng)交叉驗證設(shè)為0.1。
為驗證本文的超分辨率重建算法性能,實驗選用通用的基準測試集Set5、Set14、BSD100進行測試,并將測試結(jié)果與Bicubic[23]、SRCNN[10]、VDSR[11]、DRCN[12]、SRGAN[16]等算法在主觀效果和客觀指標兩方面進行對比。為了保證客觀準確的對比,所有網(wǎng)絡(luò)模型均在放大因子為4的比例下進行實驗測試,由于測試平臺配置不同,所得測試結(jié)果可能與原文獻數(shù)據(jù)略有不同。
4.2.1 主觀效果
為保證對比效果,從Set5和Set14數(shù)據(jù)集中各選取一張圖片,在放大4倍的情況下,比較各個算法的實際重建情況。不同算法在Set5和Set14上的重建效果圖如圖4和圖5所示。
圖4 Set5數(shù)據(jù)集上重建效果
圖5 Set14數(shù)據(jù)集上重建效果
圖4表示的是在Set5測試集上,放大因子為4時,本文提出的超分辨率重建算法和其他算法的對比結(jié)果。Set5測試集中嬰兒的圖像在放大細節(jié)后可以觀察到,本文提出的算法重建圖像質(zhì)量更好,細節(jié)部分紋理更加清晰。圖5表示的是在Set14測試集上,放大因子為4時。本文提出的超分辨率重建算法和其他算法的對比結(jié)果。通過Set14測試集中狒狒圖像在邊緣處放大后的細節(jié)可以看出,本文重建算法的紋理與Bicubic、SRCNN、VDSR等算法重建的圖像對比,本文算法重建后更加清晰。
4.2.2 客觀效果
本文采用目前圖像處理中常用的兩個檢測指標:峰值信噪比(Peak Signal to Noise Ratio,PSNR)和結(jié)構(gòu)相似性(Structural Similarity,SSIM)作為客觀評價指標,從而更準確地表明本文算法相較其他算法的優(yōu)越性。PSNR反映兩幅圖像對應像素點間的誤差,其值越高表明輸出圖像失真越少,圖像重建質(zhì)量越好。SSIM是表示兩幅圖像相似度的評價指標,其值越接近于1代表輸出圖像越接近于原始高分辨率圖像,即重建效果越好。
在放大因子為4的情況下,僅對本文算法的生成器網(wǎng)絡(luò)部分進行性能測試,在基準數(shù)據(jù)集Set5、Set14、BSD100下測試其平均PSNR值(dB)和測試時間(s),如表1所示。
表1 各數(shù)據(jù)集上生成器網(wǎng)絡(luò)測試結(jié)果
在放大因子為4時,在基準數(shù)據(jù)集Set5、Set14、BSD100下與Bicubic[23]、SRCNN[10]、VDSR[11]、DRCN[12]、SRGAN[16]算法對比PSNR和SSIM值如表2和表3所示??梢钥闯?,本文方法在Set5、Set14和BSD100上PSNR的效果要普遍優(yōu)于比較算法,比較算法的PSNR值比最高的SRResNet算法分別高0.34 dB、0.28 dB和0.10 dB,除了在Set14上的SSIM值要比SRResNets低0.033以外,SSIM值在Set5和BSD100上要高0.003 4和0.003 1,因此可以證明本文算法要優(yōu)于其他算法。
表2 標準數(shù)據(jù)集Set5、Set14和BSD100上PSNR值對比dB
表3 標準數(shù)據(jù)集Set5、Set14和BSD100上SSIM值對比
本文針對圖像超分辨率重建中特征信息利用率低的問題,結(jié)合生成對抗網(wǎng)絡(luò)和卷積網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu),提出了基于殘差密集生成對抗網(wǎng)絡(luò)的圖像超分辨率重建算法,通過將SRCNN擴展為生成對抗網(wǎng)絡(luò)框架,構(gòu)建網(wǎng)絡(luò)的生成器和判別器部分,定義損失函數(shù)。本文提出的算法可以較好地增強特征傳播,促進特征再利用,提高特征利用率。通過實驗部分的主觀效果和客觀數(shù)據(jù)對比,可以看出本文算法能夠較全面地提取低分辨率圖像特征,較好地提高對特征信息的重復利用率,較充分地恢復圖像的紋理信息,在加速模型收斂的同時,進一步提升圖像重建質(zhì)量。未來研究工作主要是對特定的領(lǐng)域或特定的場景圖像進行超分辨率重建,以及將基于深度學習的方法與傳統(tǒng)方法相結(jié)合實現(xiàn)更優(yōu)的超分辨率重建算法。