曹義親,饒哲初,朱志亮,2+,張紅斌
1.華東交通大學(xué) 軟件學(xué)院,南昌 330013
2.中國科學(xué)院 軟件研究所,北京 100190
圖像在生成和傳輸?shù)倪^程中難免會受到噪聲的污染,嚴(yán)重影響圖像的進一步分析與處理。目前常見的噪聲主要有四種:高斯噪聲、泊松噪聲、乘性噪聲以及脈沖噪聲,其中高斯噪聲是最常見、也是最具有代表性的一種噪聲。高斯噪聲是指概率密度函數(shù)服從高斯分布的一類噪聲。高斯噪聲的等級是指高斯分布的方差。本文主要針對高斯噪聲的去噪算法進行研究。圖像去噪是各種圖像處理算法中的重要步驟,有助于對圖像內(nèi)容進行進一步的區(qū)分和解釋,在計算機視覺領(lǐng)域有著重要意義。
圖像去噪[1]就是從被污染的圖像中去除噪聲并還原圖像。傳統(tǒng)的去噪算法可以分為空間域濾波[2]和頻率域濾波[3]??臻g域濾波是將圖像像素點與濾波函數(shù)進行卷積操作,不同的濾波算法有著不同的函數(shù);頻率域濾波則主要是將圖像在頻率域內(nèi)的信息與算法函數(shù)利用傅里葉變換[4]進行相乘操作。傳統(tǒng)方法能夠獲得一定的去噪效果,但是在處理中、高噪聲圖像時效果不理想,且容易丟失圖像細節(jié)。針對這個不足,許多研究人員提出利用圖像先驗?zāi)P蛠磉M行去噪。Buades 等人[5]提出了非局部均值NLM(non-local means)的去噪方法。該方法充分利用了圖像中的冗余信息,在去噪的同時能最大程度地保持圖像的細節(jié)特征。Dabov 等人[6]提出的BM3D(block method of 3-dimension)算法融合了非局部去噪方法和小波變換域去噪方法的思想,得到了非常好的去噪效果。Knaus等人[7]提出的PID(progressive image denoising)算法將圖像去噪作為一種簡單的物理過程,通過確定性退火逐步降低噪聲,在實現(xiàn)較好去噪效果的前提下,還能夠保證沒有基于局部塊類方法常見的偽像。Gu 等人[8]結(jié)合非局部的思想和低秩逼近理論,提出加權(quán)核范數(shù)最小化的去噪方法(weighted nuclear norm minimization method,WNNM)。盡管這些基于圖像先驗?zāi)P偷姆椒╗5-11]能夠獲得較好的去噪效果,但是當(dāng)噪聲密度增大時,這些方法的去噪性能將大幅降低。
近年來,隨著深度學(xué)習(xí)研究的迅速發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)在機器視覺領(lǐng)域的地位也越來越重要。越來越多的基于深度學(xué)習(xí)的圖像去噪算法被提出,其中最為代表的就是Zhang等人[12]在2017年提出的DnCNN算法,其去噪性能和細節(jié)處理能力相較于之前的算法均有大幅度提升。但基于深度學(xué)習(xí)的去噪算法是從整幅圖像中提取特征,輸出與輸入圖像尺寸保持一致,這就導(dǎo)致其網(wǎng)絡(luò)參數(shù)量巨大、特征提取不夠充分。Lefkimmiatis[13]在2018 年提出了通用去噪網(wǎng)絡(luò)。該網(wǎng)絡(luò)是一種新型的網(wǎng)絡(luò)體系結(jié)構(gòu),它具有兩種變體,第一種網(wǎng)絡(luò)將卷積層作為核心組件,其行為類似于局部變分方法,而第二種網(wǎng)絡(luò)則依賴非局部濾波層,該層使網(wǎng)絡(luò)能夠利用自然圖像固有的非局部自相似性。這兩個網(wǎng)絡(luò)都帶來了非常有競爭力的結(jié)果,可以直接與最新技術(shù)相媲美,盡管它們的優(yōu)點是與當(dāng)前性能最佳的網(wǎng)絡(luò)相比,所涉及的參數(shù)要少得多,但在耗時方面還是與DnCNN相差不大。
本文針對現(xiàn)有的深度學(xué)習(xí)去噪方法往往存在網(wǎng)絡(luò)過深導(dǎo)致計算復(fù)雜度過大的問題,結(jié)合密集塊(dense block)和殘差學(xué)習(xí)[14]的優(yōu)勢以及遞進融合的策略,提出一種遞進式殘差融合密集網(wǎng)絡(luò),并將其用于高斯噪聲的去除。與DnCNN 在網(wǎng)絡(luò)中僅簡單串聯(lián)卷積層進行去噪的方法不同的是,本文提出的方法在網(wǎng)絡(luò)中布置密集連接的密集塊,每一層都將之前的特征圖作為輸入,且結(jié)合遞進思想將淺層卷積特征圖依次與每個密集塊提取出的深層卷積特征圖短線連接形成殘差塊,使得網(wǎng)絡(luò)能夠更好地預(yù)測噪聲分布。密集短接的結(jié)構(gòu)則能夠有效地降低網(wǎng)絡(luò)的計算復(fù)雜度,減少大量的網(wǎng)絡(luò)參數(shù),縮短算法計算時間。
卷積神經(jīng)網(wǎng)絡(luò)由輸入層、隱藏層、輸出層三部分組成。隱藏層的主要結(jié)構(gòu)為線性卷積和激活函數(shù)去線性化操作的交替序列,主要功能為對輸入進行特征映射。在圖像去噪領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)相較于其他傳統(tǒng)方法的優(yōu)勢在于隱藏層能夠更好地提取圖像特征,權(quán)值共享則極大地降低了網(wǎng)絡(luò)模型的計算量,有效減少了網(wǎng)絡(luò)的參數(shù)個數(shù),使模型處理效率更高。本文從如何提取更多的圖像特征,同時也能夠極大地降低模型計算參數(shù)的角度考慮,綜合設(shè)計了密集網(wǎng)絡(luò),其中的核心模塊即為密集塊(dense block)[15]。其結(jié)構(gòu)如圖1所示,其中的Bottleneck模塊的結(jié)構(gòu)如圖2所示。
圖1 Dense Block模塊結(jié)構(gòu)Fig.1 Dense Block modular structure
圖2 Bottleneck結(jié)構(gòu)Fig.2 Bottleneck structure
在密集塊結(jié)構(gòu)中,層與層之間都通過短接線連接起來,每一層的輸入都來自前面所有層的輸出,該連接可以用公式表示為:
式中,Xl表示l層的輸出特征圖,[X0,X1,…,Xl-1]表示將0到l-1 層的輸出特征圖做通道的合并,即直接堆疊通道,而不對通道進行其他操作。Hl則表示將合并后的特征圖依次輸入到Bottleneck 中。因為每一層的輸入都是前面所有層的輸出疊加,融合了前者所有提取出的特征圖,所以在后面幾層的輸入通道都會比較大。為了減少輸入的Feature map 數(shù)量,在Bottleneck中都設(shè)計一個卷積核為1×1 的卷積層,既能使得參數(shù)更少,減少網(wǎng)絡(luò)的計算量,同時又融合各個通道的特征,使其與梯度的傳遞更加高效,噪聲分布的學(xué)習(xí)更加全面。
殘差學(xué)習(xí)的設(shè)計初衷是為了解決伴隨著網(wǎng)絡(luò)深度增加的卷積神經(jīng)網(wǎng)絡(luò)性能下降以及訓(xùn)練精度下降的問題。殘差網(wǎng)絡(luò)通過學(xué)習(xí)殘差映射的方法,使得網(wǎng)絡(luò)的訓(xùn)練精度不會隨著網(wǎng)絡(luò)深度的增加而降低,解決了網(wǎng)絡(luò)的退化問題。
結(jié)合圖像去噪領(lǐng)域,通過跳連式的網(wǎng)絡(luò)結(jié)構(gòu)讓殘差網(wǎng)絡(luò)學(xué)習(xí)信息量相對較少的噪聲圖像,再由含噪聲圖像減去網(wǎng)絡(luò)的預(yù)測噪聲圖像,得到潛在的純凈圖像,該過程用公式表示表達為:
式中,y表示的是含噪聲圖像,x表示的是原始的純凈圖像,n表示的是加性噪聲。并且在淺層卷積特征提取時,通過密集塊的設(shè)計,提取了豐富的圖像特征,為之后的噪聲分布學(xué)習(xí)奠定了基礎(chǔ)。
本文受Huang 等人[16]提出的DenseNet 網(wǎng)絡(luò)結(jié)構(gòu)的啟發(fā),通過密集網(wǎng)絡(luò)來豐富提取圖像的特征,并利用密集短接的結(jié)構(gòu)降低網(wǎng)絡(luò)的計算復(fù)雜度,減少網(wǎng)絡(luò)參數(shù)數(shù)量。通過對郭恒意等人[17]提出的基于殘差密集塊的去噪網(wǎng)絡(luò)的實驗復(fù)現(xiàn)研究,發(fā)現(xiàn)其網(wǎng)絡(luò)并不能夠充分地利用淺層卷積特征。因此本文結(jié)合遞進思想,在加深網(wǎng)絡(luò)的同時設(shè)計了三個殘差塊,分別將淺層卷積特征與深層密集網(wǎng)絡(luò)提取出的特征進行融合,使得深層的密集網(wǎng)絡(luò)能夠充分利用淺層特征對噪聲分布進行學(xué)習(xí)。而對密集網(wǎng)絡(luò)研究發(fā)現(xiàn)其網(wǎng)絡(luò)結(jié)構(gòu)并沒有將全局特征進行融合學(xué)習(xí)。本文進一步受Zhang 等人[18]提出的RDN 網(wǎng)絡(luò)結(jié)構(gòu)啟發(fā),在重建輸出層之前設(shè)計了Concat 層,在此層對之前所有密集網(wǎng)絡(luò)提取出的特征進行融合操作,使得網(wǎng)絡(luò)充分學(xué)習(xí)了局部特征和全局特征,以此來達到更好的去噪效果。
本文提出的網(wǎng)絡(luò)結(jié)構(gòu)模型主要包括3 個結(jié)構(gòu)完全相同的Dense Block模塊,在Dense Block模塊中每個卷積層后都有線性修正單元ReLU作為激活函數(shù),盡量避免了梯度消失,且使得網(wǎng)絡(luò)具有稀疏性,并且減少了參數(shù)的相互依存關(guān)系。完整的遞進式殘差融合密集網(wǎng)絡(luò)(progressive residual fusion dense network,DnRFD)的結(jié)構(gòu)模型如圖3所示。
圖3 遞進式殘差融合密集網(wǎng)絡(luò)整體結(jié)構(gòu)Fig.3 Whole structure of progressive residual fusion dense network
第1 層為Conv+ReLU,卷積層的卷積核大小為3×3,個數(shù)為64。這一層的主要功能是對輸入的含噪聲圖像進行淺層卷積的特征提取。第2 層為Conv,卷積核大小為3×3,個數(shù)為24。負責(zé)將特征圖通道調(diào)整到合適的大小,以便輸入Dense Block 模塊中不會輸出過多的特征圖,增加網(wǎng)絡(luò)計算負擔(dān)。第3 至12 層為整體結(jié)構(gòu)的核心部分,包含了3 個Dense Block 模塊、3 個殘差塊,以及兩個模塊之間的Translation層和ReLU+Conv層。在Dense Block模塊中,所有Bottleneck 的卷積核大小均為1×1、3×3,個數(shù)分別為48、12。每個Bottleneck都能在新的融合特征輸入后,進行圖像中的噪聲分布學(xué)習(xí)。而在Translation Layer 中的卷積核大小均為1×1,個數(shù)為24,目的是為了進一步壓縮網(wǎng)絡(luò)參數(shù),融合通道特征形成新的特征。第13層為Concat層,將第1個Dense Block 模塊以及第2 個Dense Block 模塊的輸出特征圖與第3 個Dense Block 模塊的特征融合,加強了網(wǎng)絡(luò)對全局特征的學(xué)習(xí)。第14 層為單個3×3 卷積核的重建輸出層,不僅融合了上一層的全局特征,且使得輸出的尺寸與輸入保持一致,以便于殘差學(xué)習(xí)能夠?qū)㈩A(yù)測噪聲從含噪圖像中抽離,得到純凈圖像作為網(wǎng)絡(luò)的輸出。
本文算法具體流程如圖4 所示。訓(xùn)練過程中將原始圖像裁剪為大小相同的圖像塊,然后將這些原始圖像塊加上噪聲輸入到設(shè)計好的網(wǎng)絡(luò)中,通過損失函數(shù)進行反向傳播調(diào)節(jié)參數(shù),最終使得網(wǎng)絡(luò)達到收斂狀態(tài)。測試階段,將含噪聲圖像輸入到已經(jīng)收斂的網(wǎng)絡(luò)中,可直接輸出相應(yīng)的預(yù)測去噪圖像。本文算法采用的損失函數(shù)表達式如下:
圖4 基于RFD的圖像去噪方法整體框架Fig.4 Overall framework of image denoising method based on RFD
式中,R(yi,Θ)為噪聲輸入的估計殘差圖像,yi為輸入的含噪圖像,xi為純凈圖像,(yi-xi)得到的是標(biāo)準(zhǔn)的殘差圖像。N為一個Batch 的輸入樣本數(shù)量。在訓(xùn)練過程中不斷迭代,將損失函數(shù)降低,也就是將估計殘差與標(biāo)準(zhǔn)殘差之間的誤差降低,這樣預(yù)測的去噪圖像才能更接近原純凈圖像,獲得更好的去噪效果。
實驗采用的評價標(biāo)準(zhǔn)包括主觀評價和客觀評價。主觀評價即為人為肉眼觀測圖像,評價模型輸出圖像的去噪效果??陀^評價[19]采用峰值信噪比(peak signal to noise ratio,PSNR)和結(jié)構(gòu)相似性(structural similarity,SSIM)。
PSNR是基于均方誤差(mean square error,MSE)[20]的圖像質(zhì)量評價指標(biāo),PSNR值越大代表著圖像的質(zhì)量越好。實驗中,PSNR 的值越大,表示去噪圖像和原圖像之間的相似性越高,去噪效果越好。PSNR的計算公式為:
式中,M和N表示的是預(yù)測值和真實值;j和k表示的是圖像中的所有像素點;H和W則分別代表的是圖像的高度和寬度,n取值為8。
結(jié)構(gòu)相似性(SSIM)是一種衡量兩幅圖像相似度的評價指標(biāo)。基于圖像的亮度、對比度和結(jié)構(gòu)對其進行相似性的估計。均值作為亮度的估計,標(biāo)準(zhǔn)差作為對比度的估計,協(xié)方差作為結(jié)構(gòu)相似程度的度量。SSIM的計算公式為:
式中,μm表示的是圖像M的均值,μn表示的是圖像N的均值。和則分別表示的是圖像M和N的方差。σmn代表的是圖像M和N的協(xié)方差。c1和c2是用來維持穩(wěn)定的常數(shù)。SSIM的數(shù)值范圍在0到1 之間,SSIM 值越大,兩幅圖像越相似。當(dāng)SSIM值為1時,則代表參與比較的兩幅圖像完全相似。
實驗的訓(xùn)練集選取了400 張180×180 的灰度圖像,圖像的種類包括了自然風(fēng)景、動物、人物建筑等。為了便于網(wǎng)絡(luò)訓(xùn)練盡快收斂,將裁剪框尺寸patch size設(shè)置為40,滑動步長Stride 設(shè)為10,裁剪了其中380張圖像得到了215 552張40×40 的子圖像塊,以此作為訓(xùn)練集,剩余的20張圖像作為驗證集,通過不同測試集的測試驗證網(wǎng)絡(luò)的魯棒性和實用性。實驗的測試集則隨機選取自Set12[21]、Set68[22]中。
實驗參數(shù)設(shè)定:批處理大小為64,每輪次訓(xùn)練3 725 個樣本數(shù)據(jù),epoch 為150,訓(xùn)練期間學(xué)習(xí)率固定為0.001。計算機的CPU配置為Intel Core i7,GPU為GTX1080Ti*2,運行內(nèi)存為11 GB,操作系統(tǒng)為Windows 10,在pytorch深度學(xué)習(xí)框架上訓(xùn)練、驗證和測試神經(jīng)網(wǎng)絡(luò),該框架能夠使用GPU加速訓(xùn)練,節(jié)省訓(xùn)練時間,用于訓(xùn)練、測試的軟件為PyCharm,Python版本為3.6。
本文為了客觀地評價算法的去噪效果,選取了NLM[5]、BM3D[6]、WNNM[8]、DnCNN[12]、FFDNet[21]這五種對比算法來進行對比實驗,實驗的測試集隨機選取自Set12、Set68中。在向測試圖像加入高斯白噪聲等級σ=25 和σ=50 時,分別從主觀和客觀的角度對各算法的去噪能力進行比較。
當(dāng)高斯白噪聲等級σ=25 時,隨機選取了6幅測試圖像,原圖如圖5所示。表1為含噪測試圖像經(jīng)各算法去噪后的PSNR值。從表中可以看出,本文算法的PSNR 均值為32.623 dB,相對其他算法提升了0.043~2.462 dB。本文算法處理后的圖像PSNR均值相比傳統(tǒng)去噪算法NLM、BM3D高出了0.619~2.462 dB,相比聚類低秩去噪算法WNNM 高出了0.390 dB,相比深度學(xué)習(xí)去噪算法DnCNN 高出了0.098 dB,相比FFDNet 算法高出了0.043 dB。表2 為6 幅含噪測試圖像經(jīng)各算法去噪后的SSIM值。從表中可以看出,本文算法的SSIM均值為0.956,高于所有對比算法,相對提升了0.005~0.151。而經(jīng)本文算法處理后的前5 幅去噪圖像SSIM 值都高于所有對比算法,僅最后一幅圖像的SSIM 值比FFDNet 算法低了0.029。表3 是不同算法對6 幅測試圖像的去噪平均耗時??梢钥闯霰疚乃惴▽τ?56×256 像素的圖像處理耗時均值為0.093 s,對于512×512 像素的圖像耗時均值為0.389 s,對于418×321 像素的圖像耗時均值為0.228 s。雖然DnCNN、FFDNet 算法的去噪效果與本文算法相差不大,但是去噪平均耗時超出本文算法將近1~2倍。
圖5 用于低等級噪聲去噪的測試原圖Fig.5 Original test images for low level noise denoising
表1 不同算法得到的PSNR結(jié)果(噪聲等級為25)Table 1 PSNR results obtained by different algorithms(noise level is 25) 單位:dB
表2 不同算法得到的SSIM結(jié)果(噪聲等級為25)Table 2 SSIM results obtained by different algorithms(noise level is 25)
表3 不同算法的處理時間(噪聲等級為25)Table 3 Processing time of different algorithms(noise level is 25) 單位:s
圖6 和圖7 分別為House、Man 的網(wǎng)絡(luò)輸出圖像去噪效果對比圖,圖中綠線框表示的是選取的局部放大區(qū)域,紅色線框則對應(yīng)為綠線框內(nèi)的放大內(nèi)容。從圖中可以看出,NLM 和BM3D 去噪算法對圖像邊緣細節(jié)的處理較差,本文算法在去噪效果和邊緣細節(jié)處理能力上均表現(xiàn)優(yōu)異。
圖6 不同算法處理House圖的結(jié)果(噪聲等級為25)Fig.6 Performance comparison of different algorithms on House image(noise level is 25)
圖7 不同算法處理Man圖的結(jié)果(噪聲等級為25)Fig.7 Performance comparison of different algorithms on Man image(noise level is 25)
當(dāng)高斯白噪聲等級σ=50 時,隨機選取了6幅測試圖像,原圖如圖8所示。表4為測試圖像經(jīng)各算法去噪后的PSNR 值,可以看出本文算法的PSNR 均值相較于其他對比算法提高了0.022~2.532 dB。表5為6 幅含噪測試圖像經(jīng)各算法去噪后的SSIM 值,其中本文的SSIM 值均高于其他對比算法,均值達到了0.916,相較于其他對比算法提高了0.005~0.279。
表4 不同算法得到的PSNR結(jié)果(噪聲等級為50)Table 4 PSNR results obtained by different algorithms(noise level is 50) 單位:dB
表5 不同算法得到的SSIM結(jié)果(噪聲等級為50)Table 5 SSIM results obtained by different algorithms(noise level is 50)
圖8 用于高等級噪聲去噪的測試原圖Fig.8 Original test images for high level noise denoising
圖9和圖10分別為Room、Lena的網(wǎng)絡(luò)輸出圖像去噪效果對比圖。從整體來看,DnCNN、FFDNet 算法的視覺去噪效果與本文算法相當(dāng),但從局部放大的區(qū)域來看,本文算法更能還原原圖像的邊緣細節(jié)以及紋理細節(jié)。
圖9 不同算法處理Room圖的結(jié)果(噪聲等級為50)Fig.9 Performance comparison of different algorithms on Room image(noise level is 50)
圖10 不同算法處理Lena圖的結(jié)果(噪聲等級為50)Fig.10 Performance comparison of different algorithms on Lena image(noise level is 50)
為了驗證算法的泛化能力,本文進一步對自然噪聲圖像和彩色噪聲圖像進行了去噪實驗,圖11 上半部分為6 幅來自數(shù)據(jù)集RNI6[23]帶有自然噪聲的圖像,圖11 下半部分的6 幅圖像為經(jīng)本文算法處理后的去噪圖像。圖12 上半部分為5 幅來自數(shù)據(jù)集Kodak24、高斯噪聲等級為25 的彩色噪聲圖像,下半部分的圖像為經(jīng)本文算法處理后的去噪圖像。紅色框線內(nèi)對應(yīng)綠線框內(nèi)的局部放大信息,可以看出噪聲對圖像質(zhì)量影響較為嚴(yán)重。從圖像中可以看到,本文算法可以較好地適用于自然噪聲圖像和彩色噪聲圖像的去噪,不僅有效去除了噪聲,而且很好地保留了圖像紋理信息以及邊緣細節(jié)。
圖11 本文算法處理自然圖像的結(jié)果Fig.11 Performance of proposed algorithm on natural images
圖12 本文算法處理彩色圖像的結(jié)果Fig.12 Performance of proposed algorithm on color images
本文主要針對現(xiàn)有的深度學(xué)習(xí)去噪方法存在網(wǎng)絡(luò)過深、網(wǎng)絡(luò)參數(shù)大導(dǎo)致去噪速度慢的問題,結(jié)合密集塊和殘差學(xué)習(xí)的優(yōu)勢以及遞進融合的策略,提出一種遞進式殘差融合密集網(wǎng)絡(luò),并將其用于高斯噪聲的去除。實驗結(jié)果表明,本文方法獲得的去噪效果明顯優(yōu)于傳統(tǒng)的NLM、WNNM、BM3D 等方法。雖然相比近些年去噪效果表現(xiàn)優(yōu)異的DnCNN、FFDNet 算法,本文方法在評價指標(biāo)方面沒有明顯提升,但是本文方法的去噪速度要明顯優(yōu)于DnCNN算法和FFDNet 算法。盡管本文方法能夠取得較好的去噪效果,但是該方法仍然存在一些不足。首先,該方法的主要目標(biāo)是在保證去噪效果的同時加快去噪速度,與相關(guān)算法對比,本文方法的去噪速度得到了較大幅度提升,但去噪效果提升幅度不及去噪速度,仍有提升的空間。后期將結(jié)合噪聲的特性,引入注意力機制對該網(wǎng)絡(luò)做進一步的改進。其次,該方法雖然能夠用于彩色圖像噪聲的去除,但是由于網(wǎng)絡(luò)的主要結(jié)構(gòu)是處理單通道圖像,在處理彩色圖像時不可避免地會忽略彩色圖像通道間的相關(guān)性,可能會導(dǎo)致去噪后的結(jié)果出現(xiàn)偽影或新的噪聲。后期將針對如何同時保留圖像的結(jié)構(gòu)特征、細節(jié)特征和顏色特征的問題,利用四元數(shù)相關(guān)理論對該網(wǎng)絡(luò)做進一步改進,從而獲得更好的去噪效果。