林椹尠,張夢凱,吳成茂
(1. 西安郵電大學 理學院,陜西 西安 710121; 2. 西安郵電大學 通信與信息工程學院,陜西 西安 710121; 3. 西安郵電大學 電子工程學院,陜西 西安 710121)
由于相機抖動、環境干擾或者物體運動等諸多因素的影響,都會導致生成的圖像產生運動模糊[1]。在刑偵、醫療、軍事等圖像應用領域,需要高質量的圖像,而圖像的獲取卻不容易,因此對目標圖像復原,是計算機視覺研究領域中一個重要的研究方向[2]。
圖像復原的目的是去除模糊和干擾,得到盡可能接近理想圖像的復原圖像。傳統的圖像復原方法假設退化模型已知或者可以通過簡單的計算得到點擴散函數,利用已知信息有針對性地進行復原。但是在現實生活中,圖像退化過程受到各種因素的影響,造成圖像退化的結果也不盡相同,因此點擴散函數無法精確得到,所以傳統的圖像復原方法不能很好地解決圖像復原問題。
近幾年,計算機視覺領域廣泛應用深度學習的方法,并且取得了驚人的成果。Zhou等[3]首次將神經網絡用于圖像復原,提出了基于離散Hopfield神經網絡的圖像復原模型;Jain等[4]將卷積神經網絡用于圖像去噪,證明了卷積神經網絡可以直接學習從低質量圖像到清晰圖像的端到端的非線性映射,能夠較好地復原圖像;Huang等[5]提出了密集網絡(DenseNet)模型,DenseNet能夠以連接模式連接密集單元中的任意2個卷積層,實現了特征重用及信息傳遞,為圖像復原提供了新的思路;Zhang等[6]首次將殘差學習和批處理歸一化引入圖像復原,提出去噪卷積神經網絡(DnCNN),該網絡可訓練單一的網絡模型進行盲去噪,比針對特定噪聲水平訓練的方法有更好的性能。Liu等[7]提出非局部循環神經網絡(NLRN),利用圖像的自我相似度,通過捕捉一個特征與其鄰近特征的相關性進行圖像重建,有較好的圖像復原能力。Guo等[8]使用卷積網絡,其包括噪聲估計子網絡和非盲去噪子網絡,并提出非對稱學習損失函數,實現真實圖像的盲去噪。Cha等[9]提出全卷積自適應圖像去噪網絡,使用正則化方法獲得更魯棒的自適應性。2014年,Goodfellow等[10]受到博弈論的啟發提出生成對抗網絡(generative adversarial network, GAN),GAN網絡模型由生成網絡和判別網絡組成,在生成圖像方面具有顯著的優勢。Kupyn等[11]提出了利用生成對抗網絡消除運動模糊的方法DeblurGAN,該方法可以有效地消除單張運動模糊。Wang等[12]使用殘差生成對抗網絡復原退化圖片,提高了網絡的穩定性和效率。Zhou等[13]提出標簽去噪對抗網絡(LDAN)用于逆光照明人臉圖像,通過生成對抗網絡生成的圖像來訓練深度卷積網絡,提高了圖像復原效果。這些方法都有效地改善了圖像復原效果,但是在復雜的現實環境中使用有一定的局限性。
本文提出一種針對運動模糊的網絡模型,以生成對抗網絡為框架,生成網絡使用殘差網絡和密集網絡結合的殘差密集網絡(residual dense network, RDN)[14],將模糊圖像輸入到生成網絡中,輸出復原圖像;判別網絡使用深度卷積網絡,判斷輸入圖像是否真實。使用內容損失和對抗損失共同優化網絡。在公開的GoPro數據集和Celeba數據集上實驗,并與其他復原算法對比分析,驗證殘差密集網絡在圖像復原中的優勢。
生成對抗網絡首次提出來后,就獲得了廣泛的關注,其強大的圖像生成能力,使其在圖像合成、圖像修補、超分辨率、圖像復原等方面得到廣泛應用。生成對抗網絡是深度學習中一種無監督學習網絡模型,網絡分成生成器(generator, G)和判別器(discriminator, D),生成器模擬真實數據分布情況,以產生相似的樣本數據為目的;判別器判斷樣本是否來自真實數據集。生成對抗網絡模型如圖1所示。

圖1 生成對抗網絡模型Fig.1 GAN model
在訓練過程中,生成網絡 G 的目標是生成接近真實樣本的生成樣本,以此來“迷惑”判別網絡D。 D 的目標是判斷輸入的樣本是生成樣本還是真實樣本。這樣, G 和 D 構成了一個動態的“博弈”,在相互對抗中提升各自的性能,這就是生成對抗網絡的基本思想。兩者通過不斷地博弈學習,最終, G 生成的樣本能夠“以假亂真”, D 無法區分輸入的樣本是真實的樣本還是由生成器生成的樣本,此時生成器達到最好狀態。
殘差密集網絡結合殘差網絡與密集網絡,將網絡模型中不同單元提取的淺層特征與深度特征融合,在圖像復原中取得了很好的效果。
RDN包括淺層特征提取、殘差密集單元(residual dense block, RDB)、全局特征融合3部分。首先,對原始圖像進行卷積操作提取淺層特征,將淺層特征作為殘差密集單元的輸入;殘差密集單元包含密集連接和局部特征融合,其輸出與下一個單元內的各個卷積層直接相關,實現了單元之間的信息連續傳遞;隨后,全局特征融合實現了淺層特征和各個單元提取的不同分層特征之間的全局特征融合,局部特征融合及全局特征融合均以短連接的方式實現,最終的融合特征用于圖像重建。由于圖像復原中大量的信息復用,充分利用不同單元提取的分層特征,將淺層特征與深層特征結合能夠提供豐富的圖像細節信息,有利于圖像復原。
使用的網絡模型包括2個部分:生成網絡和判別網絡。生成網絡是一個RDN網絡,判別網絡是深度卷積網絡。網絡模型如圖2所示。

圖2 RDN-GAN網絡結構Fig.2 Network structure of RDN-GAN
生成網絡的目的是生成復原圖像。生成網絡是一個由殘差網絡和密集網絡結合而成的殘差密集網絡,殘差網絡能夠有效緩解隨著網絡深度增加引發的梯度消失的現象,這樣即使增加網絡深度,還能夠保持很好的性能和效率;密集網絡通過特征復用,能夠加強特征傳播,減少參數量。由于在進行圖像復原的過程中,模糊圖像和清晰圖像之間的相似度很高,即兩者之間會有很多共享的信息,殘差網絡能夠有效地學習兩幅圖像之間的映射關系,并且結合密集網絡結構使得網絡更加穩定。
殘差網絡和密集網絡結合形成的RDB作為主要網絡單元,RDB結構如圖3所示。RDB首先經過一個6層的全卷積網絡,根據密集連接機制,每一層的輸入都會拼接前面所有層作為額外的輸入。由于累計拼接會導致特征層數量過多,所以設置一個1×1的卷積層,用于多通道的特征融合,并起到降維的作用。在最后將輸入與輸出進行特征融合作為新的輸出。在RDB中,輸入圖像信息的維度不會改變,這樣可以避免通過反卷積來進行上采樣所造成的棋盤效應(checkerboard artifacts)[15]。

圖3 RDB結構Fig.3 Structure of RDB
輸入圖像首先經過2個卷積層,進行淺層特征提取,得到64個特征圖(feature map);接著排列著3個RDB,RDB的輸出會通過拼接方式結合,并使用1×1卷積層進行特征融合;然后通過一個卷積層,并與第一次卷積結果相加;最后通過卷積完成密集特征融合,并把特征圖轉換成輸入圖像維度,且與輸入圖像相加,通過tanh激活函數作為最后的輸出。生成網絡中的所有卷積層,卷積核的大小設置為3×3,步長設置為1,通過填充輸入圖像邊界(Padding)的方式,保持圖像的分辨率不變。除了最后一層卷積層之外,每個卷積層之后都跟隨一個帶泄漏修正線性單元(leaky rectified linear units,LReLU)激活函數。
判別網絡用于估計輸入的圖片是來自于訓練樣本還是生成樣本的概率,如果輸入來自真實的訓練樣本,則輸出概率越高,如果輸入是生成樣本,則輸出概率越低。判別網絡是一個全卷積網絡,遵循Radford等[16]的設計樣式,判別網絡參數設置如表1所示。

表1 判別器網絡參數Table 1 Parameters of discriminator
判別網絡中全部使用卷積核大小為3×3的卷積層,并且在卷積層后面跟隨一個LReLU激活函數。接著經過一個1 024的全連接層(fully connected layer,FC),最后通過一維的全連接層,并通過Sigmoid輸出判決結果。
損失函數由內容損失函數和對抗損失函數組成,共同優化網絡模型,即

式中:La為對抗損失函數;LC為內容損失函數;λ1和 λ2為權重系數。
內容損失函數通過對比生成圖像和真實圖像的每個像素值,保證最后的生成圖像能夠接近理想值。內容損失函數一般使用L1損失或者L2損失。然而,有研究發現[17],由于L2損失對異常值更加敏感,使用L1損失可以減少重構圖像中斑點狀的人工痕跡,并減小誤差,因此本文使用L1損失作為內容損失,L1損失定義為

式中:x為真實圖像;G(zi) 為生成器生成的圖像。
由于像素間的誤差影響,內容損失函數將在所有解的平均值處收斂[18],這會導致復原圖像過于平滑,丟失銳利的邊緣信息,而模糊依然存在。因此把內容損失函數和對抗損失函數結合起來共同作為損失函數。
假設用于訓練的真實圖像數據是x,噪聲為z,生成模型 G 能夠生成圖像,實際是G(z) 的分布應該盡可能接近真實圖像的數據分布pdata(x)。根據交叉熵損失,可構造損失函數為

G希望生成的圖像越真實越好,即 G 希望D(G(z))盡可能地大。因此 G 希望V(D,G) 越小越好。

D 的能力越強,D(x) 應該越大,D(G(z)) 應該越小。因此 D 的目的和 G 不同, D 希望V(D,G) 越大越好。

由判別器 D 和生成器 G 共同得到目標函數La:

實驗使用的數據集包括兩部分:一個是Nah等[19]公開的GoPro數據集,另一個是在Celeba[20]部分數據集上添加運動模糊。GoPro數據集包含了使用相機拍攝合成的不同街道視角的模糊圖像,整個數據集一共有3 214對模糊清晰圖像對,其中訓練集有2 103對圖像,測試集有1 111對圖像。Celeba數據集包括200 000張左右的人臉圖像,通過拉普拉斯算子篩選清晰圖像2 500張,通過仿真程序給圖像添加9像素的運動模糊,結合清晰圖像,制作訓練集2 000對圖像,測試集500張圖像。所有的圖像都重新設置大小為 1 28×128。
實驗中使用批處理大小為1,設置對抗損失權重 λ1=1, 內容損失函數權重 λ2=100。實驗中使用自適應矩陣估計(adaptive moment estimation,ADAM)算法優化損失函數,設置初始學習率為0.000 2,衰減系數 β1=0.5。
實驗中設置迭代周期為100個,每個周期迭代一遍訓練集圖像,每一次交替訓練判別器和生成器。
為了客觀評價復原圖像效果,實驗使用峰值信噪比(peak signal-to-noise ratio,PSNR)[21]和結構相似性(structural similarity,SSIM)[22]作為評價指標。
PSNR基于對應像素點間的誤差來評價圖像質量,PSNR的值越高表示圖像失真越小,PSNR定義為

式中:n為每個像素的比特數,通常像素為8 bit時取n=8;M為兩幅灰度圖像的均方差。
SSIM以每個像素為中心的小塊為單位,同時對比圖像塊的亮度、對比度和結構,SSIM的值越接近1,表示兩圖像越接近,SSIM定義為

式中:x、y為輸入圖像;μ 為圖像的灰度平均值;σ為圖像的標準差; σxy為兩幅圖像的協方差,C1和C2為常數,本文設置C1=6.5025,C2=58.5225。
實驗使用CPU為Intel i5,內存8 GB,GPU為NVIDA GeForce GTX 980 Ti,同時使用Tensor-Flow深度學習框架,Python編程語言。本文算法在GoPro數據集上訓練30 h,在Celeba數據集上訓練24 h。
為了驗證本文算法對圖像運動模糊的復原效果,選取具有代表性的方法DnCNN模型[6]、DeblurGAN模型[8]和SRNDeblur模型[23],與本文方法進行比較。為了公正地對比各種算法,均使用相同的實驗環境和相同的數據集進行訓練。
實驗結果如圖4、5所示,圖4為在Celeba數據集上的復原結果,圖5為GoPro數據集的復原結果?;诒疚姆椒ǖ膹驮Y果在主觀視覺效果中均得到了較好的結果,如在圖4中貝殼放大后的紋理,以及路面上的細節都很好地復原了原圖信息;而DeblurGAN和SRN-Deblur雖然整體看起來比較清晰,但是放大后可以看出一些細節丟失;DnCNN的復原結果不是很好,有嚴重的振鈴現象。

圖4 Celeba數據集實驗結果Fig.4 Results of the Celeba dataset

圖5 GoPro數據集實驗結果Fig.5 Results of the GoPro dataset
表2是兩組實驗的圖像質量評價結果,平均耗時為處理測試集中單張圖片的平均花費時間。從表2中可以看出,在兩個數據集中,本文方法的PSNR和SSIM兩種量化指標都要優于其他兩種方法。在平均耗時方面,DeblurGAN算法和DnCNN算法的執行速度最快,單張圖片耗時最少;SRN-Deblur算法的執行速度最慢,單張圖片耗時在30 s左右;本文方法有較快的執行速度,單張圖片耗時在1 s左右。

表2 結果對比Table 2 Comparison of the results
針對相機成像時抖動、環境干擾、物體運動等原因產生的圖像運動模糊問題,本文提出了一種利用殘差密集網絡的端到端圖像盲復原方法,殘差密集網絡結合殘差網絡和密集網絡的優點,通過長短連接的方式提取并融合不同層次的特征,由于圖像生成過程中大量信息的復用,提高了圖像復原的效果,并使用對抗訓練的方式提高網絡性能;采用對抗損失和內容損失結合的損失函數優化網絡。在GoPro數據集和Celeba數據集上進行實驗,通過分析對比,本文方法能夠得到較好的復原效果。未來將優化算法,提高網絡的訓練效率;分析其他退化圖像,改進網絡模型,使其適用于多種退化圖像。