柏宇陽 朱福珍 巫 紅
(黑龍江大學電子工程學院 哈爾濱150080)
遙感圖像分辨率是判定遙感圖像質量的重要指標之一,高分辨率的遙感圖像可反映出更多的地面細節信息。圖像超分辨重建(super-resolution reconstruction,SRR)是一種利用單幀或多幀的低分辨率圖像(low resolution,LR)通過專用的算法,在不改變成像硬件設備條件的情況下,生成較清楚的高分辨率圖像(high resolution,HR)的技術,它使重建后的高分辨率圖像的視覺效果遠遠超過參與重建的低分辨率圖像。
圖像超分辨算法總體上可分為基于重構的超分辨[1-5]和基于學習的超分辨[6-13]兩大類。基于學習的超分辨算法相比于基于重構的超分辨算法在視覺效果上更好,因為此方法直接學習了低分辨率圖像與高分辨率圖像之間的映射關系。常見的基于學習的超分辨率算法包括基于樣本的方法、基于鄰域嵌入的方法、基于稀疏表示的方法和基于卷積神經網絡的方法。本文研究的方法屬于使用基于學習超分辨率算法。基于學習的超分辨算法是2002 年Freeman 等人[14]提出的,該算法中高分辨率圖像塊和低分辨率圖像塊的關系可通過機器學習實現,他們將此映射關系應用于馬爾科夫網絡,并利用貝葉斯置信傳播理論來進行超分辨率重建。隨后,在2004年,Chang 等人[15]將局部線性嵌入引入到超分辨率重建方法中,提出一種基于鄰域嵌入的超分辨率重建算法。在2010 年,Yang 等人[16]認為圖像具有稀疏性,因此將稀疏表示應用到圖像超分辨中。
卷積神經網絡在20 世紀80 到90 年代間出現,但在最近幾年中得到了廣泛的應用。卷積神經網絡圖像超分辨的基本思路是通過給定的訓練集,其中包括低分辨率圖像和高分辨率圖像,將低分辨率圖像作為網絡的輸入,網絡的輸出即為高分辨率圖像。卷積神經網絡的圖像超分辨中最具有代表性的是超分辨卷積神經網絡(super-resolution convolutional neural network,SRCNN)算法[17]與快速超分辨卷積神經網絡(accelerating the super-resolution convolutional neural network,FSRCNN)算法[18],其中SRCNN 是基于卷積神經網絡的圖像超分辨的首作,其通過構建3 層卷積層來學習LR-HR 的映射關系。后來人們發現卷積網絡深度越深,網絡可以擬合出的函數越準確,結果也越好。但是隨著網絡越來越深,網絡訓練出現了梯度消失現象,也導致網絡訓練時難收斂的問題。He 等人[19]在2016 年提出了殘差卷積神經網絡(residual network,ResNet)解決了此問題,網絡泛化性能也得到了提升。Kim 等人[20]提出了深度超分辨(very deep super-resolution,VDSR)算法,該算法將殘差網絡用在了圖像超分辨問題上,也解決了超分辨網絡較深時訓練難收斂的問題。最近研究表明,如果卷積網絡包含接近輸入的層和接近輸出的層之間的較短連接,則網絡可以更深入、精確、有效地進行訓練。密集連接網絡[21](densely connected network,DenseNet)就是這樣減輕了梯度消失的問題,也加強了特征的傳遞。其算法與殘差網絡相似,殘差網絡是若干個殘差塊進行級聯,每個殘差塊由若干層組成,每一層的輸出都是由本層特征與前一層特征之和。而DenseNet 是由若干個密集塊級聯,每個密集塊由若干個層組成,但每一層的輸出都是由本層特征與前面所有層的特征之和。由于有更多的短連接,DenseNet 算法的效果也比殘差網絡要好一些。
本文的超分辨網絡針對的是遙感圖像,遙感圖像退化模型如圖1 所示。

圖1 遙感圖像退化模型
地面景物圖像受到大氣影響、遙感成像系統、運動模糊、噪聲等退化因素的綜合作用,形成實際獲取的降質遙感圖像。遙感圖像的退化系統h(x,y) 較復雜,地面景物通過大氣后,形成了大氣退化圖像,再由線性成像系統,通過圖像輻射能分布情況形成退化圖像,其數學模型為

式中,f(x,y) 是高分辨率場景圖像,h(x,y) 是遙感退化系統,n(x,y) 是噪聲,g(x,y) 是實際獲取的遙感圖像,“*”代表卷積運算。
目前的VDSR 和DenseNet 超分辨網絡都選用了91-images 或291-images 常規自然景物的彩色圖像作為數據集,這些圖像并不包含任何遙感圖像。遙感圖像的退化系統與常規彩色圖像不同,且遙感圖像包含了大量的土地、林地、濕地等各種的地面,這些圖像的紋理和高頻細節信息等,也與91-images或291-images 彩色圖像存在一些差異,導致現有算法對遙感圖像的超分辨效果一般。本文將訓練測試樣本改為遙感圖像,在VDSR 網絡的基礎上,結合了密集連接網絡,對網絡進行了優化。并在網絡結構、激活函數、學習規則等方面進行了改進,使其客觀參數與主觀視覺上都好于其他的算法。本文算法流程分為訓練集的構造、超分辨模型訓練和測試過程三部分。
由于當網絡結構較深時,網絡層擁有越大的感受野,效果就越好,深層網絡在訓練時較困難,而密集連接網絡在層數較深時也容易收斂,本文算法仍使用密集連接網絡。改進的網絡結構如圖2 所示,網絡中將所有的殘差部分更換為密集部分,同時為了擴展網絡深度構建了兩組密集連接部分,如圖中虛線所示。輸入為低分辨率圖像,通過一個卷積層部分,輸出一個低分辨率特征圖。然后將此特征圖通向了密集部分A,此部分包括了8 個密集塊(A1~A8),再之后連接著瓶頸層A,這個層是將密集部分A中的密集塊A1~A8 的輸出進行特征疊加。

圖2 改進網絡的結構
瓶頸層A的表達式為

式中,bottleneck為瓶頸層A的輸出,block(i) 為密集塊的輸出,Wi為第i塊對應的卷積核,“*”代表卷積運算,f(·) 為激活函數。
之后是密集部分B,也由8 個密集塊組成(B1~B8),再之后再通過瓶頸層B,這個層是將密集部分B中的密集塊B1~B8 的輸出進行特征疊加。疊加后的特征圖通過反卷積層增加圖像尺寸放大圖像,最后經過重建層得到輸出圖像高分辨率圖像,重建層也是一個卷積層。
網絡包含兩組密集部分,分別為密集部分A和密集部分B。每部分都是由8 個密集塊組成,每個密集塊也都含有8 個卷積層,且這8 個卷積層的每個層都與其前面的所有層相互連接,其表達式為

式中,layer(k) 為第k層的輸出,Wi為卷積核,f(·)為激活函數。
這些卷積層的卷積核尺寸為3 ×3,特征個數為16,為了使卷積前后的圖像尺寸保持不變,卷積前圖像邊緣進行補0 填充,填充尺寸(Padding)為1。
輸入為由雙三次插值為退化過程的低分辨率遙感圖像,經過兩組密集部分后通過反卷積增大圖像尺寸,反卷積層的輸出為256 個高分辨率特征圖。最后的重建層由一個卷積層組成,尺寸為3 ×3,Padding 為1,通過這一層將256 個高分辨率特征圖重建得到最終的高分辨率輸出圖像。
盡管使用了殘差網絡,網絡在訓練時仍然可能出現訓練不易收斂的問題,ReLU 函數是斜坡函數,表達式為

ReLU 函數將輸入矩陣中所有負數都置為0,正值不變。此激活函數有一個缺點,就是訓練很脆弱,很容易死亡。例如,當一個較大的梯度流過一個ReLU 神經元,更新后參數這個神經元就再也不會對任何數據有激活現象。那么在這之后此神經元的梯度永遠都是0,也就是說ReLU 函數有時會在訓練過程中不可逆地死亡,即在訓練過程中有些神經元沒有激活。因此,本文對ReLU 函數進行了改進,使用了PReLU 作為激活函數,PReLU 函數可以解決ReLU 函數的死亡問題,其表達式為

式中,a為較小的數,可取0.01。當x≥0 時,PReLU函數與ReLU 函數值都為x。但PReLU 函數比ReLU函數多了一項min(ax,0),當x <0 時,ReLU 函數為0,而PReLU 函數是一條斜率為a且過原點的直線。PReLU 函數只增加了極少的參數,網絡計算量只增加了一點點,但網絡在訓練時健壯了很多。
DenseNet 網絡訓練的損失函數常用有L1范數和L2函數。L1范數損失函數也叫最小絕對值誤差,總的來說是把目標值與估計值的絕對差值之和最小化。L2范數損失函數也叫最小平方誤差,總的來說是使目標值與估計值差值的平方之和最小化。由于L1范數能處理數據中的異常值,其魯棒性比L2更好,本文訓練使用L1范數作為損失函數,訓練的最終目標是使L1范數達到最小值。取實際高分辨率圖像與重建后的圖像的誤差絕對值之和,其表達式為

式中,y(i,j) 為實際高分辨率圖像,f(i,j) 為重建后的圖像。當L1范數達到最小值時,重建后的圖像最接近于實際高分辨率圖像。
網絡優化器仍然采用Adam 優化器,它是一種可以替代傳統隨機梯度下降(stochastic gradient descent,SGD)過程的算法,Adam 算法的表達式如下:

式中,β1、β2為參數,分別取0.9 和0.999。gt是t時間步的梯度,mt是對梯度的一階矩估計,vt是對梯度的二階矩估計,ε取10-8防止除數為0,α為初始學習率。
和傳統的隨機梯度下降不同,Adam 算法在訓練過程中通過計算梯度的一階矩估計和二階矩估計,動態地調整學習率。而傳統的隨機梯度下降一直保持固定的學習率更新所有的權重。Adam 算法可以使每一次迭代的學習率都在一個較好的數值,使訓練質量提高。Adam 的初始學習率α如果設得過大,學習速度則會非常快,但其收斂結果不好;α設得過小會導致訓練時間過長,且對結果優化不大。因此,本文采用默認的初始學習率0.001,此數值既可以保證學習速度,又可以優化收斂結果。
本文算法的實驗環境為Intel Core I7-7700K CPU@4.20 GHz,16 GB 內存,64 位Ubuntu 系統,GPU為GTX1060,深度學習框架使用了TensorFlow 1.10。
訓練樣本使用合作單位提供的尺寸為20 000 ×20 000 的遙感圖像。為了提高網絡訓練速度和訓練樣本數量,對每個小尺寸的遙感圖像有交叉地截取為小圖像,每相隔20 像素截取一張100 ×100 尺寸的小圖像,最終得到超過8 萬張尺寸為100 ×100 的小圖像作為網絡訓練數據集。為保證數據集的數量,再將子圖像分別旋轉90 °、180 °、270 °,使數據集的數目增加了3 倍,最終得到了約2.5 萬張100×100 的小圖像作為訓練集。將訓練集圖像本身作為網絡的輸出,訓練集圖像(2 倍欠采樣)縮小2 倍到50 ×50,作為網絡輸入的低分辨率圖像。
網絡訓練執行一次epoch 大約14 min,當訓練epoch 達到35 次時,網絡已經收斂,此時累計用時大約8 h。網絡訓練過程中誤差與迭代次數的關系如圖3 所示,網絡的測試集峰值信噪比(peak signal to noise ratio,PSNR)與迭代次數的關系如圖4 所示,每次epoch 訓練后進行測試,約在35 次訓練時PSNR 值接近了穩定。

圖3 網絡訓練誤差與epoch 的關系

圖4 測試集PSNR 與epoch 的關系
取測試集PSNR 最大時的網絡作為最終的結果進行泛化實驗,此時epoch 為第35 次。在實驗過程中,選取8 張遙感圖像進行實驗,如圖5 所示。實驗選擇低分辨率圖像、雙三次插值、VDSR 算法、本文算法作對比。為了實驗對比的合理性,實驗中縮放因子都取2,訓練與測試圖像均使用遙感圖像,在此列出4 組實驗結果進行對比,遙感圖像超分辨對比結果如圖6~圖9 所示。

圖5 測試圖像

圖6 第1 組圖像超分辨效果比較

圖7 第2 組圖像超分辨效果比較

圖8 第3 組圖像超分辨效果比較

圖9 第4 組圖像超分辨效果比較
由圖6~圖9 可以看出,與雙三次差值與VDSR結果相比較,本文方法得到的超分辨結果視覺上更清晰,細節更豐富,地物細節更容易分辨出來。
為了客觀地評價遙感圖像超分辨重建效果,泛化實驗中采用峰值信噪比(PSNR)和結構相似度(structural similarity,SSIM)作為超分辨算法的質量評價指標,其定義如式(8)和式(9)所示。

式中,y(i,j) 為實際高分辨率圖像,f(i,j) 為重建后的圖像。超分辨圖像與實際高分辨率圖像存在誤差,其誤差越小PSNR 越高,說明超分辨結果圖像的失真度越低,重建效果越好。

式中,μx、μy為均值,σx、σy為標準差,σxy為協方差,c1=(0.01L)2,c2=(0.03L)2,L=255。SSIM表示超分辨圖像與實際高分辨率圖像的結構相似程度,其取值為范圍為[0,1],SSIM 越接近1 則說明它們的結構越相似,重建效果越好。
泛化實驗統計的PSNR 和SSIM 結果分別如表1和表2 所示。綜上所述,本文改進的密集連接網絡遙感圖像超分辨重建算法不論是主觀視覺上還是在客觀評價參數上,超分辨效果都優于其他算法。相比當前先進的VDSR 算法,本文算法其PSNR 平均提高約了1.05 dB,SSIM 平均提高了0.042。

表1 3 種算法的PSNR 對比(dB)

表2 3 種算法的SSIM 對比
本文改進了VDSR 算法,網絡訓練與測試使用的數據集采用了遙感圖像,結合了密集連接網絡,將殘差網絡中的殘差塊替換成密集塊,并增加了一組密集層與瓶頸層完成了網絡結構的改進。同時,在激活函數、學習規則方面也進行了改進,修改網絡激活函數為PReLU 函數,網絡訓練采用了L1損失函數。當訓練的epoch 達到了大約35 次時網絡已經收斂。
網絡泛化實驗結果表明,與VDSR 算法相比,本文改進的算法對遙感圖像的效果更優。圖像的超分辨結果在主觀視覺上更清楚,細節信息更豐富,地物細節更容易分辨出來。客觀評價指標PSNR 平均增加了1.05 dB,SSIM 平均增加了0.042。