顏戚冰 周先春,2,3 昝明遠(yuǎn) 王博文 張 杰
(1.南京信息工程大學(xué)電子與信息工程學(xué)院 南京 210044)
(2.江蘇省大氣環(huán)境與裝備技術(shù)協(xié)同創(chuàng)新中心 南京 210044)
(3.南京信息工程大學(xué)人工智能學(xué)院 南京 210044)
國內(nèi)外學(xué)者從多方向?qū)D像去噪進(jìn)行了深入的研究,相比于傳統(tǒng)去噪方法,深度學(xué)習(xí)技術(shù)在圖像去噪方面效果顯著[1~5]。在過去的數(shù)十年,稀疏模型、梯度模型、非局部自相似模型、馬爾可夫隨機(jī)場模型等眾多模型在此去噪方面取得有益的效果。另外,基于變換域的貝葉斯最小乘法和BM3D[6~9]等圖像去噪的方法在峰值信噪比等測試中均得到一定程度的提升。
盡管這些方法和模型的去噪質(zhì)量很高,但也存在著缺點(diǎn)。算法過于復(fù)雜,大多數(shù)先驗(yàn)?zāi)P捅仨毑捎脿奚?jì)算效率的代價(jià)換取較高的性能,梯度容易消失或者爆炸,訓(xùn)練深度不夠深,或者訓(xùn)練深了后性能變差,恢復(fù)圖像的成本非常高。而殘差網(wǎng)絡(luò)[10~14]的提出,可以避免信息在傳輸過程中丟失與損耗的效果,從而簡化學(xué)習(xí)難度,提高學(xué)習(xí)效率。
本文在充分考慮去噪質(zhì)量和去噪效果的基礎(chǔ)之上,提出了一種基于殘差連接的并行網(wǎng)絡(luò)新模型。先通過殘差學(xué)習(xí)和批量歸一化[15]來使得神經(jīng)網(wǎng)絡(luò)在層數(shù)逐步深入的時(shí)候,性能基本不退化,并設(shè)計(jì)成預(yù)測殘留圖像,即通過觀察噪聲和潛在圖像之間的差異來達(dá)到移除潛在清潔圖像的效果;再使用并行網(wǎng)絡(luò),增加了神經(jīng)網(wǎng)絡(luò)的寬度,提取了更多圖形特征,提高了去噪性能。
利用先驗(yàn)知識(shí)并通過技術(shù)手段去除圖像中被噪聲占據(jù)的模糊區(qū)域,使圖像恢復(fù)原始面目。用f(x,y)表示二維空間能力分布,在經(jīng)過系統(tǒng)H時(shí)引了噪聲n(x,y),導(dǎo)致圖像變模糊,最終生成了圖像g(x,y)。整個(gè)過程為式(1):
本文主要研究深度學(xué)習(xí)中的加性高斯白噪聲的去噪問題。
卷積神經(jīng)網(wǎng)絡(luò)模型一般由卷積層與池化層交替連接組成,其中池化層利用池化操作降低前一層輸出特征圖像的維度,以防出現(xiàn)過擬合的問題,而使用卷積神經(jīng)網(wǎng)絡(luò)去噪時(shí),池化操作的降維處理會(huì)濾除部分特征,對(duì)去噪產(chǎn)生不利影響,所以一般會(huì)移除池化層,僅保留卷積層,網(wǎng)絡(luò)模型如圖1所示。
圖1 卷積神經(jīng)網(wǎng)絡(luò)去噪模型一般結(jié)構(gòu)
權(quán)重共享和稀疏連接是卷積神經(jīng)網(wǎng)絡(luò)的最大特點(diǎn),與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)相異。這種特殊的網(wǎng)絡(luò)結(jié)構(gòu)可以很大程度地減少訓(xùn)練中的計(jì)算量,因此用來處理圖像特征顯得非常方便合適。
本文提出基于前饋去噪卷積神經(jīng)網(wǎng)絡(luò)(DNCNN)結(jié)合批量重整化去噪網(wǎng)絡(luò)(BRDNet)的去噪新方法。首先,在網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)方面,將BRDNet 與BRDNet 中的并行網(wǎng)絡(luò)結(jié)合起來,將原網(wǎng)絡(luò)分為一個(gè)七層的上網(wǎng)絡(luò)和一個(gè)八層的下網(wǎng)絡(luò),并改變VGG 網(wǎng)絡(luò)使其符合所設(shè)定的要求,并對(duì)比目前優(yōu)秀的去噪方法中設(shè)置的有效斑塊大小來對(duì)網(wǎng)絡(luò)的深度進(jìn)行調(diào)整。然后,在模型學(xué)習(xí)與訓(xùn)練方面,采用殘差學(xué)習(xí),提升去噪速度,優(yōu)化去噪性能。最后,在DNCNN 的基礎(chǔ)上,結(jié)合BRDNet 中的并行網(wǎng)絡(luò),用增加神經(jīng)網(wǎng)絡(luò)的寬度取代深度。
殘差和批量歸一化的結(jié)合能使訓(xùn)練更加快速穩(wěn)定,去噪性能更加優(yōu)異。
殘差算法將提取的特征融合多個(gè)堆棧層,共同輸入,能夠處理梯度爆炸或消失的問題。本文提出的新模型將使用單個(gè)殘差單元來預(yù)測殘差圖像,這與傳統(tǒng)的直接使用殘差網(wǎng)絡(luò)有較大的區(qū)別。此外,本文通過研究殘差的原理,并將其性能加以延伸,使其能預(yù)測殘差圖像并間接清除噪聲,從而能達(dá)到去噪的目的。
批量歸一化是一個(gè)自適應(yīng)的重參數(shù)方法,能夠解決訓(xùn)練模型層數(shù)變深帶來的困難。使用批量歸一化在每一層的非線性前引入歸一化步驟與縮放移位步驟來減小內(nèi)部協(xié)變量的偏移。當(dāng)歸一化時(shí),每次激活只加入兩個(gè)參數(shù),并且能使用反向傳播更新,從而加快了訓(xùn)練的速度,使得其具有更好地性能。這種規(guī)范化是針對(duì)單個(gè)神經(jīng)元的,批量歸一化訓(xùn)練公式如式(2)所示。
其中:
m是批量歸一化數(shù)據(jù)集的大小,ε是一個(gè)非常小的正值,當(dāng)梯度在0 處沒有定義時(shí),ε能夠有效地規(guī)避這類問題。
隨著卷積神經(jīng)網(wǎng)絡(luò)深度的不斷增加,性能也開始逐漸下降。而增大濾波器的尺寸又會(huì)帶來較高的計(jì)算成本。因此,本文考慮增加卷積神經(jīng)網(wǎng)絡(luò)的寬度而不是深度,建立并行網(wǎng)絡(luò),將原本的x分解成x1、x2、x3…,使得在BRDNet 的基礎(chǔ)提取的圖像的特征更多,從而去噪后與原圖像更接近。
本文將卷積濾波器的大小設(shè)置為3×3,但是對(duì)其中的池化層加以去除。感受野可定義為卷積神經(jīng)網(wǎng)絡(luò)每一層輸出的特征圖上的像素點(diǎn)在原始圖像上映射的區(qū)域大小。假設(shè)一個(gè)DNCNN的深度為d,則它的感受野可表示為(2d+1)2。當(dāng)卷積層較淺時(shí),圖像的每個(gè)像素點(diǎn)只是對(duì)原圖像的局部信息的特征提取,圖像的細(xì)節(jié)信息很多,但是圖像的上下文信息確實(shí)很少;對(duì)于較深的卷積層來說,圖像能看到的原圖像范圍更大,但是細(xì)節(jié)信息相對(duì)而言就會(huì)比較少。如何在其中進(jìn)行更好的平衡,一個(gè)很重要的問題就是DNCNN該如何設(shè)置恰當(dāng)?shù)纳疃取?/p>
去噪神經(jīng)網(wǎng)絡(luò)的感受野大小與去噪方法的有效斑塊大小有著密不可分的聯(lián)系。另外,如果一個(gè)噪聲水平偏高,則所需要的來獲取更多信息進(jìn)行恢復(fù)圖像的有效補(bǔ)丁則越多。所以,先將噪聲水平的σ2設(shè)置為固定值25,然后研究了目前幾種主流優(yōu)秀去噪方法的有效斑塊尺寸,與本文使用DNCNN模型進(jìn)行對(duì)比分析。
本文將DNCNN 結(jié)合BRDNet 的新模型的感受野大小設(shè)定為35×35,從而與EPLL 進(jìn)行對(duì)比,以得到準(zhǔn)確的數(shù)據(jù)。深度的選擇也尤為重要,需要在性能和效率之間保持平衡。經(jīng)過多次實(shí)驗(yàn)驗(yàn)證,本文將具有特定噪聲水平的高斯去噪的深度設(shè)置為17,而對(duì)于其他一般的圖像去噪任務(wù),本文選擇使用更大的感受野來觀察結(jié)果,因此將深度設(shè)置為20。
本文提出的新模型是一個(gè)噪聲觀察y=x+v,x為原始的不含噪聲的干凈圖像,y為含有噪聲的圖像。為了得到網(wǎng)絡(luò)的最優(yōu)參數(shù),本文選擇均方誤差。新方法采用殘差學(xué)習(xí)公式來訓(xùn)練殘差映射R(y)≈v,將其代入y=x+v推出x=y-R(y) 的形式,將一張有噪聲的圖像轉(zhuǎn)換成一張干凈的原始圖像。由Adam 將損失函數(shù)最小化即可得到最優(yōu)參數(shù),期望的殘差圖像與噪音輸入的估計(jì)殘差圖像之間的平均均方誤差如式(4)所示:
其中,N為噪聲圖像斑塊個(gè)數(shù),θ為模型參數(shù),xi和yi(N=1,2,3…N)表示N個(gè)噪聲-原始圖像,即補(bǔ)丁對(duì)。R(yi,θ)表示對(duì)殘差圖像的預(yù)測的值,(yi-xi)表示實(shí)際的值,再由均方誤差的計(jì)算公式,即可得到期望的殘差圖像與估計(jì)的殘差圖像之間的平均均方誤差。參數(shù)θ即為本文要學(xué)習(xí)的訓(xùn)練參數(shù),也就是前文所提到的權(quán)重和偏置。
對(duì)于給定深度為H的結(jié)合模型,新方法的主要步驟如下:
Step1:第一層,卷積+線性整流單元。使用64個(gè)3×3×1 的濾波器生成64 個(gè)特征灰度圖,并使其通過ReLU線性整流單元。
Step2:第2-(H-1)層,卷積+批量標(biāo)準(zhǔn)化+線性整流單元,使用64 個(gè)3×3×64 的過濾器,在卷積和線性整流函數(shù)中間加入批量歸一化。
Step3:在單個(gè)并行網(wǎng)絡(luò)的最后使用3×3×64 的濾波器來重建輸出。
Step4:將兩組并行網(wǎng)絡(luò)合并在一起,再經(jīng)過Conv得到殘差圖像,經(jīng)恢復(fù)得干凈圖像。
本文使用了400張大小為180×180的圖像進(jìn)行訓(xùn)練,部分訓(xùn)練數(shù)據(jù)集圖片如圖2 所示。為了驗(yàn)證DNCNN 對(duì)已知噪聲水平具有高斯去噪,一共選擇了三個(gè)噪聲水平,噪聲水平σ2分別等于15、20 和25。本文設(shè)置斑塊大小為40×40,并裁剪了128×1600 個(gè)斑塊來進(jìn)行訓(xùn)練。為了訓(xùn)練單個(gè)模型盲高斯去噪,本文還將噪聲水平設(shè)定在[0,55]之間,再將斑塊大小設(shè)置為50×50,裁剪了128×3000個(gè)補(bǔ)丁進(jìn)行訓(xùn)練模型。
圖2 400張訓(xùn)練數(shù)據(jù)集的部分圖片
對(duì)于測試圖像,本文使用了兩個(gè)不同的測試數(shù)據(jù)集從而對(duì)本文所提出的DNCNN 和BRDNet 的結(jié)合的模型進(jìn)行了綜合的評(píng)估。最先使用的測試集由12 張灰度圖像組成,如圖4 所示,接著使用的測試集是伯克利分割數(shù)據(jù)集(BSD68)的68 個(gè)自然圖像,部分圖像如圖3 所示,并且測試集的這些圖像都與訓(xùn)練集中使用的圖像相異。
圖3 伯克利分割數(shù)據(jù)集的部分圖片
圖4 由12張灰度圖構(gòu)成的測試集
為了學(xué)習(xí)三個(gè)不同噪聲水平去噪的單個(gè)模型,通過在[0,55]的范圍內(nèi)添加具有特定噪聲水平的高斯噪聲來生成噪聲圖像。在小批量學(xué)習(xí)期間,還使用了對(duì)補(bǔ)丁的旋轉(zhuǎn)、翻折等操作,產(chǎn)生更多的數(shù)據(jù)集進(jìn)行分析。本文分別將單獨(dú)的DNCNN模型和結(jié)合了BRDNet 中的并行網(wǎng)絡(luò)的DNCNN 模型進(jìn)行訓(xùn)練,并對(duì)比實(shí)驗(yàn)結(jié)果,得出結(jié)論。
為了獲取足夠的空間信息,本文將DNCNN 的網(wǎng)絡(luò)深度設(shè)為17,用于灰度合成和真實(shí)噪聲圖像去噪。損失函數(shù)采用學(xué)習(xí)殘差映射R(y)來預(yù)測殘差圖像,初始化權(quán)重,使用權(quán)重衰減為0.0001,動(dòng)量為0.9 和小批量大小為128 的SGD。這里將批大小設(shè)置為32,噪聲水平大小分別設(shè)置為15、25、50,訓(xùn)練輪數(shù)設(shè)置為100,學(xué)習(xí)率隨著迭代次數(shù)從1e-1 到1e-4 遞減。同時(shí),采用并行網(wǎng)絡(luò),將原網(wǎng)絡(luò)分割為一個(gè)7層的網(wǎng)絡(luò)和一個(gè)8層的網(wǎng)絡(luò)進(jìn)行并行。
本文使用tensorflow 框架來訓(xùn)練所提出的DNCNN 和BRDNet 結(jié)合的模型,所有實(shí)驗(yàn)均在python(3.7 版本)環(huán)境中進(jìn)行,在GPU 上分別訓(xùn)練單獨(dú)的DNCNN 模型以及與并行網(wǎng)絡(luò)結(jié)合的DNCNN模型,并把兩者的實(shí)驗(yàn)結(jié)果進(jìn)行對(duì)比。
利用Matlab 仿真軟件進(jìn)行噪聲去除分析來驗(yàn)證本文算法的可行性,通過峰值信噪比(PSNR)、結(jié)構(gòu)相似度(SSIM)兩種指標(biāo)來比較和評(píng)價(jià)該算法的有效性。
其中,其中,MSE為均方差,MAXI表示圖像點(diǎn)顏色的最大數(shù)值。I(X,Y)表示亮度,C(X,Y)表示對(duì)比度,S(X,Y)表示結(jié)構(gòu)比較。SSIM 的值越接近于1,PSNR的值越大,則去噪效果越優(yōu)異。
本文首先對(duì)于12 個(gè)灰度圖像測試集進(jìn)行測試。類似地,實(shí)驗(yàn)又測試了噪聲水平σ2分別為15和25 時(shí),新模型與DNCN 的PSNR 和SSIM 的值,如表1所示。
表1 新模型與DNCNN使用第一種測試集在不同噪聲水平下的PSNR和SSIM值
通過比較新模型與DNCN 模型可知:當(dāng)測試輪數(shù)較少時(shí),新模型在峰值信噪比和結(jié)構(gòu)相似性方面比單獨(dú)DNCNN 模型稍低,然而隨著訓(xùn)練輪數(shù)的逐漸增大,本文提出的新的結(jié)合模型逐漸顯現(xiàn)出優(yōu)勢,在峰值信噪比和結(jié)構(gòu)相似性方面都優(yōu)于單獨(dú)的DNCNN模型。
當(dāng)噪聲水平較小的時(shí)候,本文提出的新的訓(xùn)練模型無論是從峰值信噪比還是結(jié)構(gòu)相似性來看,都是比單獨(dú)的DNCNN 模型具有優(yōu)勢;而當(dāng)噪聲水平比較高的時(shí)候,新的訓(xùn)練模型的峰值信噪比也高于單個(gè)DNCNN模型要高,結(jié)構(gòu)相似性接近。
再使用第二種BSD68 測試集進(jìn)行同樣的測試。對(duì)于BSD68 測試集的新模型測試結(jié)果如表2所示。
表2 新模型使用第二種測試集在不同噪聲水平下的PSNR和SSIM值
通過表2 對(duì)比可以看出,第二種測試集測試的最終結(jié)果與第一種類似,本文提出的新模型仍具有較好的優(yōu)勢。
最后將本文提出的新模型在相同的訓(xùn)練集和測試集的數(shù)據(jù),與現(xiàn)有幾種比較成熟的主流算法BM3D、WNNM、EPLL、CSF 和TNRD 進(jìn)行對(duì)比,結(jié)果如表3所示。
表3 幾種主流算法的平均峰值信噪比(PSNR)的值
由表3 可以看出,本文提出的新模型在三種噪聲水平上均超過BM3D 0.4bB 左右,對(duì)比最新文獻(xiàn)可知,平均峰值信噪比超過BM3D 方法0.3dB 的很少,即使是對(duì)于噪聲水平未知的情況,本文所提出的結(jié)合模型也能達(dá)到非常不錯(cuò)的效果。值得注意的是,當(dāng)噪聲水平為50 時(shí),本文的新模型的平均峰值信噪比性能優(yōu)于BM3D 0.61dB,達(dá)到了非常理想的去噪效果。新模型不論是與DNCNN模型還是與幾種主流算法相比,都具有更為優(yōu)異的去噪效果。
圖5 和圖6 分別是原始圖像以及噪聲水平為25 時(shí)的處理后的圖像??梢钥闯?,新模型和DNCNN 模型都恢復(fù)了鋒利的細(xì)節(jié)和邊緣,但是使用新模型去噪的圖像顯得更加清晰、生動(dòng),更加給人一種真實(shí)感。
圖5 噪聲水平為25時(shí)的原始含噪聲圖像經(jīng)新模型和DNCNN處理后圖像對(duì)比(Lena)
除了視覺效果之外,圖像去噪的另外一個(gè)重要方面是訓(xùn)練速度。實(shí)驗(yàn)在GPU 上運(yùn)行python3.7,使用tensorflow 擴(kuò)展包。對(duì)于實(shí)驗(yàn)所用的圖片數(shù)據(jù)集,在訓(xùn)練的時(shí)候,新模型進(jìn)行100 輪的大致時(shí)間為1.2h 左右,與DNCNN 所進(jìn)行100 輪的時(shí)間大致相當(dāng)。在測試的時(shí)候,DNCNN 模型每次的時(shí)間在30s 左右,而新模型每次的測試時(shí)間大致在22s 左右??梢钥闯觯履P驮跍y試方面具有優(yōu)勢,考慮到新模型去噪所得的圖像的峰值信噪比和結(jié)構(gòu)相似性要優(yōu)于DNCNN 模型,因此新模型的去噪性能非常優(yōu)越。
本文以卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)為基礎(chǔ),提出了一種在DNCNN 的基礎(chǔ)之上增加BRDNet 中的并行網(wǎng)絡(luò)結(jié)合的新模型,新方法是將卷積與線性整流單元相結(jié)合,配合隱藏層,能夠使得噪聲觀察與圖像結(jié)構(gòu)緩慢分離,端到端的訓(xùn)練,規(guī)避了缺陷,減少了訓(xùn)練的復(fù)雜程度。殘差學(xué)習(xí)和批量歸一化的結(jié)合對(duì)訓(xùn)練起到了加速的作用并且去噪效果優(yōu)異;雙通道網(wǎng)絡(luò)的使用,增加了網(wǎng)絡(luò)的寬度,大大提高了去噪性能,在訓(xùn)練對(duì)象不變的情況下間接性地相當(dāng)于減少了網(wǎng)絡(luò)的深度,有效避免了梯度消失或爆炸,降低了訓(xùn)練成本,提高了網(wǎng)絡(luò)的泛化能力。