?

基于卷積神經網絡的圖像超分辨率改進算法

2019-03-18 06:51張夢迪楊大利
關鍵詞:高分辨率分辨率卷積

張夢迪,楊大利

(北京信息科技大學 計算機學院,北京 100192)

0 引言

實際成像過程中,由于惡劣天氣的影響和硬件設備的限制,在成像傳輸存儲等環節往往會出現圖像的細節丟失。通過硬件方法提高圖像質量的代價較高,圖像超分辨率[1]就是將低分辨率的圖像通過軟件的方法提高分辨率,在醫學影像、衛星遙感、刑事偵查等領域都有廣泛的應用。圖像超分辨率方法分為基于插值的方法[2]、基于重建的方法[3]和基于學習[4]的方法3類?;诓逯档姆椒ㄓ朽徑逯?、雙線性插值、雙立方插值等,這些方法復雜度低但效果有限,很難修復圖像的高頻細節?;谥亟ǖ姆椒ɡ绲赐队胺?、凸集投影法、最大后驗概率估計法等,是從多幀低分辨率圖像中提取圖像的高頻信息,融合生成高分辨率圖像?;趯W習的方法是目前研究的熱點,通過創建高分辨率圖像和低分辨率圖像特征的樣本庫,提取特征,從低分辨率圖像中恢復出高分辨率圖像。

Dong等[5]構建了一個3層卷積神經網絡模型,提出了一種經典的端到端的SRCNN(super-resolution convolutional neural network)算法。SRCNN結構簡單,易于收斂,計算復雜度較低,在保證圖像質量的前提下可以快速重建高分辨率圖像。然而由于網絡較淺,不能很好地提取圖像特征,利用較大的卷積核可以減小計算量,但是也會丟失很多信息;而且隨著網絡的加深,計算量也在增加。本文在SRCNN算法的基礎上進行了改進,采用較小的卷積核,加深網絡結構,改進損失函數,在保證圖像邊緣紋理細節的同時降低計算量。

1 SRCNN算法

1.1 基于深度學習的SR重建算法

基于深度學習的SR(super resolution)重建是目前圖像超分辨率的熱門方向,依靠外部圖像庫通過神經網絡獲得先驗知識,再利用先驗知識對低分辨率圖像重建。大致可以分為3步。

1)處理圖像數據集,建立外部圖像庫。將原始高分辨率圖像分割,通過退化模型得到低分辨率圖像塊,退化過程可表示為

Ilow=SBIhigh+n

(1)

式中:S為下采樣過程;B為模糊過程;Ihigh為高分辨率圖片;Ilow為低分辨率圖片;n為噪聲。

在DRCN(deeply-recursive convolutional network)和SRCNN算法中,是將退化后的圖像塊插值放大到目標圖像的大小后作為神經網絡的輸入,但是這樣會造成數據過多,增加了計算量。Shi等[6]提出的ESPCN方法將低分辨率圖像塊作為輸入,提高了圖像超分辨率,大大縮短了訓練時間。

2)構建神經網絡模型。對訓練集的數據進行訓練,得到低分辨率圖片和高分辨率圖片之間的映射關系。圖像識別效果好的網絡模型在圖像超分辨率中也有很好的效果。

3)高分辨率圖像重建。將低分辨率圖像輸入網絡模型,得到高分辨率圖片,并用評價指標評價模型的質量。

目前基于深度學習的圖像超分辨率算法取得了不錯的成果。近年來隨著機器學習的發展,出現了很多基于深度學習的圖像超分辨率算法。Dong等[5]提出采用卷積神經網絡解決圖像超分辨率問題,Kim[7]提出一種20層的網絡結構來獲取低分辨率圖片和高分辨率圖片的映射關系,之后又提出了遞歸模型[8](DRCN)減少網絡參數。Goodfellow提出生成對抗網絡(generative adversarial network),Leding等[9]將其用于圖像超分辨率中,得到效果非常好的高分辨率圖片,但是存在網絡層數過多難以訓練,需要大量的迭代次數和樣本數據以及模型難以保存等問題。Dong等[5]已經通過實驗證明并非網絡結構越深圖像重建的效果越好;Simonyan等[10]經過實驗證明,采用更小的卷積核可以得到更好的效果。均方誤差(MSE)作為損失函數可以很好地平滑圖像,提高PSNR指標,然而得到的結果往往會造成圖像紋理不清晰,邊緣模糊。從損失函數上進行改進是目前深度學習的一個主要的改進思路。

1.2 SRCNN

將卷積神經網絡用于圖像超分辨率,可以有效地簡化神經網絡,減少神經網絡的參數,最具有代表性的就是SRCNN。該網絡結構分為3層,分別是特征提取層、非線性映射層以及重構層。網絡框架如圖1所示。

圖1 SRCNN算法框架

算法主要分為3個步驟:

Step1圖像塊的提取和特征表示。利用卷積神經網絡提取圖像塊的特征:

F1(Y)=max(0,W1·Y+B1)

(2)

式中:W1為卷積核;Y為經過插值放大的原始高分辨率圖像。對這2個值進行卷積運算后再加上神經元偏置向量即B1,最后把卷積得到的特征圖經過Relu激活函數處理,Relu激活函數取0和卷積結果中最大的值作為最終值。W1的尺寸為f1×f1×c×n1,其中,f1為單個卷積核的大小,c為通道數,n1為第一層卷積核的個數。

Step2非線性映射。從低分辨率空間映射到高分辨率空間:

F2(Y)=max[0,W2·F1(Y)+B2]

(3)

式中W2為卷積核;B2為偏置量。如果有n2個卷積核,W2的尺寸為n1×f2×f2×n2。

Step3重構。利用之前得到的特征圖,生成最終圖像:

F3(Y)=max[0,W3·F2(Y)+B3]

(4)

式中W3有c個卷積核,尺寸為n2×f3×f3×c。

SRCNN的整個訓練過程就是對參數的估計以及優化。通過計算生成的圖像和原始高分辨率圖像的均方誤差,使其最小,得到最優解。均方誤差為

(5)

高分辨率圖像經過裁剪,得到隨機排列的圖像塊。為了得到低分辨率圖像,對得到的子圖像經高斯濾波模糊之后下采樣,再用雙三次插值法將子圖像放大至原大小作為初始高分辨率圖像,將這些初始高分辨率圖像塊經過卷積神經網絡逐像素計算和高分辨率圖像塊的均方誤差,最小化差值優化神經網絡參數。

SRCNN與其他算法相比,在峰值信噪比(PSNR)和結構相似性(SSIM)等評價指標上有明顯優勢且運算速度較快,但存在邊緣和紋理不夠清晰等問題。Dong等[5]也做了增加卷積層數和減小卷積核的實驗,從中得出卷積層數并非越深越好的結論。SRCNN中第1層采用9×9的卷積核。Simonyan等[10]提出從第1層卷積開始就避免使用大尺寸卷積核,使用小卷積核進行堆疊來增加網絡的深度。因此,本文實驗所用的神經網絡模型采用了更深層的神經網絡,尺寸更小的卷積核。

2 改進算法

圖3 本文算法卷積神經網絡模型

2.1 深度學習模型

本文設計的深度學習模型分為2部分,一部分用來學習低分辨率圖片和高分辨率圖片的映射關系,這部分參數是變化的,需要通過訓練找到參數最優值。另一部分是損失網絡部分,參數保持不變。針對逐像素損失函數的缺點,為了確保損失函數能更好衡量圖片感知和語義上的差距,采用預訓練好的圖像分類網絡VGG16來定義損失函數,計算生成的圖像經過卷積網絡提取的特征和目標圖像之間的差距。其深度學習的模型如圖2所示。

圖2 網絡模型

低分辨率圖像x通過深度卷積神經網絡后得到圖像y,定義y=fw(x),損失函數計算預測圖像和目標高分辨率圖像之間的差距,可以從光照、紋理、直方圖等多方面考慮,利用式(6)進行梯度下降求得fw的最優解。

(6)

式中λi為每個損失函數的權重。

2.2 卷積神經網絡

SRCNN在第1層上選擇了9×9的卷積核,文獻[10]表明3×3的卷積核就能覆蓋圖像的特征,一個較大的卷積核相當于幾個較小的卷積核連續卷積,同時可以減小計算量。借鑒VGG16的網絡結構,本文采用6層的卷積神經網絡,使用3×3固定大小的卷積核,這是可以有效地提取圖像的邊緣信息,最小能表征圖像信息的卷積核的大小。

值得注意的是,SRCNN的網絡結構中沒有池化層。池化層的作用是對卷積后的結果下采樣,減少參數,減小計算量。但是SR算法是為了增加圖像的細節,因此,SRCNN和本文算法均不采用池化層。

在SRCNN算法中,是將低分辨率圖像經過Bicubic插值后的圖像作為神經網絡的輸入。有很多研究表明,這一步并非必要,完全可以將其融入到網絡中,將圖像放大作為網絡學習的一部分。為了避免網絡的計算量增大,在網絡的最后一層使用反卷積(deconvolution)將圖像放大。借鑒文獻[11]和Waifu2x的網絡模型,本文所設計的神經網絡結構如圖3所示。

由于人眼對亮度最為敏感[12],并且在SRCNN中已經證明了只對Y通道做變換不會影響圖片最終質量,因此本文算法僅對Y通道做訓練,這樣在保證圖片質量的同時可以減少計算開銷。

2.3 感知損失

傳統的均方誤差(MSE)作為損失函數可以很好地平滑圖像,其峰值信噪比(Peak Signal to Noise Ratio,PSNR)評價指標也比較高,但是不符合人眼感知,無法恢復細節復雜的圖像。

圖像風格轉換算法的成功為生成圖像領域提供了一個重要的思路,可以將從卷積神經網中提取的特征作為目標函數的一部分,將待生成的圖像和目標圖像通過卷積神經網絡得到它們的特征值,通過減小兩者特征值的差異使兩者更加相似[13]。

損失網絡使用的是在ImageNet上訓練好的VGG net網絡模型,損失函數的計算公式如下:

(7)

式中:j為網絡的第j層;CjHjWj為第j層特征圖的大小。找到一個圖像使它較低層的特征損失最小,往往能得到視覺上近似于原圖的圖像;而用高層生成的圖像雖然內容和全局結構都被保留,但是顏色紋理和精確的形狀都將不存在。圖像超分辨率的目標是讓生成的圖片非常接近原圖而不是完全匹配。

3 實驗及結果分析

3.1 數據集

數據集的大小對深度學習的結果有很大的影響,一般情況下,數據集越大得到的模型其效果越好。SRCNN的作者采用的訓練集是從ImageNet中抽取的約4萬幅圖像。本文選用BSD500作為訓練數據集,同時使用Set5和Set14作為本文的測試集。部分測試數據如圖4所示。

圖4 部分測試集圖片

3.2 訓練過程

首先要將圖片的色彩空間從RGB轉換到YCrCb色彩空間,只對Y通道進行訓練得到映射關系;其他2個色彩通道使用雙三次插值上采樣再和Y通道融合,在減小計算量的同時保證了圖像的質量。

然后把訓練圖像隨機切割成圖像塊。訓練數據大小為80×80像素,滑動步長為14像素。網絡輸入的大小是28×28像素,放大倍數是2,從80×80的圖像塊中截取56×56像素的圖像塊作為高分辨率圖像塊??紤]到本文算法比SRCNN多一倍的節點,為了獲得更多的訓練數據避免過擬合,對其旋轉0°、90°、180°和270°擴大數據集。為了得到網絡的輸入,對這些56×56像素的圖像進行降采樣。

梯度更新算法使用了Adam,學習率為1e-4,batch size設為8,在迭代次數達到1.3×107時網絡基本收斂,迭代次數1.5×107時試驗效果最好,而SRCNN需要經過迭代1.2×109才能達到最好效果,如圖5所示。

圖5 不同算法隨迭代次數增加的PSNR值

3.3 結果分析

本文算法訓練使用的平臺為3.5 GHz Intel i7 CPU,16G內存,4G顯存的GTX960 M的顯卡一塊。

本實驗將從客觀評價指標和主觀視覺效果2個方面對本文實驗和主流方法進行評價??陀^評價指標采用峰值信噪比:

(8)

式中:P為峰值信噪比;M為計算圖像之間逐像素的均方誤差;n為每個采樣值的比特數;(2n-1)2是信號最大值的平方。M越小時,P的值越大。

通過實驗得出在Set5和Set4數據集上本文算法和其他算法的平均PSNR數值,如表1所示,可以看出,本文算法表現均優于其他算法。

表1 五種圖像超分辨率算法的PSNR數值比較 dB

圖6從左到右依次是原始高分辨率圖像、BI插值算法、SRCNN算法、DDSRCNN算法、本文算法的實驗結果。從中可以看出,BI插值的結果最模糊,本文算法在大多數情況下優于SRCNN,DDSRCNN,得到的圖片邊緣和紋理都較為清晰,且在評價指標近似的情況下,本文算法計算量更小,圖片生成時間更短。

圖6 幾種方法的實驗結果對比

4 結束語

本文提出了一種改進的基于卷積神經網絡的圖像超分辨的方法。針對目前深度學習存在的參數過多、計算量大、模型不易訓練、細節和紋理效果不顯著等問題,采用了一種只在圖像Y通道上進行訓練的7層卷積神經網絡模型,使用感知損失代替傳統的均方誤差作為損失函數,在保證PSNR指標的前提下減小了計算量,獲得了更加清晰的紋理和邊緣效果。但是對于邊緣不明顯紋理多的圖像,該算法仍需改進。下一步工作考慮嘗試結合圖片的光照、顏色、形狀等特征信息,共同參與訓練學習,使圖像的邊緣和紋理細節更加清晰。

猜你喜歡
高分辨率分辨率卷積
一種基于卷積神經網絡的地磁基準圖構建方法
基于3D-Winograd的快速卷積算法設計及FPGA實現
一種并行不對稱空洞卷積模塊①
高分辨率磁共振血管成像對顱內動脈粥樣硬化斑塊診斷作用的研究進展
探討高分辨率CT在肺部小結節診斷中的應用價值
好畫質不局限于分辨率 探究愛普生4K PRO-UHD的真面目
基于異常區域感知的多時相高分辨率遙感圖像配準
關于為“一帶一路”提供高分辨率遙感星座的設想
ARM發布顯示控制器新品重點強化對分辨率的支持
從600dpi到9600dpi
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合