王 旺 徐俊武 李穎先
(武漢工程大學計算機科學與工程學院 湖北 武漢 430205)
圖像的超分辨率SR(Super Resolution)技術,是通過軟件算法來把低分辨率LR(Low Resolution)的圖像轉換成為高分辨率HR(High Resolution)圖像的技術[1]。目前在許多重要的領域都十分需要這門技術的支持,例如在醫學圖像處理領域,高分辨率圖像可以幫助醫生掌握病情,看到人眼不易察覺到的病灶,可以更好地針對治療[2]。
SR技術最早可以追溯到20世紀60年代,提出者為Harris[3]。當時的主流是方法是插值法,之后隨著技術的發展,有新的方法被研究者提出,主要歸納為基于重建的方法和基于學習的方法[4]。插值法具有最簡單的計算過程和最低的復雜度,常見的有鄰插值法[5]、雙線性插值法[6]和雙三次插值法[7];基于重建的方法在一段時間內頗為熱門,經典的有迭代反投影法[8]、凸集投影法[9]和最大后驗概率估計法[10],這種方法最大的問題在于放大倍數有限,生成效果也不及后來者;基于學習的方法分為基于淺層網絡的學習方法,主要有流形學習[11]和稀疏表示[12];另一種基于學習的方法就是基于深度網絡的方法。
將深度學習應用于圖像超分辨率領域,最早由Dong等[13]提出,也就是經典的基于卷積神經網絡的超分辨率方法(SRCNN),之后不斷地有學者進行優化和改進。
基于卷積神經網絡的超分辨率(SRCNN)方法是最先將深度學習引入圖像超分辨率重建的問題。超分辨率方法將一張LR圖像放大為一張HR圖像,尺寸的變化造成像素點總量的變化,其中最難的挑戰是如何在新增的像素位置進行值的填充。SRCNN使LR圖像能通過一定的算法升為HR圖像,主要是兩者之間存在“共同特征”,所以在SRCNN中,將超分辨率過程分為三個階段[14]:
(1) 特征提取。此階段就是對LR圖像進行特征提取和特征表示,利用卷積網絡的性質提取圖像塊的特征,公式如下:
F1(Y)=max(0,W1×Y+B1)
(1)
(2) 非線性映射。將第一階段提取的n1維特征映射至n2維,公式如下:
F2(Y)=max(0,W2×F1(Y)+B2)
(2)
(3) 重建。這個階段是將第二階段映射后的特征恢復為HR圖像,公式如下:
F(Y)=W3+F2(Y)+B3
(3)
式中:W和B分別代表卷積模板和偏置參數。
SRCNN的網絡模型結構如圖1所示。文獻[13]只使用了3層簡單的卷積神經網絡,分別進行上述三個階段。

圖1 SRCNN網絡模型結構圖
在SRCNN中,使用MSE作為損失函數,在圖像輸入前需要使用雙三次插值放大至目標尺寸。此時雖然圖像尺寸達到了,但是仍然稱之為低分辨率圖像,然后再進行輸入。輸出的是最終重建高分辨率圖像。
(1) 亞像素卷積層。亞像素卷積層[15]在輸入原始低分辨率圖像之后,經過卷積之后,得到通道數為r2的與輸入圖像大小一樣的特征圖像。然后將每個像素的r2通道再排列,成為r×r的區域,則每個像素都成為r×r大小,從而大小為H×W×r2的特征圖像被重新排列成rH×rW的高分辨率圖像。需要注意的是亞像素卷積層的輸入維度為輸出維度前r2倍,且r為放大倍數。
(2) 殘差網絡。通過加深網絡的深度可以很好地提高網絡的性能,但是可能會出現退化問題,隨著網絡層數的增加,在訓練集上的準確率卻飽和甚至下降。深度殘差網絡[16]的出現主要是為了退化的問題。
出現退化的原因,主要是因為神經網絡在反向傳播過程中要不斷地傳播梯度,而當網絡層數加深的時候,梯度在傳播過程中會逐漸消失[17]。
殘差網絡解決退化現象的原理如圖2所示,將某一層的輸入x直接傳到后幾層的輸出中。這種方式被稱為捷徑連接,也就是最終的輸出結果H(x)為原本的輸出F(x)加上前幾層的輸入x,即:
H(x)=F(x)+x
(4)

圖2 殘差網絡示意圖
這樣做的好處在于,當F(x)由于退化問題變為0的時候,那么至少輸出H(x)還是有值的。當H(x)=x的時候,被稱為恒等映射,由于還有輸出,那么梯度還可以繼續傳遞。
同時在殘差塊中也會加入批量歸一化BN[18]層,添加BN的最大優點是,減少梯度消失,加快收斂速度。根據研究表明,BN層需要添加在網絡層后激活函數前[19],效果最佳。
本文提出基于SRCNN的圖像超分辨率的優化方法,主要在SRCNN的基礎上做出如下修改:
1) 在輸入方面,本方法在最后以兩層亞像素卷積層[20]的形式放大圖像尺寸,因此可以直接將原始低清圖像作為輸入,而無需像SRCNN那樣先以雙三次插值的方式放大尺寸再輸入。
2) 本方法還改變特征維數,使用更小的卷積核和使用更多的映射層,SRCNN總共只有3層網絡,映射層只有一層,加深網絡可以有效提升網絡能力。
3) 本方法由于并非在網絡外部進行放大圖像的操作,所以更具有靈活性。當需要不同的上采樣倍率時,只需要微調后面的上采樣層就可以了,前面的映射層不變。
在SRCNN方法中,超分辨率的工作是在高分辨率的基礎上完成的,這樣并不是最優的辦法,而且計算量很大。如果可以在網絡內部進行超分辨率,通過訓練學習將低分辨率特征映射到高分辨率輸出,這樣就能夠減輕計算量,并且效果也更優。
在本方法中,網絡模型可以分為3個部分:
1) 特征提取。SRCNN中的特征提取是對插值后的高分辨率圖像進行提取,卷積核大小為9×9;本方法是直接對原始的低分辨率進行操作,因此可以選擇小一些,設置為3×3。
2) 非線性映射。由于感受野大,能夠表現得更好,在SRCNN中采用的是5×5的卷積核,但是卷積核大的計算量會比較大,用兩個串聯的3×3的卷積核可以替代一個5×5的。同時兩個串聯的小卷積核需要的參數數量為18,而5×5的參數數量為25,所以本方法使用多個3×3的小卷積層,兼顧計算量和網絡能力。
3) 上采樣。使用亞像素卷積層進行上采樣。
具體流程描述如下:
1) 輸入圖像張量,維度為3;
2) 進入卷積層,輸入維度為3,輸出維度為64,卷積核為3×3,步長為1,之后接入激活函數ReLU;
3) 進入殘差塊,內部含有4個小殘差塊和一個卷積層,每個小殘差塊內部含有兩個卷積層,每層卷積之后都加入BN層,激活函數為ReLU;
4) 進入卷積層,輸入維度為64,輸出維度為256,卷積核為1×1,步長為1,之后接入BN層,再激活函數ReLU;
5) 上采樣卷積之前需要計算維度,先使用卷積層將維度升到一定高度再進行上采樣,該卷積層輸入維度為64,輸出維度256,卷積核為3×3,步長為1,之后再進行上采樣層,輸出維度64,ReLU激活;
6) 再重復步驟5,兩次上采樣將圖像尺寸提升4倍;
7) 最后以1×1卷積核降維到3,激活函數改為Tanh,輸出大尺寸圖像。
網絡流程見圖3。

圖3 本文方法網絡流程示意圖
在本文方法中,損失函數依然使用MSE,優化器選用Adam。
實驗采用DIV2K數據集的圖像作為訓練集,訓練完成后使用測試圖像進行重建生成高分辨率圖像用于查看效果。
由于實驗中的低分辨率圖像是從高分辨率圖像進行1/4倍降采樣得到,所以本實驗有原始高分辨率圖像作為對照。同時一起列出用雙三次插值法重建圖像;還另外用相同的訓練集和訓練次數訓練SRCNN方法、ESPCN[20]方法和FSRCNN[21]方法并將測試圖像生成結果一起列出。圖4和圖5分別展示這三種方法重建生成圖像的結果和原始圖像,都是截取了關鍵部分,以便查看細節部分。

(a) 雙三次插值法 (b)SRCNN方法

(c) FSRCNN方法 (d) ESPCN方法

(e) 本文方法 (f) 原始圖像圖4 測試圖像1

(a) 雙三次插值法 (b) SRCNN方法

(e) 本文方法 (f) 原始圖像圖5 測試圖像2
本實驗評價采用主觀評價和客觀評價共同分析生成圖像質量。其中主觀評價就是在圖像的視覺效果上感受圖像的效果,對比各種方法生成的圖像之間的差異;客觀評價以峰值信噪比PSNR和結構相似性SSIM來進行衡量。
(1) 峰值信噪比。峰值信噪比是重建的高分辨率圖像真實高分辨率圖像之間的像素差值的量度,可以用來衡量被處理后圖像的質量,單位為dB。定義如下:
(5)
(6)
式中:I為真實圖像,K為生成圖像,m和n分別為圖像和長和寬。
(2) 結構相似性。結構相似性為兩幅圖像結構相似度的度量的標準,取值范圍為[0,1],值越大就越表示兩幅圖像結構相似程度越高。定義如下:
(7)

表1和表2分別列出了4組測試圖像的生成圖像和原始圖像進行計算的PSNR和SSIM的值。

表1 圖像重建結果的PSNR

表2 圖像重建結果的SSIM
從圖4和圖5的實驗結果可以看出,使用本文方法生成的圖像略優于其他方法。如圖4的花瓣的邊緣,圖4(a)和(b)不夠銳利清晰,(c)和(d)也比較模糊,且花瓣層次不明顯,有一些波紋,(e)花瓣邊緣則較為清晰,花瓣層次也比較明顯,整體觀感會比較舒適。圖5的建筑外墻,圖5(a)、(b)和(c)的外墻窗戶十分模糊,窗戶的邊緣線條不清晰,(d)的外墻觀感稍可,但是整體觀感還是比較模糊,(e)的觀感最為舒適純凈,外墻窗戶邊緣較為清晰,細節較為豐富處理效果更勝一籌。其中SRCNN、FSRCNN和ESPCN三種方法和本文方法使用了相同的訓練集和訓練次數,在同樣的訓練條件下,本文的優化方法是有一定的優化效果的。這在表1和表2中的數據也能得到證明,在計算出的PSNR和SSIM值中,可以看出使用本文方法在客觀評價方面,較其他的方法高出不少。
本文提出一種改進的基于卷積神經網絡的圖像超分辨率方法。主要在經典的SRCNN方法的基礎上進行了改進,即加深了網絡層并且引入殘差網絡避免退化問題,而且將上采樣過程改為在網絡內部進行。這樣可以加強網絡能力并且減輕計算量,最終得到效果更好的圖像,而且訓練次數要求更低。實驗結果表明,本文方法從主觀和客觀角度,生成圖像均好于雙三次插值法和SRCNN方法,證明本文提出的改進是有效的。