楊 悅, 謝 辛, 何 蕾, 胡 敏
(1.合肥工業(yè)大學 數(shù)學學院,安徽 合肥 230601; 2.重慶大學 計算機學院,重慶 400044;3.合肥工業(yè)大學 計算機與信息學院,安徽 合肥 230601)
近年來,由于計算機科學的發(fā)展蒸蒸日上,越來越多的領(lǐng)域如生物醫(yī)學、遙感測繪和視頻通訊等都在廣泛應用數(shù)字圖像處理技術(shù),圖像超分辨率(super-resolution,SR)重建是其中的一個熱門研究分支,已被大規(guī)模地運用于物體檢測、人臉識別和行人檢測等重要領(lǐng)域。圖像超分辨率重建是從多幅低分辨率(low-resolution,LR)圖像中重建出一幅高分辨率(hgih-resolution,HR)圖像。目前圖像超分辨率的主要方法[1]有基于插值、基于重建和基于學習的方法。
基于插值的方法利用圖像空間域中鄰近像素點的像素值確定待插值點的像素值,最常見的有最近鄰插值、雙線性插值與雙三次插值[2]。文獻[3]提出了一種結(jié)合邊緣擬合算子的空間非線性插值算法模型;文獻[4]提出了一種基于小波的圖像重建方法。基于插值的圖像超分辨率重建方法便于處理,但是由于沒有充足的先驗知識和圖像的觀測模型,重建后的圖像邊緣模糊,且整體視覺效果不佳[5]。
基于重構(gòu)的超分辨率重建方法從構(gòu)建圖像的退化模型出發(fā),把多幅低分辨率圖像作為一致性約束,再結(jié)合低分辨率圖像的先驗知識進行超分辨率重建,該方法主要有頻域法和空域法。文獻[6]最早利用傅里葉變換的平移特性提出頻域法。由于頻域法缺乏充分的先驗知識,目前最流行的是空域法。經(jīng)典的空域法有:非均勻插值法[7]、凸影投射法[8]和最大后驗概率[9]。
基于學習的超分辨率重建方法通過機器學習從大量相對應的低分辨率與高分辨率圖像組之間得到映射關(guān)系,再基于這種映射關(guān)系輸入低分辨率圖像預測得到重建的高分辨率圖像[10]。文獻[11]提出了一種基于樣本學習的圖像超分辨率重建算法;文獻[12]提出基于稀疏表示的圖像超分辨率算法。近年來,深度學習在圖像超分辨率重建領(lǐng)域表現(xiàn)出了巨大的潛力[13],文獻[14]首次利用三層卷積神經(jīng)網(wǎng)絡(convolutional neural networks,CNN)在低分辨率圖像LR和高分辨率圖像HR之間建立了端到端映射的輕量級超分辨率模型;文獻[15]通過結(jié)合卷積神經(jīng)網(wǎng)絡和殘差網(wǎng)絡[16]建立了深度達20層的卷積網(wǎng)絡結(jié)構(gòu)VDSR。然而網(wǎng)絡深度的增加帶來網(wǎng)絡參數(shù)增加、梯度彌散和計算運行成本增大等問題。此后文獻[17]將遞歸神經(jīng)網(wǎng)絡結(jié)構(gòu)[18]應用于超分辨率重建中,大幅減少了網(wǎng)絡參數(shù),提高了重建效率;文獻[19]提出使用淺通道和深通道分別重構(gòu)圖像的輪廓信息和紋理細節(jié)。
上述基于深度學習的超分辨率模型均屬于原始圖像輸入網(wǎng)絡前需經(jīng)過插值預處理把圖像放大到規(guī)定目標尺寸的基于插值預處理的模型[20],且均使用雙三次插值進行預處理,導致輸入卷積神經(jīng)網(wǎng)絡前的預處理圖像過度平滑和模糊,重建后的圖像易丟失一些細節(jié)以至于邊緣過于平滑。
為了不增加網(wǎng)絡深度且能夠提高網(wǎng)絡性能,如圖1所示,本文以輕量級網(wǎng)絡基于卷積神經(jīng)網(wǎng)絡的超分辨率重建算法(super-resolution convolutional neural net work,SRCNN)算法[21]為模型,采用Newton-Thiele型混合連分式插值函數(shù)[22]對輸入的原始低分辨率圖像進行插值預處理,以達到充分利用低分辨率圖像紋理細節(jié)特征的目的。因為SRCNN算法在重建與優(yōu)化的過程中采用易于收斂到局部最優(yōu)的隨機梯度下降法(stochastic gradient descent,SGD)[23]最小化損失函數(shù),所以本文利用Radam自適應優(yōu)化算法[24]和余弦衰減法[25]收斂損失函數(shù),提高靈敏度避免產(chǎn)生較大的震蕩,進一步提升重建圖像的質(zhì)量。
圖1 超分辨率重建的卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)圖
把原始低分辨率圖像輸入到三層卷積神經(jīng)網(wǎng)絡之前,對其進行插值預處理到與高分辨率圖像同樣的尺寸。在SRCNN算法中,預處理時采用簡單的低通濾波器雙三次插值函數(shù),在插值時可能會抑制高頻成分丟失一些重要的紋理細節(jié),以致于重建后的圖像邊緣產(chǎn)生較多的模糊或出現(xiàn)階梯失真現(xiàn)象??紤]到雙三次插值函數(shù)不足以很好地恢復圖像的紋理特征,因此本文使用非線性插值函數(shù)即Newton-Thiele型混合連分式插值函數(shù),插值后的圖像不僅能夠保留更多的高頻紋理細節(jié)[26],而且重建后的效果圖其邊緣紋理會更加逼真,也更能符合人類的視覺機制。
Newton-Thiele型插值函數(shù)是將Newton插值多項式與Thiele型插值連分式混合而成的。
設
i=0,…,m;j=0,…,n}。
令
φNT[xp,…,xq,xi,xj;yk]=
φNT[xp,…,xq;yk,yl]=
φNT[xp,…,xq;yr,…,ys,yk,yl]=
(yl-yk)/{φNT[xp,…,xq;yr,…,ys,yl]-
φNT[xp,…,xq;yr,…,ys,yk]}。
稱由上式定義的φNT[xp,…,xq;yr,…,ys]為函數(shù)f(x,y)在網(wǎng)格點{xp,…,xq}×{yr,…,ys}上的Newton-Thiele型混合差商。
(x-x0)…(x-xm-1)Am(y),
Ai(y)=φNT[x0,…xi;y0]+
其中,φNT[x0,…,xi;y0,…,yj]為Newton-Thiele型混合差商。
特征提取[21]是從低分辨率圖像中提取重疊的圖像塊,并將每個圖像塊表示為一個高維向量,類似于傳統(tǒng)方法中用一組提前訓練好的基,如PCA、DCT等[27]表示這些圖像塊,它們由一組特征圖組成, 特征圖數(shù)量等于向量的維度。
在卷積神經(jīng)網(wǎng)絡中,本文的第1層操作在形式上可以表示為:
F1(Y)=max(0,W1*Y+B1),
其中:W1為濾波器;B1為偏置項;*表示卷積操作;W1為大小是c×f1×f1的n1個濾波器,c為輸入圖像的通道數(shù)量,f1為濾波器的空間大小,n1為濾波器的數(shù)量。即W1對圖像執(zhí)行n1次卷積,得到n1個特征圖,卷積核大小均為c×f1×f1;B1為一個與濾波器相關(guān)的n1維向量。濾波后再使用線性糾正單元(max(0,x),ReLu)[28]。
在第1層卷積操作中, 本文對每個圖像塊提取了n1個特征。 而在第2層中, 本文利用卷積層把每個n1維向量非線性地映射到另一個n2維向量上,輸出的每一個n2維向量都相當于重建的高分辨率圖像塊。第2層的操作可表示為:
F2(Y)=max(0,W2*F1(Y)+B2),
其中:W2對應了n2個卷積核大小為n2×f2×f2的濾波器;B2為n2維的偏差。
預測的高分辨率重疊圖像塊通常以平均的方式來生成最終的完整圖像[29]。平均這一步驟可以看作是在一組特征圖上一個預定義的濾波器。第3層的操作可表示為:
F3(Y)=W3*F2(Y)+B3,
其中:W3為一個大小是n2×f3×f3×c的線性濾波器;B3為c維的偏差。
為了學習端到端的映射函數(shù)F,本文通過最小化損失函數(shù)來估計卷積神經(jīng)網(wǎng)絡參數(shù)Θ={W1,W2,W3,B1,B2,B3},本文采用SRCNN算法中的均方誤差(mean square error,MSE)作為損失函數(shù),其形式如下:
其中:n為訓練樣本的數(shù)量;Yi為LR;Xi為HR;i為遍歷整個訓練集的圖像的序號。
在訓練中SRCNN算法使用SGD算法收斂損失函數(shù)。為了減少震蕩并提高優(yōu)化效率,SGD算法每經(jīng)過數(shù)輪迭代就更換一個較小的學習率。手動調(diào)節(jié)學習率工作量較大且很難快速找到當前模型環(huán)境下的最佳值。若設置的學習率過小,會使得優(yōu)化進程緩慢;若學習率過大,會導致震蕩且難以逼近最優(yōu)解甚至逐漸遠離最優(yōu)解[30]。
為了解決上述問題,本文利用余弦衰減法,通過余弦函數(shù)逐漸降低學習率,即
圖2 余弦衰減圖
同時,本文采用通過控制自適應率的方差動態(tài)地調(diào)整梯度下降方向的Radam優(yōu)化算法,即
ρ∞←2/(1-β2)-1,
gt←θt-1f(θt-1),
mt←β1mt-1+(1-β1)gt,
當ρ∞>4時,則
當ρ∞≤4時,則使用非自適應動量更新參數(shù),即
通過大量的實驗驗證了本文提出的超分辨率模型性能更優(yōu)。受SRCNN算法啟發(fā),為了均衡卷積神經(jīng)網(wǎng)絡的訓練速度與性能,實驗中僅使用最基本的3層卷積網(wǎng)絡,即卷積神經(jīng)網(wǎng)絡層所對應的濾波器的尺寸大小分別為f1=9,f2=1,f3=5,所對應的濾波器數(shù)量為n1=64,n2=32。本算法采用標準的91幅圖像[10]和BSDS300[31]作為實驗的訓練集,每一層的權(quán)重均使用Xavier均勻分布[32]進行初始化,并把每一層的偏置項初始化都設置為0,共迭代2×105次,epoch=1 000,batch-size=128,數(shù)據(jù)集大小為35 230。
本文依次使用雙三次插值[2]、基于稀疏表示的圖像超分辨率算法、SRCNN算法、基于局部樣本自相似性的圖像和視頻放大算法[33]、通過自適應稀疏域選擇和自適應正則化實現(xiàn)圖像的去模糊和超分辨率[34]重建Set5和Set14測試集[35]進行對比實驗,并使用峰值信噪比(peak signal to noise ratio,PSNR)和結(jié)構(gòu)相似性(structural similarity index,SSIM)作為衡量圖像質(zhì)量的指標。超分辨率重建方法在Set14和Set5測試集上的客觀測評PSNR和SSIM結(jié)果對比見表1、表2所列,本文的方法比傳統(tǒng)的超分辨率重建方法有明顯的優(yōu)勢,其中在Set5測試集上的平均PSNR值和SSIM值分別為36.45 dB和0.95,比同樣使用卷積神經(jīng)網(wǎng)絡的SRCNN算法高出4.74 dB和0.02。
表1 在Set14測試集上×2的PSNR和SSIM
表2 在Set5測試集上×2的PSNR和SSIM
采用雙三次插值預處理低分辨率圖像的SRCNN算法,分別使用SGD算法和Radam算法進行優(yōu)化的PSNR迭代效果,如圖3所示。從圖3可以看出,使用SGD算法收斂時引起的震蕩很大,而Radam自適應優(yōu)化算法收斂時則非常平穩(wěn)。
圖3 Set14上SGD算法和Radam算法重建效果對比
注:PSNR的單位為dB。
注:PSNR的單位為dB。
本文算法與其他算法重建效果對比如圖4所示。圖4中:圖4a為原圖;圖4b為局部放大原圖;圖4c為雙三次插值算法結(jié)果;圖4d為基于局部樣本自適應算法結(jié)果;圖4e為基于稀疏表示結(jié)果;圖4f為基于自適應稀疏和自適應正則化算法結(jié)果;圖4g為基于卷積神經(jīng)網(wǎng)絡算法結(jié)果;圖4h為本文算法結(jié)果。
從圖4中可以看出,本文算法比其他算法能夠重建出更加清晰且擁有豐富分明紋理細節(jié)特征的高分辨率圖像。
不僅如此,放大后的SRCNN算法重建圖像邊緣處(圖4中蝴蝶翅膀條紋)有明顯的振鈴模糊現(xiàn)象,但是本文算法很好地改善了這些問題,并且在人的視覺效果上更為突出。
圖4 本文算法與其他算法重建效果對比×2
本文提出了一種連分式結(jié)合卷積神經(jīng)網(wǎng)絡的超分辨率重建方法,以解決基于卷積神經(jīng)網(wǎng)絡的超分辨率算法在插值預處理原始低分辨率圖像時損失一些重要的紋理細節(jié)的問題。本文在預處理時使用Newton-Thiele型混合連分式插值函數(shù),引入更多的非線性因素,突破了目前深度學習超分辨率領(lǐng)域采用雙三次插值函數(shù)預處理圖像的局限性,分析了在網(wǎng)絡重建與優(yōu)化過程中使用隨機梯度下降法的不足之處,并采用能夠在收斂時根據(jù)自適應率的方差動態(tài)地更新調(diào)整梯度方向的Radam優(yōu)化算法和通過余弦函數(shù)來逐漸降低學習率的余弦衰減法以最小化損失函數(shù)。實驗結(jié)果表明,本文方法可以恢復更豐富的紋理細節(jié)特征,相比于其他傳統(tǒng)方法在客觀評價和主觀視覺效果上均有明顯的優(yōu)勢。除此之外,本文方法能夠有效避免SRCNN算法重建的圖像紋理細節(jié)處出現(xiàn)模糊失真的振鈴現(xiàn)象,重建出更高質(zhì)量的高分辨率圖像。后續(xù)工作可以進一步探索加深網(wǎng)絡的深度來提取更多不同層次的圖像特征,以及改進優(yōu)化方法和參數(shù)初始化設置來提高完善網(wǎng)絡的速度與性能。