方 睿,周 愉+,劉 鵬,劉 凱
(1.成都信息工程大學 計算機學院,四川 成都 610225; 2.成都信息工程大學 控制工程學院,四川 成都 610225)
最為典型的引起圖像退化的原因主要有如下3點:大氣湍流、太陽輻射等引起的失真、相機和物體相對運動產生的模糊、對焦不準產生的模糊。圖像運動模糊是指拍攝時,被拍攝的目標物體與攝像裝置之間發(fā)生相對運動,而引發(fā)的模糊。圖像模糊的過程被建模為如下形式
IB=K(M)*IS+N
(1)
式中:IB是模糊后的圖像,K(M) 是模糊核,IS代表清晰的圖像,*表示空間卷積,N為加性噪聲。目前圖像復原算法大致分為兩種:一是傳統(tǒng)方法。圖像復原的最初手段是直接做逆濾波,在上個世紀六十年代中期已經被大范圍應用在該領域,但有結果表明直接逆濾波的性能是比較差的。文獻[1]提到,Shan和Fergus等都是通過各種方法構建了圖像恢復過程的正則項,雖然在一定程度上抑制了振鈴效應,減少了噪聲等,但是他們的復原結果并不是很理想。傳統(tǒng)方法有一個共同的特點就是都要預估模糊核,對圖像噪聲和飽和很敏感[2],并且一般產生的運動模糊都是非均勻模糊,精確預估模糊核是很難的。二是基于學習的方法,它是通過學習大量的數據樣本學習得到一個網絡模型,然后把運動模糊圖像放到該模型中,端到端地復原出潛在的清晰圖像。深度學習的典型算法之一是卷積神經網絡(convolutional neural networks,CNN)[3],隨之發(fā)展,CNN逐漸在圖像復原領域也受到了很大的重視。Sun等[4]利用深度學習方法,首先嘗試預測給定圖像的小區(qū)域中的運動模糊核信息,然后嘗試利用該模糊觀察來恢復清晰圖像。該方法在對模糊核添加約束的條件下,使處理后的圖片達到了較為理想的去模糊效果。Schuler等[5]以粗糙到精細的方式堆疊了多個CNN,以模擬迭代優(yōu)化。Chakrabarti等[6]在頻域中預測了反卷積核,這些方法遵循傳統(tǒng)框架,只有其中幾個部分被CNN模塊取代。Ke等[7]提出一種不同層數的CNN以處理模糊圖像,取得了較好的效果。這些網絡的共同不足之處在于網絡層數較淺,很難提取到圖片更深層次的語義信息。之后U-net[8]得到了改進,也稱為編碼器-解碼器網絡[9],極大地提高了回歸能力,并在FlowNet的最新工作中被廣泛使用[10]。Nah等[11]訓練了一個多尺度的深度網絡(MS-CNN),通過端到端的方法逐步恢復清晰的圖像,在圖像去模糊方面是比較成功的,但仍然存在圖像運動模糊的問題。Tao等[12]在Nah的基礎上進行改進,提出了尺度循環(huán)網絡(SRN-DeblurNet)簡稱SRN,它是由香港中文大學、騰訊優(yōu)圖實驗室和曠視科技的研究者合作提出的模型。但是不足的是它們使得圖像復原的結果邊緣特征并不明顯,高頻信息少,原因在于他們依賴于最小化L2損失,導致復原后的圖像為均值最優(yōu)顯得過于平滑,并產生偽影現象,使得最后的復原結果上在視覺感知上并不能符合我們的要求,并且它們在卷積層使用大的卷積核,就導致對特征的學習能力不強。
針對上述問題,本文在SRN的基礎上改進了一種用于圖像去運動模糊的更有效的網絡結構。加深了SRN的網絡結構,在網絡中堆疊多個小卷積核代替大卷積核,使其可以更好擬合圖片的特征信息。并且為使紋理信息更強,保護圖像邊緣信息等,本文進行了多損失融合改進。并將其應用于真實運動模糊圖片的處理,實驗結果表明,改進算法生成的網絡模型取得了更好的去模糊結果,主觀視覺效果和客觀評價指標明顯改善,圖像清晰度提高,細節(jié)損失減少。
網絡的深度和寬度是影響網絡效果的最重要的兩個因素。因此本文基于這兩點對網絡結構進行改進。首先在網絡結構設計上,本文在Tao等[12]提出的SRN網絡結構上進行改進,加深了SRN的網絡結構,在其卷積層使用堆疊的小卷積核代替大卷積核,不僅與原來具有相同的感受野,而且可以減少網絡的參數,對特征的學習能力更強,更好地擬合圖片的特征信息。同時為了提高模型訓練過程中的收斂速度,防止過擬合,提高圖像中的高頻細節(jié)信息,保護圖像邊緣信息等,本文進行了多損失融合改進。如圖1所示,使得改進后的網絡在客觀評價指標取得更高的值以外,主觀視覺效果也得到一定的改善。保護圖像邊緣信息等,本文進行了多損失融合改進。
圖1 改進后的網絡結構
該網絡由3個尺度的網絡組成,每一個尺度都是由編碼器-解碼器(encoder-decoder)[9]網絡構成,它是對稱的CNN結構。在本文中,為滿足本文任務需求,我們在此基礎上設計了一個參數更少并且易于訓練的網絡結構,如圖1所示。在每個尺度上生成清晰的圖像,作為圖像去模糊任務的子問題,它將模糊圖像和初始去模糊結果(從先前尺度上進行上采樣)作為輸入,并且在該尺度下估計清晰圖像。因此,每個尺度輸出的圖像如式(2)所示
Ii,hi=Ndeblur(Bi,Ii+1,hi+1;θSR)
(2)
式中:i是其尺度標號,Bi代表第i個尺度下模糊的圖片,Ii代表第i個尺度下估計的清晰圖片。N是前面所提出的多尺度循環(huán)網絡,θSR是訓練中產生的參數。由于網絡是循環(huán)的,因此隱藏狀態(tài)特征hi可以跨越尺度,從先前的網絡中捕獲圖像結構和內核信息。
為保證此網絡可以解決更加復雜的運動模糊問題,我們在此網絡中做了一些改進,如圖2所示,本文加深了InBlock和OutBlocks的結構,在其卷積層使用了2個3×3堆疊的卷積核。在編碼器/解碼器網絡中,每個尺度網絡包含1個InBlock,2個EBlock,然后是ConvLSTM循環(huán),2個DBlock和1個OutBlock。編碼器部分,每一層卷積層后面添加3個殘差網絡,稱之為EBlock;解碼器部分,使用了2個DBlocks(Decoder ResBlock),每一層去卷積層前面添加3個殘差網絡,稱之為DBlock。InBlock產生32通道特征圖,OutBlock將先前的要素圖作為輸入并生成輸出圖像。EBlock的通道數量分別為64,128。DBlock通道數量分別為128,64。每一個殘差網絡都包含2個卷積層,它是為了提供更大的感受野并且防止訓練過程中梯度消失的問題。中間部分使用的是ConvLSTM循環(huán),Conv和Deconv中使用的激活函數都是ReLU。該網絡可以被表示為式(3)
(3)
式中:i是其尺度標號,Bi代表第i個尺度下模糊的圖片,Ii代表第i個尺度下估計的潛在清晰圖片。NEnconder是前面所提出的編碼器網絡,θE是編碼器訓練過程中產生的參數。NDecoder是解碼器網絡,θD是解碼器訓練中產生的參數。θLSTM是ConvLSTM訓練時產生的參數,hi是隱藏狀態(tài)特征。
圖2 卷積核堆疊替代5*5卷積核
損失函數是影響圖像復原效果的主要因素之一,它是用來估量模型的預測值與真實值的不一致程度,損失函數越小,預測值越逼近真實值。為了估計,需要通過最小化損失函數在訓練過程中不斷優(yōu)化網絡的參數,如下所示
(4)
在本文中,感知損失Lx、L1損失融合被用來提高復原后圖像的細節(jié),提升模型訓練過程中的收斂速度,改善由于使用傳統(tǒng)L2損失函數作為優(yōu)化目標會導致生成圖像上的模糊偽像[13]。
1.3.1 感知損失
由于使用L2損失函數作為優(yōu)化目標會導致生成圖像上的模糊偽像,且容易在視覺感知上產生平滑,所以在本文中,使用了近兩年提出來的感知損失[14]。感知損失是簡單的L2損失,在網絡模型訓練中,訓練速度快,并且收斂效果好,具有高頻細節(jié)信息。故以感知損失函數表示生成圖像I與清晰圖像S之間的差異,它的定義如下,可參考文獻[14]
(5)
式中:φi,j是VGG19網絡中激活之后的第j個卷積在第i層最大池化之前所取得的特征映射,Wi,j是特征映射的寬度,Hi,j是特征映射的高度。
1.3.2 L1損失
本文在損失函數中添加了L1范數損失函數,無論對于什么樣的輸入值,都有著穩(wěn)定的梯度,不會導致梯度爆炸問題,具有較為穩(wěn)健性的解。因為最小絕對值偏差能處理數據中的異常值,所以它的魯棒性更好,同時也能夠保護圖像邊緣部分的信息
(6)
式中:Ii為本網絡中第i尺度輸出的去模糊圖片,Si是清晰圖像像素值。
1.3.3 總損失
對于本文提出的去模糊算法,總損失函數由感知損失Lx、L1損失融合而成,最小化復原圖像與真實圖像的誤差,保證圖像的復原質量,其中k為融合系數
L=Lx+k·L1
(7)
趨向視覺感知的損失函數能夠提高感知質量,但是評價指標較低,且缺少生成約束。因此為了平衡PSNR指標與視覺感知質量,總損失融合了以上感知損失Lx、 和L1損失。
多個小卷積核疊加使用遠比一個大的卷積核單獨使用效果要好得多。在VGG16[15]中,使用了更小的卷積核來保證當前網絡精度的情況下,減少了參數。圖像去運動模糊處理需要大的感受野,所以SRN結構的卷積層中原先使用的都是5*5,但是大的卷積核存在加大了網絡參數并且特征學習能力不強的問題。
假設圖片(Input)尺寸為M×M, 卷積核(Filter)大小為K×K, 填充(Padding)為P, 步長(stride)為S, 則卷積輸出(Output)特征圖大小為式(8)
Output=(M+2P-K)/S+1
(8)
為保證此網絡可以解決更加復雜的運動模糊問題,所以在此網絡中做了一些改進,在卷積層中使用2個3*3的卷積核替代原先的卷積核,如圖2所示。如式(8)所示,改進之后的網絡在保持感受野大小不變的情況之下,減少了網絡訓練中的參數,并且具有更多的非線性,使得對特征能力的學習能力變強。
本文的所有實驗均是在基于TensorFlow框架的深度學習服務器平臺上進行,使用的計算機是3.7 GHz的i3處理器臺式機,NVIDA GTX1060顯卡,16 GB RAM。
為實現與現有先進的MS-CNN、SRN等去模糊算法比較,本文使用兩個指定的標準數據集來訓練和測試我們的模型。此外,我們在真實的模糊圖像數據集上驗證了模型的泛化能力。
(1)GoPro公開數據集:Nah等[11]創(chuàng)建了GoPro數據集,它模擬復雜的相機抖動和物體運動,其中含有的運動模糊場景有行人移動、車輛運動等,更適合于真實場景中的模糊圖像。模型在256×256像素的GoPro數據集上訓練,其中包括3214對模糊/清晰的圖片。本文中使用其中的2103對進行訓練,剩余的1111對進行測試。
(2)K?hler數據集:K?hler數據集是評估盲去模糊的標準,由4個清晰圖像和相應的48個模糊圖像組成,這些模糊圖像是由重播記錄的6D攝像機運動引起的,本文將K?hler數據集用作模型性能評估的測試集。
(3)真實的模糊圖像數據集:本文還對實際情況下的圖片進行了測試,本數據集由10個清晰圖像和相應的50個模糊圖像組成,這些圖片包括都是汽車在高速行駛下,通過行車記錄儀設備拍攝得到行駛中的汽車車牌、交通線、建筑等視頻,再使用空間變化的運動模糊退化模型方法合成的運動模糊圖像,目的是為了驗證模型的泛化能力。
對于模型訓練,本文使用Tensorflow訓練我們所提出的模型。對于網絡優(yōu)化問題,本文采用Adam優(yōu)化器,其中參數均為默認值,β1=0.9,β2=0.999,ε=10-8。 訓練到2000 epochs時,學習率從初始值1e-4下降到1e-6。 在多次實驗的結果調整下,本模型將k值設置為0.05。每一次迭代,我們對一批16張模糊圖像進行采樣,將訓練集尺寸隨機剪裁為256×256作為訓練的輸入。
對復原后的圖像評價標準主要分為兩種:主觀評價標準和客觀評價標準。主觀評價標準具有簡單直觀的特點,通過肉眼去觀察對比,這種方式容易受到主觀因素等多方面的影響,比如每個人的心理狀態(tài)??陀^評價標準采用峰值信噪比(PSNR)和結構相似性(SSIM),其中PSNR和SSIM的值越大,就代表圖像失真越少,復原的效果越好。綜上所述,要綜合考慮客觀評價標準和主觀評價標準才能對復原后的圖像做出科學、客觀的評價。
PSNR定義如式(9)、式(10)所示
PSNR=10lg((2n-1)2/MSE)
(9)
(10)
其中,圖像的大小為H×W,S為清晰圖像,Y為模糊圖像通過網絡復原后的圖像,這里的n取值為8,因為本文使用的是彩色圖像。
SSIM定義如式(11)~式(14)所示,SSIM的取值為[0,1],值越大,代表圖像失真越小,圖像的去模糊效果越好。分別從亮度l(X,Y)、 對比度c(X,Y)、s(X,Y) 結構這3個方面進行比較
SSIM(X,Y)=l(X,Y)·c(X,Y)·s(X,Y)
(11)
(12)
(13)
(14)
其中,X為清晰圖像,Y為模糊圖像通過網絡復原后的圖像,μX為圖像X的均值,μY為圖像Y的均值;σX為圖像X的方差,σY為圖像Y的方差;σXY為圖像X、Y的協(xié)方差。c1、c2、c3均為常數,避免除零,c1=(K1×L)2,c2=(K2×L)2,c3=c2/2,K1=0.01,K2=0.03, 均為默認值,L=255。
2.3.1 多損失融合性能驗證
這一部分將通過實驗驗證該損失融合的性能,在本文的圖像去運動模糊任務中,我們將其與L2損失進行比較。多損失融合性能驗證模型設計見表1。
表1 多損失融合性能驗證模型設計
感知損失可以使得模型具有更好的復原效果,邊緣特征更加明顯。Net-L2模型使得復原后的圖像為均值最優(yōu)顯得過于平滑,并產生偽影現象,使得最后的復原結果上在視覺感知上并不能符合我們的要求。Net-PR1模型使得復原后的效果更加逼真,提高了復原后圖像的細節(jié),改善了由于使用傳統(tǒng)L2損失函數作為優(yōu)化目標會導致生成圖像上的模糊偽像。如圖3所示,從左到右依次為:模糊圖像、Net-L2的去模糊結果、Net-PR1模型的去模糊結果。
圖3 不同損失函數的去模糊結果
該模型在GoPro數據集上訓練迭代55萬次后達到收斂狀態(tài)。表2列出了兩種模型在GoPro測試集下平均PSNR和SSIM值的比較。
表2 GoPro測試集下的質量評價
從表2的結果中可以看出Net-PR1模型在測試集上的平均PSNR值和SSIM值都比Net-L2模型要高,多損失的融合改進也使得圖片質量效果更好。
2.3.2 小卷積核堆疊性能驗證
本文在2.3.1的實驗基礎上,為了驗證小卷積核堆疊的性能,本文訓練了經小卷積核堆疊處理與未經過處理的兩個模型進行比較,驗證模型設計見表3。
表3 小卷積核堆疊性能驗證模型設計
實驗設置550 000次迭代,每經過5000次訓練保存并輸出模型,并對模型在GoPro數據集中進行PSNR指標檢測,結果顯示網絡如果在卷積層使用小卷積核堆疊的模型PSNR評價指標要明顯高于直接在卷積層使用大的卷積核的模型,其中比較結果如圖4所示。
圖4 小卷積核堆疊性能驗證PSNR指標結果比較
在卷積層應用小卷積核堆疊后的Net-KS模型,在保持感受野大小不變的情況之下,減少了網絡訓練中的參數,并且具有更多的非線性,使得對特征能力的學習能力變強。結果顯示Net-KS模型的圖像復原具有更清晰逼真的細節(jié)紋理,其中比較結果如圖5所示。
圖5 小卷積核堆疊性能驗證視覺質量比較
2.3.3 與其它模型比較
整個訓練過程是在GoPro訓練集上進行的,經過550 000次迭代后達到收斂狀態(tài)。將本文方法ELKS-SRN與其它算法從主觀上和客觀上進行比較。圖6主要是主觀上對從GoPro數據集上的測試集進行評價,其中的測試圖包含了各個不同的運動模糊場景。圖6中的圖像從左到右依次為模糊圖像、文獻[7]的去模糊結果、文獻[12]模型的去模糊結果以及本文所提模型的去模糊結果。
圖6 GoPro數據集去模糊結果
從圖6的運動模糊圖像復原結果來看,本文提出的模型去模糊效果在高頻細節(jié)和邊緣特征等方面明顯好于文獻[12]。本文復原后的圖像消除了較明顯的偽影,如第一張圖中的指示牌邊緣以及車牌中的字符“0”“1”“2”等。本文所提出的去運動模糊算法盡可能保證了復原后圖像的真實度,提升了圖像的高頻細節(jié)信息,保護了圖像的邊緣特征。該模型有效地解決了物體間相對運動造成的模糊。
圖7是K?hler數據集中的去模糊結果,從上到下依次為模糊圖像、Tao等的去模糊結果、本文所提模型的去模糊結果。如圖7所示,我們對比第一幅圖中的圖(c)、圖(e),可以看出圖(e)的紋理信息比圖(c)強,圖(c)圈出來的墻壁明顯過于平滑。對比圖(d)、圖(f)兩張圖片可以發(fā)現,圖(d)圈出來的那一排時針數字,邊緣模糊,其中還出現較明顯的偽影現象,相較于圖(d)來說,圖(f)圖恢復得更好,邊緣特征較明顯,沒有出現大幅度的偽影現象。相較于圖(f),圖(d)中的時針數字“9”周圍邊緣比較模糊,邊緣特征沒有圖(f)明顯。
圖7 K?hler數據集去模糊結果
表4列出了幾種算法比較,從左到右分別是GoPro測試集下平均PSNR與SSIM值、K?hler測試集下平均PSNR與SSIM值、在測試集中恢復圖片的平均時間。
從表4的結果中可以看出本文所提出的模型在測試集上的平均PSNR值和SSIM值都比前面提出的算法要高,特別相對于Tao等來說,雖然我們在此基礎上加深了整個網絡結構,但是并沒有使網絡的收斂速度變慢,反之,恢復的時間反而更快。驗證了在卷積層使用小卷積核疊代替
表4 測試集下的質量評價以及性能
大卷積核會使得整個網絡收斂速度更快,多損失的融合改進也使得圖片質量效果更好。
2.3.4 真實模糊圖片處理
為驗證模型的泛化能力,本文再對真實的模糊圖片進行處理,因為Gopro測試集和K?hler測試集中的圖片是在高速相機下采集后合成的,它和實際情況下的模糊圖片有可能不同,所以在這一小節(jié),本文使用訓練好的模型來處理實際情況下的模糊圖片,這些圖片都是實際情況中,汽車在高速行駛下,通過行車記錄儀設備拍攝得到行駛中的汽車、交通線、建筑等視頻。去模糊結果對比如圖8所示,圖8中的圖像從左到右依次為模糊圖像、文獻[12]模型的去模糊結果以及本文所提模型的去模糊結果。
圖8 真實模糊圖片去模糊結果
在實際場景下,本文提出的去模糊算法相較于其它算法保證了圖片的復原效果,并且邊緣模糊小。如在第一張圖片中,“大眾的標志”、“標志旁邊的棱”、“3”等字符的去模糊處理效果都較好;第二張圈出來的“交通線”的去模糊結果顯示出整張圖片的模糊程度減??;第三張圖片中的車牌,文獻[12]還原的車牌字符“6”“2”相較于本文所提出的去模糊模型明顯帶有一定的失真,并且邊緣模糊區(qū)域大,而本文的去模糊效果好。所以綜上所述,本文提出的算法可以較好地處理運動模糊。
本文提出了一種改進的圖像去運動模糊方法,通過多損失融合和在卷積層使用小型卷積核堆疊平衡了評價指標(PSNR、SSIM)與感知質量,提高圖像中的高頻細節(jié)信息等,并且使得網絡參數更少更容易訓練,并且更好擬合圖片的特征信息。最終的實驗結果表明,改進算法生成的網絡模型取得了更好的去模糊結果,主觀視覺效果和客觀評價指標明顯改善,圖像清晰度顯著提高,細節(jié)損失減少,并且算法在去模糊的速度上相比于其它的算法也有明顯的提升。