張 敏,黃 剛,陳啟超
(南京郵電大學 計算機學院,江蘇 南京 210046)
圖像超分辨率(image super-resolution,SR)一直是底層視覺領域的研究熱點,分辨率是評估圖像質(zhì)量的重要指標,圖像分辨率越高,圖像就具有越高的像素密度,意味著圖像包含越豐富的細節(jié)信息。然而,在實際的圖片采集過程中,受采集設備、拍攝環(huán)境等諸多客觀因素的影響,獲取到的圖片往往無法滿足實際需求。因此,提高圖像分辨率,改善圖像質(zhì)量,成為人們所關注的熱點問題。圖像超分辨率重構方法[1-3]從算法的角度,以低成本手段將一幅或者多幅低分辨率圖像轉(zhuǎn)化為高分辨率圖像,恢復圖像細節(jié),在衛(wèi)星遙感、醫(yī)學影像以及視頻監(jiān)控等領域有著重要的應用并取得了顯著的成效。圖像超分辨率主要分為兩類,分別是單幀圖像超分辨率(single image super-resolution,SISR)以及多幀圖像超分辨率(multiple image super-resolution,MISR),文中主要討論的是單幀圖像超分辨率方法。
目前,圖像超分辨率算法研究的三個主要方向分別為基于插值(interpolation based)的圖像重建算法[4-5]、基于重構(reconstruction based)的圖像重建算法[6]以及基于學習(learning based)的圖像重建算法[7-9]。基于插值的方法最典型的有雙三次插值法,利用鄰近已知像素點的灰度值計算待插入像素點的值,簡單高效,但重建的高分辨率圖像細節(jié)丟失問題較為嚴重,往往達不到理想效果。基于重構的超分辨率重建算法,如Yang等人[6]提出的迭代反投影,在很大程度上依賴于先驗條件,生成的圖像過于平滑。基于學習的圖像超分辨率重建算法是目前的研究熱點,該方法通過訓練樣本學習低分辨率圖像與高分辨率圖像之間的映射關系,進而重建出高分辨率圖像。典型的基于學習的方法主要有鄰域嵌入算法、稀疏編碼算法以及基于卷積神經(jīng)網(wǎng)絡的算法等。
隨著海量數(shù)據(jù)的出現(xiàn)以及深度學習技術的發(fā)展,基于卷積神經(jīng)網(wǎng)絡的方法在圖像處理領域取得了巨大成功,產(chǎn)生了重要的影響。2014年,Dong等人[10]首先將卷積神經(jīng)網(wǎng)絡引入圖像超分辨率領域,開創(chuàng)性地提出SRCNN方法,以端到端的方式來學習低分辨率圖像與高分辨率圖像之間的映射關系,極大地簡化了超分辨算法的工作流程。該算法以傳統(tǒng)的稀疏編碼與深度學習之間的關系為基礎,將經(jīng)雙三次插值后的低分辨率圖像作為輸入,利用三個卷積層,將圖像從低分辨率空間非線性映射到高分辨率空間,完成了圖像的提取和特征表示、非線性映射以及圖像重建過程,直接重建出高分辨率圖像,實現(xiàn)了端到端的圖像重建,其重建效果顯著優(yōu)于傳統(tǒng)的超分辨率算法,證明了深度學習在圖像超分辨率領域的卓越性能。之后,Dong等人[11]又提出FSRCNN對SRCNN加以改進,提出以低分辨率圖像作為網(wǎng)絡的輸入進行訓練,并在網(wǎng)絡的最后通過反卷積層放大尺寸并重建出高分辨率圖像。2016年,Kim等人[12]提出了一個20層的深度卷積神經(jīng)網(wǎng)絡模型VDSR對圖像特征進行深度提取,并通過引入殘差模型加快了網(wǎng)絡的收斂速度,提高了模型的泛化能力。
基于對圖像重建性能以及網(wǎng)絡的訓練時間角度的考慮,文中提出了一種基于深度殘差網(wǎng)絡的圖像超分辨率重建方法。該方法以原始的低分辨率圖像作為模型的輸入,用較小的卷積核級聯(lián)出深層卷積網(wǎng)絡,以更好地提取圖像的邊緣信息。為加快網(wǎng)絡收斂速度,避免梯度爆炸和梯度消失,引入殘差學習,之后利用反卷積層[11,13]進行上采樣,重建出目標尺寸的高分辨率圖像。實驗結果表明,該方法能夠有效地提高特征信息的利用率,恢復圖像細節(jié),達到較好的圖像重建效果。
SRCNN將原始的低分辨率圖像經(jīng)過雙三次插值后,作為網(wǎng)絡的輸入進行訓練,其計算成本影響了網(wǎng)絡的實時性能和運算速度。在重建高分辨率圖像時,由于SRCNN的網(wǎng)絡層數(shù)相對較少,且在圖像特征提取與表示、非線性映射、圖像重建等三個模塊分別使用了9×9、1×1以及5×5大小的卷積核,感受野相對較小,依賴于小圖像區(qū)域的上下文,沒有充分利用到上下文信息,導致重建出的圖像精度不夠,超分辨率性能有待進一步提升。
FSRCNN是對SRCNN的改進,該算法的網(wǎng)絡結構在使用小型濾波器并加深網(wǎng)絡的基礎上,設計“漏斗”結構的卷積網(wǎng)絡,在網(wǎng)絡末端引入反卷積層,直接從原始的低分辨率圖像學習到高分辨率圖像的映射,省去了圖像的預處理階段;降低輸入特征的維度;采用了較小尺寸的卷積核和更深層次的網(wǎng)絡結構。
FSRCNN網(wǎng)絡結構如圖1所示。該網(wǎng)絡由5個部分組成,分別用于特征提取、特征收縮、非線性映射、特征擴張以及反卷積重建,每個部分負責不同的任務。特征提取模塊負責從低分辨率圖像中提取多個特征塊,并將每個特征塊表示為高維度向量,這些高維向量組成一組特征圖。特征收縮部分通過應用1×1的卷積核進行降維,減少網(wǎng)絡的參數(shù),降低計算復雜度。非線性映射模塊非線性地將前一層的高維向量映射到另一個高維向量上。因低維度的特征帶來的重建效果不是太好,因此特征擴張模塊應用1×1的卷積核進行擴維,相當于收縮的逆過程。反卷積重建過程相當于卷積層的逆操作,將圖像放大到目標大小,實現(xiàn)了圖像的上采樣。
圖1 FSRCNN網(wǎng)絡結構
FSRCNN在保證修復質(zhì)量的前提下,提高了網(wǎng)絡的運行速度,保證了圖像重建的實時性。但是,該方法仍存在一定的局限性,一方面由于卷積層數(shù)相對較少,無法充分提取細節(jié)特征,另一方面,圖像在經(jīng)過卷積操作后,尺寸減小,邊緣信息丟失,一定程度上降低了圖像的重建質(zhì)量。
SRCNN和FSRCNN都是通過淺層網(wǎng)絡學習低分辨率圖像與高分辨率圖像之間的映射關系以重建高分辨率圖像,收斂速度相對較慢,訓練時間長,圖像的恢復質(zhì)量有待提升。
為了改進上述問題,Kim等人提出深度卷積網(wǎng)絡VDSR。該網(wǎng)絡受用于ImageNet分類[14]的VGG-net的啟發(fā),提出了一種高度精確的單圖像超分辨率方法,使用了非常深的卷積網(wǎng)絡對圖像進行超分辨率重構,其網(wǎng)絡結構如圖2所示。
圖2 VDSR網(wǎng)絡結構
在圖像超分辨率重構任務中,網(wǎng)絡的任務是通過學習低分辨率圖像與高分辨率圖像之間的映射關系恢復出高分辨率圖像,低分辨率圖像與高分辨率圖像共享低頻信息,用原始的低分辨率圖像作為網(wǎng)絡的輸入有利于保留低頻信息,重建出精度較高的高分辨率圖像。該方法通過殘差連接學習高分辨率圖片與低分辨率圖片中之間的高頻殘差,將插值預處理后的低分辨率圖像作為輸入并預測圖像細節(jié),通過在深度網(wǎng)絡結構中級聯(lián)小型濾波器增加圖像的局部感受野,以高效利用大型圖像區(qū)域的上下文信息;采用殘差學習和可調(diào)節(jié)的梯度剪切來加快收斂速度,隨著網(wǎng)絡加深,重建精確度顯著提高;另外,在每次進行卷積操作前進行零填充,使得卷積前后的特征圖大小保持一致。該方法克服了SRCNN收斂速度慢以及上下文信息缺乏關聯(lián)性等問題。實驗結果表明,該方法無論在重建精度還是在重建速度方面都有較好的優(yōu)勢。
在SRCNN中,輸入的精確副本必須經(jīng)過所有層,直到到達輸出層為止。由于具有許多權重層,因此需要消耗大量內(nèi)存。Kim等考慮到低分辨率圖像和高分辨率圖像在很大程度上共享相同的信息,因此VDSR引入殘差學習,對殘差圖像進行建模,即當輸入和輸出高度相關時,僅學習殘差,并以更高的學習率進行訓練,大大提升了網(wǎng)絡的收斂速度。另外,該方法在網(wǎng)絡結構中多次級聯(lián)小型濾波器,相比大尺寸的濾波器而言,不僅擁有更少的參數(shù),而且有效地利用了大圖像區(qū)域的上下文信息,擴大感受野,使得重建精度顯著提升。
在FSRCNN和VDSR等方法的基礎上,文中提出了一種基于殘差學習的圖像超分辨率重構方法。該方法以原始的低分辨率圖像作為模型的輸入,用較小的卷積核級聯(lián)出深層卷積網(wǎng)絡,首先通過一層卷積操作將圖像特征非線性地映射為高維向量,提取圖像的特征信息。為加快網(wǎng)絡收斂速度,避免梯度爆炸和梯度消失,引入殘差塊,最后利用反卷積層進行上采樣重建出目標尺寸的高分辨率圖像。另外,為防止每次的卷積運算時特征圖變小以及充分利用圖像邊緣信息,在每個卷積層之前進行零填充,使得輸入特征與輸出特征具有相同尺寸。方法的模型結構如圖3所示。
圖3 文中方法
文中方法堆疊了兩個殘差塊,第一個殘差塊用于學習圖像的淺層特征,第二個殘差塊用于恢復圖像細節(jié)信息,最后通過反卷積層進行上采樣,重建出最終的高分辨率圖像。在卷積過程中使用零填充保證輸出圖像與輸入圖像尺寸相等,以減少圖像的細節(jié)信息丟失。因池化層對卷積后的結果進行下采樣,降低特征維度,用以簡化卷積層的輸出信息,導致細節(jié)信息丟失,而超分辨率算法的目標是增加圖像的細節(jié)信息,故文中方法不使用池化層。
Simonyan等[14]指出使用一個較大的卷積核等價于連續(xù)使用幾個較小的卷積核,且使用更深層次的小卷積核網(wǎng)絡可以更好地提取圖像中的特征信息。文中方法使用深度非線性映射直接對未經(jīng)插值的原始低分辨率圖像進行特征提取,每一層卷積層都由64個通道組成,卷積核大小為3×3。通過級聯(lián)3×3的小卷積核,可以有效地增加局部感受野,充分利用大圖像區(qū)域中的上下文信息,使得重構出的圖像細節(jié)更加細膩。另外,在每次卷積操作之前需要對特征圖像進行零填充,不僅可以確保卷積之后圖像大小不變,還可以提升邊緣預測的準確性。第l層的操作如公式(1)所示:
fl=φ(Wl*f(l-1)+bl)
(1)
其中,Wl和bl分別為第l層的網(wǎng)絡權重和偏置,f(l-1)表示上一層的輸出。
文中方法選用修正線性單元(ReLu)作為反卷積操作及每次卷積操作之后的激活函數(shù)[15],是目前應用最為廣泛的激活函數(shù)。ReLu是一個分段函數(shù),當輸入為負數(shù)時,函數(shù)的輸出為0;當輸入為正數(shù)時,其輸出為輸入時的值。相比于其他類型的激活函數(shù),一方面,ReLu作為激活函數(shù)計算量較小,可以加快網(wǎng)絡的收斂速度,另一方面ReLu能在一定程度上避免梯度消失,具有更加出色的性能,其公式表示如下:
(2)
當網(wǎng)絡深度增加后可以進行更加復雜的特征提取,模型可以取得較好的效果。但是,當傳統(tǒng)的卷積網(wǎng)絡達到一定的深度之后存在梯度消失與梯度爆炸[16]的現(xiàn)象;另一方面,隨著深度的增加,網(wǎng)絡退化會導致整體的性能下降。
為解決以上問題,He等人[17]提出殘差學習,通過前饋卷積網(wǎng)絡與跳躍連接構成殘差塊,大大提高了網(wǎng)絡的性能,相較于傳統(tǒng)卷積網(wǎng)絡,殘差網(wǎng)絡收斂速度更快,損失更低,同時保證了輸出特征的表達能力,其模型結構如圖4所示。Kim等人將殘差學習引入圖像超分辨率領域,網(wǎng)絡只需學習高分辨率圖像與低分辨率圖像之間的高頻殘差,提高了訓練效率。
圖4 原始殘差塊
傳統(tǒng)殘差塊中批量正則化對卷積層的輸出特征作正則化處理,導致信息部分丟失,同時由于批量正則化參數(shù)與卷積操作參數(shù)量相同,消耗大量內(nèi)存。因此,Lim等人[18]改善了殘差模塊的使用,相對于傳統(tǒng)的殘差模塊移除了批量正則化BN層,減少了網(wǎng)絡參數(shù),在很大程度上提高了網(wǎng)絡的性能。因此文中方法使用改善后的殘差塊,殘差塊中只包含卷積層和修正線性單元ReLu,其結構如圖5所示。
圖5 改進的殘差塊
文中方法疊加了兩個殘差塊,兩個殘差塊都接收了原始低分辨率圖像作為輸入數(shù)據(jù),共享低頻信息,減少訓練過程中的信息丟失,使得圖像的細節(jié)信息更加豐富。
網(wǎng)絡以原始的低分辨率圖像作為輸入圖像經(jīng)過第一個殘差塊學習到殘差圖像,該殘差圖像與低分辨率圖像結合是第一個殘差塊的輸出,也即為第二個殘差塊的輸入。每一個殘差塊的輸出如公式(3)所示:
xl+1=f+xl
(3)
其中,xl和xl+1分別表示殘差塊的輸入向量和輸出向量,函數(shù)f表示待學習的殘差映射。
VDSR借助于雙三次插值對原始的低分辨率圖像進行預處理,經(jīng)雙三次插值放大之后的圖像作為輸入,會使得網(wǎng)絡計算復雜度顯著增加,增加網(wǎng)絡的訓練難度,性能低且運算速度慢。
文中方法直接在網(wǎng)絡的最后利用反卷積層對圖像進行上采樣。反卷積又叫做轉(zhuǎn)置卷積,可以視為卷積的逆過程。
將低分辨率圖像經(jīng)過零填充與3×3的反卷積核作用得到上采樣特征圖,使得最終的輸出圖像大小與目標圖像的大小相同,輸入圖像與輸出圖像尺寸關系如式(4)。反卷積層的添加,一方面省去了預處理階段,另一方面降低了計算的復雜度。
(4)
其中,W1和H1分別表示輸入圖像的寬和高,W2和H2分別表示輸出圖像的寬和高,S表示卷積核移動的步長大小,F(xiàn)為卷積核的大小,P表示0填充。
圖像超分辨率重建的目標是通過訓練得到低分辨率圖像于高分辨率圖像之間的映射函數(shù),使得重建出的圖像與原始的低分辨率圖像之間的差值,也即損失函數(shù)的值越小越好。
文中使用均方誤差(mean square error,MSE)作為損失函數(shù)來優(yōu)化參數(shù)訓練模型,如公式(5)所示。
(5)
其中,H和W分別表示圖像的高和寬,X(i,j)和Y(i,j)分別表示重建圖像與原圖對應的像素點。
DIV2K是用于圖像恢復的高質(zhì)量圖像數(shù)據(jù)集,其中包含800張訓練圖像,100張驗證圖像以及100張測試圖像。文中方法使用該數(shù)據(jù)集的800張訓練圖像作為訓練數(shù)據(jù)集。采用Set5、Set14基準數(shù)據(jù)集作為測試數(shù)據(jù)集。
單圖像超分辨率方法的評價標準通常分為主觀評價和客觀評價。主觀評價是由人眼直觀地對原始圖像與生成圖像進行比較。為驗證模型的質(zhì)量,通常需要使用峰值信噪比(peak signal-to-noise ratio,PSNR)和結構相似性(structure similarity,SSIM)等客觀評價標準來針對不同的模型評價生成圖像的重建質(zhì)量。
峰值信噪比通過計算對應像素點之間的誤差衡量圖像重建質(zhì)量,其計算方法如公式(6):
(6)
其中,n表示每像素的比特數(shù),一般為8,MSE是指原圖像與生成圖像之間的均方誤差。PSNR的單位為dB,數(shù)值越大表示圖像失真越小。
結構相似性對圖像的相似性從亮度、對比度和結構三個角度進行綜合衡量。假設x和y分別表示原始的高分辨率圖像和恢復出的高分辨率圖像,則計算方法如公式(7)所示:
SSIM(x,y)=l(x,y)*c(x,y)*s(x,y)
(7)
(8)
(9)
(10)
其中,l(x,y)表示亮度比較,c(x,y)表示對比度比較,s(x,y)表示結構比較;μx和μy分別表示兩幅圖像的像素均值,δx和δy表示兩幅圖像的標準差,δxy表示兩幅圖像中像素塊的協(xié)方差,C1、C2和C3為常數(shù),用于避免分母為0時帶來的系統(tǒng)錯誤。SSIM取值范圍為[0,1],結果越接近1表示失真越小;當結果為1時,則表示輸入圖像與輸出圖像完全相同。
文中方法在不同重建倍數(shù)下進行訓練,初始學習速率設置為10-4,動量參數(shù)設置為0.9,圖像批處理大小設置為64。實驗過程中通過Adam優(yōu)化方法最小化MSE以更新參數(shù)。
為驗證文中方法的性能,針對不同的單圖像超分辨率重建的模型,在不同的數(shù)據(jù)集和重建倍數(shù)下進行實驗對比和數(shù)據(jù)分析。
使用訓練好的模型對低分辨率圖像進行2倍、3倍和4倍的超分辨率重建,圖6所示為放大2倍的情況下,各算法的重建效果對比。
圖6 重建效果對比
對比SRCNN、FSRCNN、VDSR以及文中方法等算法在不同重建倍數(shù)下的峰值信噪比和結構相似性,測試結果分別如表1和表2所示。
表1 不同算法在不同重建倍數(shù)下的平均PNSR
表2 不同算法在不同重建倍數(shù)下的平均SSIM
從表中數(shù)據(jù)可以看出,文中算法在不同重建倍數(shù)的PNSR平均值和SSIM平均值相比其他算法均有所提升,實現(xiàn)了較好的超分辨率重建性能。
具體來說,在Set5數(shù)據(jù)集中,在放大倍數(shù)為2、3、4的情況下,文中方法較VDSR方法而言,PNSR分別提高了0.36 dB、0.22 dB、0.04 dB,SSIM分別提高了0.003 0、0.002 1、0.006 4;在Set14數(shù)據(jù)集中,在放大倍數(shù)為2、3、4的情況下,文中方法較VDSR方法而言,PNSR分別提高了0.19 dB、0.13 dB、0.08 dB,SSIM分別提高了0.003 6、0.002 0、0.003 4。由此可見,文中方法的重建效果整體上優(yōu)于其他三種方法。
為提高圖像重建精度,文中提出一種基于深度殘差網(wǎng)絡的圖像超分辨率算法,該算法將原始的低分辨率圖像作為輸入數(shù)據(jù),用較小的卷積核級聯(lián)出深層卷積網(wǎng)絡進行特征提取,為加快網(wǎng)絡收斂速度,避免梯度爆炸和梯度消失,引入殘差學習,之后利用反卷積層進行上采樣重建出目標尺寸的高分辨率圖像。實驗結果表明,相比SRCNN、FSRCNN以及VDSR等方法,文中方法在主觀視覺效果和客觀評價指標上都有提升,實現(xiàn)了較好的圖像重建效果。在之后的研究工作中,可以嘗試將該方法應用于某一具體領域,如醫(yī)學影像、衛(wèi)星遙感等。但該網(wǎng)絡的圖像重建效果仍然有待提升,未來將進一步優(yōu)化網(wǎng)絡設計,以進一步提高超分辨率重建精度。