李學相, 曹 淇, 劉成明
(鄭州大學 軟件學院,河南 鄭州 450002)
將低分辨率(low resolution, LR)圖像經(jīng)過一系列變換得到高分辨率(high resolution,HR)圖像的任務稱為圖像超分辨率[1]。圖像超分辨率作為比較基礎的視覺問題,越來越受到計算機視覺界的廣泛關注,并且在軍事、醫(yī)學、安全等領域擁有廣闊的應用前景[2]。
基于深度學習的超分辨率(super resolution,SR)任務是近年來研究的熱門問題。Dong等[3]提出的基于3層卷積的端到端的模型SRCNN是圖像超分辨率在深度學習方面的開篇之作,為此后各種基于深度學習的工作指明了方向。為了提升SR的性能,各種深度學習的模型被提出。隨著網(wǎng)絡的加深,超分辨率在PSNR(峰值信噪比)和SSIM(結構相似性)指標[4]方面取得了不錯的成果,但所得到的圖像缺乏高頻紋理細節(jié),在視覺質量方面達不到滿意的效果。針對此問題,Ledig等[5]提出利用殘差塊建立的基礎模型SRGAN,構建了基于生成對抗網(wǎng)絡(generative adversarial network,GAN)超分辨率重建的經(jīng)典模型,在圖像感知質量方面取得了較好的效果。
但是,SRGAN在其結果方面展現(xiàn)了極度的不穩(wěn)定性,部分圖像出現(xiàn)偽影現(xiàn)象[6-7],其結果在PSNR與SSIM方面產生了較大偏差,如圖1所示。在真實場景中,SRGAN表現(xiàn)出了極高的不適應性,包括噪聲以及下采樣未知等問題。同時,在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡工作中,通常使用最大化池或平均池和全連接層來獲取一階統(tǒng)計量,而二階統(tǒng)計量被認為是比一階統(tǒng)計量更好的區(qū)域描述符[8]。
圖1 SRGAN生成的圖像對比圖Figure 1 Image comparison graph generated by SRGAN
基于以上問題,提出一種改進的生成對抗網(wǎng)絡模型(image super-resolution based on no match generative adversarial network,NM-SRGAN),其中NM代表無配對輸入,SRGAN代表基于生成對抗網(wǎng)絡的超分辨率重建。首先,該模型取消了BN層的使用,解決了偽影的問題,并提升了結果的穩(wěn)定性。之后考慮到現(xiàn)實生活中高分辨圖像不一定容易獲得以及現(xiàn)實中下采樣未知及噪聲等問題,受到循環(huán)生成對抗網(wǎng)絡(cycle-gan)的啟發(fā),使用cycle-gan作為預處理模塊置于網(wǎng)絡的前端,改善了圖像超分辨率在現(xiàn)實世界的適應性問題并達到無配對輸入的目的[9]。最后通過在感知損失中增加二階特征損失及修改VGG損失,使輸出的圖像細節(jié)部分改善更加明顯?;谝陨细倪M,該模型獲得了更強的穩(wěn)定性以及更高的圖像質量。
循環(huán)生成對抗網(wǎng)絡(cycle-gan)的出現(xiàn)解決了在視覺問題(例如超分辨率領域)上難以找到匹配的高質量圖片的問題,因為很多模型訓練時都依賴匹配的圖像。cycle-gan旨在學習數(shù)據(jù)域之間的風格變換,從而減少對匹配數(shù)據(jù)的依賴性[10]。cycle-gan在圖像超分辨率、風格變換、圖像增強等方面具有較強的適應性。
協(xié)方差矩陣作為二階統(tǒng)計量,被認為比一階統(tǒng)計量能更好地捕捉圖像的區(qū)域特征。給定一組特征,可以使用協(xié)方差矩陣來統(tǒng)計輸出圖像的二階信息[11],協(xié)方差矩陣可以表示為
(1)
新的生成對抗網(wǎng)絡模型如圖2所示。預處理模塊在圖2的Pretreatment框架內,預處理部分共包括生成器G1和G2與鑒別器D 3個部分,具體結構如圖3所示。圖2、3中Conv代表卷積層,BasicBlock代表模塊中的基本塊,括號內的數(shù)字代表濾波器的數(shù)量。對于圖3中的生成器G1與G2,在頭部與尾部各使用3層3×3的卷積層,在中間使用6個基本塊,基本塊的結構與圖2中生成器的基本塊的結構相同,步長始終為1。鑒別器D設置了5層卷積層,隨著網(wǎng)絡的加深特征個數(shù)不斷增加。在圖2中,Real代表無噪的LR圖像,Sample代表G1生成的圖像。給定一個輸入圖像x,G1的作用是學習并生成與Real相似的圖像Sample,來騙過鑒別器D,鑒別器D則負責將實際樣本Real與生成樣本Sample區(qū)分開來,因為訓練過程中輸入圖像x與Real并不是配對的數(shù)據(jù)集,所以使用G2來保證輸入x與輸出Sample的一致性。基于G1、G2與D的作用,整個預處理模塊也就達到了無配對訓練和生成更好的LR輸入圖像的目的。然后將預處理部分的結果輸入到主生成對抗網(wǎng)絡中。圖2中包含整個生成器結構和主鑒別器結構。在主生成對抗網(wǎng)絡部分,最前端有1層3×3的卷積層,卷積層之后包含16個基本塊。在SR任務中,去除BN層已經(jīng)被證明可以提升性能并減少計算復雜度[6-7],因此取消了基本塊中BN層的使用。每個基本塊中包含2層3×3的卷積及1層激活函數(shù)層,在基本塊之后包含2個增加特征尺寸的反卷積層及1層卷積層。主生成網(wǎng)絡將預處理模塊輸入的LR圖像生成超分辨率圖像。在主鑒別網(wǎng)絡部分有8層卷積層,與生成網(wǎng)絡中的基本塊不同,該模型沒有刪除鑒別器中的BN層,因為鑒別器網(wǎng)絡中的BN層并不會影響最終性能。主鑒別器網(wǎng)絡的基本塊中包含1層卷積層、1層BN層和1層激活函數(shù)層,最后使用2層全連接層與1層Sigmoid函數(shù)來獲得樣本分類的概率[5],并通過損失函數(shù)來優(yōu)化網(wǎng)絡參數(shù)。
圖2 生成器與鑒別器結構圖Figure 2 Generator and discriminator structure diagram
整個生成對抗網(wǎng)絡的訓練過程中,生成器與鑒別器發(fā)生持續(xù)的博弈,直至生成網(wǎng)絡可以騙過鑒別器[12],模型收斂,得到想要的超分辨率圖像。
2.2.1 循環(huán)網(wǎng)絡損失
通過學習cycle-gan來設置損失函數(shù)。cycle-gan的損失分為普通生成網(wǎng)絡損失、循環(huán)一致性損失以及容易忽略的identity損失[10]。通過G1來生成樣本,用來生成一個更好的LR圖像,通過D用來區(qū)分G1生成的樣本與真實樣本,普通GAN的損失為
(2)
式中:S表示訓練的樣本數(shù);x表示輸入。
為了保證輸入x與輸出y的一致性設計了一個循環(huán)一致性損失,循環(huán)一致性損失為
圖3 預處理模塊中的生成器網(wǎng)絡與鑒別器網(wǎng)絡結構圖Figure 3 Structure of the generating network and discriminating network in the preprocessing module
(3)
identity損失可以使生成的圖像更加穩(wěn)定,如果不加該損失,可能會使圖像的整體顏色發(fā)生改變,identity損失為
(4)
因此,單循環(huán)網(wǎng)絡總損失為
ltotal=lGAN+w1lcycle+w2lid。
(5)
式中:w1和w2為不同損失的權重。
2.2.2 感知損失
在本小節(jié)中,對原感知損失主要做出了2點改進:①增加了二階損失函數(shù);②修改了原有的VGG損失。
將協(xié)方差矩陣應用于圖像的流程如圖4所示。首先將卷積網(wǎng)絡最后輸出的特征圖(三維矩陣)扁平化為二維矩陣,設X∈Rw×h×c為經(jīng)過幾個卷積層得到的輸出,其中w為寬度,h為高度,c為通道數(shù)。X通過扁平化得到X0∈RD×c,其中D=w×h,如果f1,f2,…,fn∈Rd是X0的列,那就可以通過式(1)計算協(xié)方差矩陣。這樣得到的協(xié)方差矩陣通常位于對稱正定(SPD)矩陣的黎曼流形上。但是直接扁平化會導致幾何信息的缺失,如果使用標準方法采用對數(shù)運算平化黎曼流形結構,會導致得到的協(xié)方差矩陣過大,因此需要在保持幾何結構的同時進行降維。
圖4 圖像扁平化流程圖Figure 4 Flowchart of image flattening
通過學習文獻[13]中的算法設計了特殊降維層,如圖5所示。圖5中BiRe為Bimap與ReEig的合體。其中Bimap為雙線性映射層,雙線性映射層可以解決在降維的過程中保持幾何結構的問題。k次雙線性映射可以表示為
(6)
式中:Xk-1為SPD矩陣;Wk∈Rdk×dk-1為權矩陣;Xk∈Rdk×dk為輸出矩陣。
圖5 降維流程圖Figure 5 Dimension reduction flowchart
ReEig層為特征修正層,像Relu層一樣被用于引入非線性,k次ReEig層可以定義為
(7)
最后的LogEig層為對數(shù)特征層,用于賦予黎曼流形中的元素一個李群結構,使矩陣能夠扁平化,并可以應用于標準的歐式運算[12]。第k層應用的對數(shù)特征層可以被定義為
(8)
將HR圖像及超分辨率圖像經(jīng)過以上流程扁平化及降維之后得出的協(xié)方差矩陣分別設為CHR和CSR,,則二階損失函數(shù)為
(9)
式中:N為矩陣內元素個數(shù)。
(10)
式中:Wi,j與Hi,j表示各個特征圖的尺寸;Φi,j表示在VGG網(wǎng)絡中第i個最大化層之前通過第j個卷積獲得的特征映射。
感知損失中的MSE損失與對抗損失一致,沒有變化,因此不過多介紹。基于以上流程得出二階損失及修改的VGG損失,則總感知損失為
(11)
使用NTIRE 2018 Super-Resolution Challenge中的DIV2K作為訓練數(shù)據(jù)集。DIV2K的每種降采樣數(shù)據(jù)集都包含800張訓練圖片,100張驗證圖片以及100張測試圖片。本文使用了其中的未知下采樣的數(shù)據(jù)集進行訓練,該數(shù)據(jù)集具有隨機的模糊內核及像素偏移量。將LR數(shù)據(jù)集中的前一半作為輸入圖像,同時將HR數(shù)據(jù)集中的后一半設置為需要的HR圖像并進行下采樣,得到無噪的LR圖像。訓練過程并不依賴成對的數(shù)據(jù)集,實驗在4倍比例因子下進行,同時采用數(shù)據(jù)集中100張照片進行驗證。
訓練共分為2步:第1步將輸入的HR圖像通過cycle-gan作預處理得到1個比雙三次Bicubic算法更好的LR圖像;第2步對得到的LR圖像做提升分辨率的工作。實驗使用 Anaconda3搭建的python3.7的環(huán)境,基于Pytorch來構建模型,并使用GeForce RTX 2080Ti(×4)GPU進行訓練。
在第1步中,將式(5)中的w1與w2分別設置為10與5,使用Adam 優(yōu)化器,其中β1=0.9,β2=0.999,學習率初始設置為2×10-4,batchsize設置為16,隨著迭代次數(shù)的增加,逐步減少學習率與batchsize,直至函數(shù)收斂。在第2步中將第1步中獲得的更好的LR圖片作為輸入,輸入到修改后的生成對抗模型進行訓練以獲得SR圖像,將學習率設置為10-4,學習率的其他參數(shù)與第1步一樣,并設置學習率的衰減,batchsize設置為16,迭代次數(shù)為2 000次。
對第1步的結果進行定量研究,并與雙三次Bicubic方法進行比較,結果表明,NM-SRGAN模型的預處理方法可以無配對訓練并獲得一個更好的輸入的LR圖像,如圖6、表1所示。將實驗結果與深度學習方法SRCNN、VDSR、DRCN及SRGAN等在目前公開的數(shù)據(jù)集Set5、Set14、BSD100、Urban100[15]上進行測試,通過PSNR與SSIM值的比較,如表2所示,該模型在4個數(shù)據(jù)集上均有提升,較其他模型的最佳PSNR,分別提升了0.19 dB、0.03 dB、0.13 dB、0.02 dB。最后通過結果圖的部分截取對比發(fā)現(xiàn),該模型的結果可以獲得更高質量的細節(jié)(如對比圖1帽子的毛線、對比圖2蝴蝶翅膀上的紋理),如圖7、8所示。
圖6 預處理方法對比圖Figure 6 Comparison diagram of preprocessing methods
表1 預處理方法評估表Table 1 Preprocessing method evaluation sheet
表2 不同模型重建圖像評估表Table 2 Evaluation table of images reconstructed by different models
圖7 在不同數(shù)據(jù)集下的圖像截取對比圖1Figure 7 Comparison 1 of image captures in different data sets
圖8 在不同數(shù)據(jù)集下的圖像截取對比圖2Figure 8 Comparison 2 of image captures in different data sets
本文在對SRGAN的算法及模型進行學習之后對SRGAN模型進行改進。通過添加預處理模塊達到無配對訓練的目的并獲得一個更好的輸入圖像,同時通過刪除BN層來穩(wěn)定訓練結果。此外,還重新設置了感知損失函數(shù),來更好地恢復圖像細節(jié)。通過以上改進提出了一個全新的NM-SRGAN模型,將結果在公開數(shù)據(jù)集上與經(jīng)典方法進行比較,并用客觀評價標準PSNR及SSIM進行評價與比較,結果顯示,該模型在4個標準數(shù)據(jù)集上的評價值均有較好提升,且圖像細節(jié)部分重建良好。但是該模型計算略顯復雜,下一步將對網(wǎng)絡進行簡化以提升訓練速度。